2011-09-12 123 views
0

我正在开发一个简单的财务软件来测试一些交易系统。我正在使用Java。 目前,我将从雅虎下载的数据存储到某个数据库sqlite中。我的报价TABEL的标准结构是:实现股票报价类的最佳方式

symbol 
date 
open 
high 
low 
close 
volume 

现在我需要从一个特定的符号我的数据库检索的报价,并将其存储在内存中使用它们进行计算。 那么,存储这些数据的最佳方式是什么? 我认为这是报价类的对象,所以我创造了它:

public class Quote { 

    String symbol; 
    List<String> date; 
    List<float> open; 
    List<float> high; 
    .. 
    List<float> close; 

    public getClose(){ ...} 
    etc. 
} 

但是..我有些疑惑......我不知道这是最好的办法。 有可能创建一个列表报价对象?或者,也许..一些其他的选择?

谢谢你们!

+0

有没有绝对正确的答案来设计你的程序! –

+0

看起来非常直接,看起来你在正确的轨道上。你有什么特别的担忧? – crowne

回答

2

报价是指股票在某一时刻的价格,但从您的问题来看,您似乎只想每个交易日的开盘价/收盘价/最大值(即不是报价)。我会创建一个类来表示一天的表现,而股票可以参考它。

class Stock { 
    String symbol; 
    List<Performance> history; 
} 

class Performance { 
    Calendar date; 
    double open; 
    double close; 
    double low; 
    double high; 
    double volume; 
} 

如果你想报价,你可以创建一个类:

class Quote { 
    Stock stock; 
    Calendar timestamp; 
    double value; 
} 

股票行情可以跨流的报价清单,不关心哪支股票它是。

这只是一个起点 - 我没有分析过这个域,也不知道你需要什么来正确建模。

+0

很好......是......这绝对是更好的......一个班级股票和一个“表现”历史列表..是的是的..你是对的,我标记你的答案! – stighy

0

通常,您的代码的数据对象层将镜像您的数据库结构。它看起来像你的数据模型只有一个(日期,开放,高,低,关闭...)每Quote记录,所以我觉得你的java类有一个List为这些相同的值似乎很奇怪。

如您所怀疑的那样,将它们存储在内存中仅仅是一个List<Quote>,因为您真的只是想分析一堆引用(列表)。

+0

另外,报价是否真的具有高价值和低价值?给我的报价实际上只是股票的当前价值,不会有“高”和“低”的概念,但我不太了解白话。 – skaz

+0

关于镜像数据库的“数据对象层” - 你可以有一个完全非规范化的数据库,并且仍然有很好的OO Java。 – SingleShot