gpt4 book ai didi

c# - 使用股票报价数据构建基于时间的条形图

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:30 24 4
gpt4 key购买 nike

我正在尝试使用报价数据在运行时构建股票市场条形图(快照)数据。我的股票数据提供者提供对报价水平数据的访问,其中我有一个名为 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();
}

问题:

  • 哪种方法的处理强度更高?
  • 哪种方法需要更多内存?

再次强调,如果有人对替代方法有建议,我会洗耳恭听。

最佳答案

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

关于c# - 使用股票报价数据构建基于时间的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com