【问题标题】:Java Theory: Classes Design for Currency, Futures and Metals AnalysisJava 理论:货币、期货和金属分析的类设计
【发布时间】:2013-05-26 16:20:23
【问题描述】:

寻找关于如何设计我的顶级 OOP 理论的个人项目
从 Java 中的类的角度来看的程序,用于对以下数据进行操作:

  1. 将多个历史数据存储为 CSV 文件。 (仅此而已)。
  2. 历史数据位于硬盘上。
  3. 历史数据包含以下类型:
    一种。货币(多种货币)格式相同。
    湾。期货(多个期货)与货币不同的报价格式。
    C。金属(多种金属)与货币相同的刻度格式。
  4. 希望通过方法执行以下类型的数据操作
    一种。对所有历史数据进行通用统计分析。
    湾。对历史数据进行具体的自有算法分析。
  5. 以上结果以表格形式显示

我从期货数据和写作方法等开始,但我的程序非常像,
例如:
只有 2 个类,一个包含我所有的方法,另一个只是一个测试类,它通过我创建的对象调用方法。
我一直在调用我的同一个数组,该数组为每个效率不高的过程存储了我的 tickdata。
我想使用继承、多态代码重用等原理来做到这一点。

目前我并不关心速度、性能等,而只是能够做到这一点 从编程的角度来看。我对此很陌生,我认为这是学习它的最佳方式。
如果我能够在几场数据上做到这一点,那就太好了!
我的系统有 12 GB 内存。

任何帮助都会很棒!

【问题讨论】:

  • 一个对象大致是一个状态、一组方法和一个从方法链中出现的行为......发布您的程序代码以获得提示。
  • 到底是什么问题?您是否要求我们为您的程序提供精确设计?

标签: java theory


【解决方案1】:

请注意,即将推出名为“java-money”的 JSR:http://jcp.org/en/jsr/detail?id=354 (https://github.com/JavaMoney)

不幸的是,这还没有正式可用,所以现在可能想要使用另一个框架:https://github.com/JodaOrg/joda-money

【讨论】:

  • 我不知道他们终于上了一堂理财课!那很好,有什么是无聊的。感谢 +1 传递有用的信息...
【解决方案2】:

你的课程

a) 货币(多种货币)格式相同。 b) 期货(多种期货)与货币不同的报价格式。 c) 金属(多种金属)与货币相同的刻度格式。

那里有三个班级。你可以有一些课程CurrencyFuturesMetals。这些都在HistoricalData 的类别下。例如:

public class Currency extends HistoricalData
{
    private String data;

    public Currency(String data)
    {
        // Just a mock up.
        this.data = data;
    }
}

如果您认为您将对统计分析进行大量更改,那么您不希望在您实现某些 statistics 方法的每个类中都进行这些更改。这暗示我,您可能应该将其移植到HistoryStatsEngine(或其他)类。这样您就可以在不更改类本身的情况下更改类的使用方式。

使用这些类

可替代性

因为所有类都是HistoricalData 超类型的子类,所以您可以创建一个包含所有这些类的集合,例如:

private ArrayList<HistoricalData> data = new ArrayList<HistoricalData>();

抽象方法

在您的HistoricalData 类中,您可以拥有必要的抽象方法,例如:

public void performCalculation();

【讨论】:

  • 谢谢,这正是我正在寻找的设置类型。我现在要试试这个设置,然后会回复。
  • 没问题。如果有帮助,请务必将其标记为正确答案!
【解决方案3】:

我不喜欢仅仅为了防止重复方法而使用基类的想法。货币如何成为历史数据?这说明了什么?什么都没有。

这是一个许多程序员永远不会擅长的棘手问题,这对你很有好处,因为你想在这个问题上增加流量,而不仅仅是产生程序性问题。

你并没有真正说出你想要做什么样的统计分析。我在概率方面做了很多工作。概率模型围绕将“特征”聚合到分类中的概念,然后通过查看哪个分类器新实例最相似来预测未来。例如,如果我要构建一个逻辑模型来猜测我所知道的 Futures 会发生什么,我会构建一个分类器。很可能会有两种分类,代表哪些成功,哪些失败,然后我会根据我过去的数据进行训练。训练涉及提取每个特征的值并将它们放入分类的分布中。很简单。而且您不想要一个基类,并且您肯定不想要类型层次结构中的分类。然后,一旦我训练了分类器,我就可以通过简单地计算它与两个分类的相似度来计算新 Future 的成功概率,使用权衡带来决定选择哪一个(或两者都不选择)。

开始将分析工件构建到类型层次结构中总是一个坏主意,因为根据定义,分析是透视的:明天我可能想用相同的类型做一些完全不同的事情,或者针对完全不同的情况测试它们,例如预测哪些期货是欺诈性的。

【讨论】:

  • 历史数据包括以下类型:。 OP 专门将Currency 定义为一种历史数据。
  • @Rob 我真的需要研究什么是分类等等。对此我很陌生,所以我从下往上开始。感谢您的回复!
  • @Chris,同意,我的 3 种历史数据是货币、期货和金属。我每次都收到相同格式的货币和金属。所以我的解析方法对于这些类型都是一样的。但是 Futures 数据是不同的,所以我的解析方法将相似但不同。在我的货币类型中,我将有多种货币 ex eurusd、eurgbp 等,在期货中我将有 es、nq 等金属,例如 xagusd、xauusd..
  • @ChrisCooney 这样吗?后来,当他的模型还考虑当天的温度或月球所处的周期时,这会扩展 HistoricalData 吗?会在你的解决方案中。应用 isa 是愚蠢的。一切都是历史数据。当 isa 表示某种含义时,您应该使用继承,例如 isa Cow an Animal?还是哺乳动物?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多