2011-09-12 54 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