我試圖在運行時使用tick數據建立股票市場酒吧(快照)數據。我的股票數據提供者提供對tick價格數據的訪問權限,在該數據中我有一個名爲OnTick的事件,每當數據提供者發送新的刻度時都會觸發該事件。我希望做下面的兩個中的一個,或者如果有人能提出一個很好的選擇:使用股票價格數據建立基於時間的酒吧
選項1:
在這個選項我保持一個酒吧對象,每次更新它,我得到一個蜱。 OnBar()事件可以附加到一個計時器已過去的事件(1分鐘1分鐘等)。
//TickMsg = double price, DateTime dttm
public void OnTick(TickMsg newTick)
{
TaskFactory.StartNew(){UpdateBar(newTick)};//Syntax not specific
}
UpdateBar()
{
//nextBar is a Bar object thats intialized to Open = 0, High = 0, Low = 0, Close = 0
if(nextBar.Open==0)
nextBar.Open = newTick.price;
if(newTick.price>nextBar.High)
nextBar.High = newTick.price;
if(newTick.price<nextBar.Low)
nextBar.Low = newTick.price;
nextBar.Close = newTick.price;
}
public void OnBar(Bar bar)
{
//Process the bar..perform calculations etc
bar = new Bar(0,0,0,0);//Reset the bar
}
選項2:
在這個選項中,我只是將蜱蜱的列表,並進行計算時的OnBar被調用。 OnBar()事件可以附加到一個計時器已過去的事件(1分鐘1分鐘等)。
List <TickMsg> TickList;
public void OnTick(TickMsg newTick)
{
TickList.Add(newTick);
}
public void OnBar()//called on a timer
{
var low = TickList.Min();
var high = TickList.Max();
var close = (from entry in TickList orderby entry.TickMsg.dttm ascending).Last();
var open = (from entry in TickList orderby entry.TickMsg.dttm ascending).First();
TickList.Empty();
}
問題:
- 哪種方法更密集的處理?
- 哪種方法需要更多的內存?
再說一遍,如果有人對另一種方法有什麼建議,我就會全神貫注。
謝謝,將檢查交易鏈接遵循什麼方法,但我必須補充說,我的查詢的關鍵是討論不同選項的權衡和好處。交易鏈接所採用的方法可能不是我係統的最佳方法。 – Aziz