我试图在运行时使用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