使用股票报价数据构建基于时间的柱

Posted

技术标签:

【中文标题】使用股票报价数据构建基于时间的柱【英文标题】:Build time based bars using stock tick data 【发布时间】:2011-11-29 09:35:40 【问题描述】:

我正在尝试使用报价数据在运行时构建股票市场条形图(快照)数据。我的股票数据提供者提供对分时级别数据的访问,其中我有一个名为 OnTick 的事件,只要数据提供者发送新分时,就会触发该事件。我希望做以下两个之一,或者如果有人可以提出一个好的选择:

选项 1:

在这个选项中,我维护一个 Bar 对象,并在每次得到一个刻度时更新它。 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(); 

问题:

哪种方法处理更密集? 哪种方法需要更多内存?

同样,如果有人对替代方法有建议,我会全力以赴。

【问题讨论】:

【参考方案1】:

您不需要在栏完成之前显示或访问栏吗?如果选项 2 似乎无法实现这一点。选项 1 我永远无法想象会成为性能障碍。而且它会使用更少的内存,因为您似乎没有将刻度数据保存到任何变量中。

【讨论】:

即使选项 1 没有达到您的建议,它会在时间完成后发布。但是你说得对,我们最终选择了 1,即使代码并不像这里看起来那么简单。【参考方案2】:

我认为最好的方法是第二种。 当您在第一次接近时重置柱线时,最低价格永远不会小于零,因此,柱线的最低价格将始终为零。

【讨论】:

同意 - 代码中存在逻辑错误,以下行应在重置时将 Max Number 设置为低。酒吧 = 新酒吧(0,0,0,0);然而,从性能角度提出了更多问题,我们选择了选项 1。【参考方案3】:

Trade link 是一个很好的例子,说明它是如何完成的。他们的教程涵盖了这一点。此外,由于它是开源的,您可以了解它是如何完成的。 The getting started tutorial is here.

【讨论】:

谢谢,我会看看 trade-link 遵循什么方法,但是我必须补充一点,我的查询的关键是讨论不同选项的权衡和好处。贸易链接所遵循的方法可能不是我系统的最佳方法。

以上是关于使用股票报价数据构建基于时间的柱的主要内容,如果未能解决你的问题,请参考以下文章

有趣的股票报价数据场景

如何使用Google财经API获取股票报价?

股票/财务数据的最佳/最全面 API [关闭]

寻找盘中股票报价提要[关闭]

请问股票的曲线图怎么看,不同颜色的线个代表啥?不同的柱呢?请细说以下。必有重谢

为股票报价创建实时警报