下面的代码有什么意义?
17 struct st00 18 { 19 datetime dt; 20 int milisec; 21 double Bid, 22 Ask, 23 Last; 24 long Vol; 25 uchar flag; 26 }st00 m_ArrayInfoTicks[];
53 m_ArrayInfoTicks[m_ArrayCount].dt = macroRemoveSec ( StringToTime ( StringSubstr (szInfo, 0 , 19 ))); 54 m_ArrayInfoTicks[m_ArrayCount].milisec = ( int ) StringToInteger ( StringSubstr (szInfo, 20 , 3 ));如果在第 53 行中删除了秒,那么在第 54 行中毫秒和毫秒的使用就失去了意义。
不过,你还是将它们添加到了结构中。
定时器事件是独立产生的。每个刻度都是根据计时器来计算的,而不是以毫秒和秒(已删除)为单位。
毫秒现在就像额外的内存空间一样沉重。以及不必要的填充操作。
此外,您还没有解决另一个可以减少分钟柱状图结构的问题。
例如,用红色和蓝色标出的时间是相同的,而最后的价格可能相同,也可能不相同。
可以压缩这些刻度线,大大减少构建分钟柱状图所需的时间。
这使得你无法准确执行压缩。毫秒与秒之间没有绑定,它已被移除。
当然,毫秒值移动到下一秒,甚至在下一个刻度中继续移动的可能性很低。但它确实存在。
只有在从分钟条 移动 到下一个分钟条时,才能保证 100% 的准确性 - 毫秒与分钟之间存在绑定。
例如,用红色和蓝色标出的时间是相同的,而最后的价格可能相同,也可能不相同。
可以压缩这些刻度线,大大减少构建分钟柱状图所需的时间。
449 2021.10 . 22 09 : 00 : 38.649 107900 107905 6 450 2021.10 . 22 09 : 00 : 38.651 107900 1.00000000 88 451 2021.10 . 22 09 : 00 : 38.651 107895 5.00000000 88 452 2021.10 . 22 09 : 00 : 38.651 107890 5.00000000 88 453 2021.10 . 22 09 : 00 : 38.651 107885 3.00000000 88 454 2021.10 . 22 09 : 00 : 38.651 107880 15.00000000 88 455 2021.10 . 22 09 : 00 : 38.651 107880 3.00000000 88 456 2021.10 . 22 09 : 00 : 38.651 107875 16.00000000 88 457 2021.10 . 22 09 : 00 : 38.651 107870 2.00000000 88 458 2021.10 . 22 09 : 00 : 38.654 107875 1.00000000 88 459 2021.10 . 22 09 : 00 : 38.654 107875 1.00000000 88 460 2021.10 . 22 09 : 00 : 38.654 107880 1.00000000 88 461 2021.10 . 22 09 : 00 : 38.659 107880 2.00000000 88 462 2021.10 . 22 09 : 00 : 38.659 107885 2.00000000 88 463 2021.10 . 22 09 : 00 : 38.660 107885 1.00000000 88 464 2021.10 . 22 09 : 00 : 38.660 107890 3.00000000 88 465 2021.10 . 22 09 : 00 : 38.662 107885 3.00000000 88 466 2021.10 . 22 09 : 00 : 38.662 107880 3.00000000 88 467 2021.10 . 22 09 : 00 : 38.662 107875 2.00000000 88 468 2021.10 . 22 09 : 00 : 38.662 107895 3.00000000 88 469 2021.10 . 22 09 : 00 : 38.662 107900 1.00000000 88 470 2021.10 . 22 09 : 00 : 38.664 107880 1.00000000 88但是,你在第 53 行删除了秒。
53 m_ArrayInfoTicks[m_ArrayCount].dt = macroRemoveSec ( StringToTime ( StringSubstr (szInfo, 0 , 19 )));
54 m_ArrayInfoTicks[m_ArrayCount].milisec = ( int ) StringToInteger ( StringSubstr (szInfo, 20 , 3 ));
而在第 54 行留下了毫秒。 这使得你无法准确执行压缩。毫秒与秒之间没有绑定,它已被移除。
当然,毫秒值移动到下一秒,甚至在下一个刻度中继续移动的可能性很低。但它确实存在。
只有在从分钟条 移动 到下一个分钟条时,才能保证 100% 的准确性 - 毫秒与分钟之间存在绑定。
你需要毫秒来压缩未来的刻度吗?我的理解对吗?
嗯,"未来"--对我来说--我还没读下去。我想,对你来说,这已经是 "过去 "了......)))
如果是这样,那么我同意可以去掉秒针--巧合的可能性极低。)
嗯,"未来"--对我来说--我还没读下去。我想,对你来说,这已经是 "过去 "了......)))
如果是这样,那么我同意可以去掉秒针--巧合的可能性极低。)
哦,奇迹出现了!如果压缩毫秒,那么分烛的形成时间就是 00:01:06。对阵 00:01:52 - 未压缩。我们赢了 46 秒!)))
感谢您的出色工作!
我有一个问题。有没有可能在重播中增加倒带选项?我的意思是回到之前的蜡烛,然后重新播放。
新文章 开发回放系统 — 市场模拟(第 01 部分):首次实验(I)已发布:
如何创建一个系统,让我们在闭市后也能研究市场,甚至模拟市场情况? 在此,我们将开始一系列新的文章,在其中我们将应对这个主题。
此段代码将创建周期为 1 分钟的柱线,这是平台创建任何其它周期图表的最低要求。 高亮显示的部分并非代码本身的一部分,但对于分析 1 分钟柱线很有用。 我们需要检查它是否真的在此时间帧内创建。 因为如果创建时间超过 1 分钟,我们就不得不对此做点什么。 如果在不到一分钟的时间内创建它,这可能表明该系统立即可用。
执行此系统后,我们会得到以下视频中显示的结果:
作者:Daniel Jose