使用iClose/iOpen时间序列访问等工作时的MQL5错误。 - 页 7

 
Renat Fatkhullin:

1) 测量每个OnTick/OnCalculate计算的执行时间,以微秒为单位,在日志中显示。

这样你就可以看到你计算一个刻度所需的时间。然后估计在这个速度下,你每秒能数出多少个滴答。它可能会变成不超过一打的刻度线,而每秒钟的刻度线明明更多。


2) 测量每个OnCalculate指标的时间,这些指标被附在你提取数据的图表/时间框架上。

那里可能有类似的情况。由于计算速度慢,终端会等待,直到计算出的符号:时间框架被解锁。正是这些缓慢的指标,特别是在深厚的历史上,导致了其他交易者的图表被冻结。


在设计指标时,你需要把性能问题和经济上的重新计算放在首位。否则,你将杀死你周围的一切。

雷纳特,这真的很悲哀。提基现在是在等我解决我的问题吗?直到现在,我还认为抽搐是自己产生的,我要么有时间,要么没有。现在事实证明,我可以暂停系统。

 
Алексей Тарабанов:

雷娜特,这一直是相当悲哀的。现在的抽搐是在等待我解决我的问题吗?直到现在,我还认为抽搐是自己产生的,我要么有时间,要么没有。现在事实证明,我可以悬挂系统。

该指标在每个刻度 上运行,没有跳过。你必须一直监控OnCalculate的持续时间和进来的ticks的频率。否则,你将会被卡住。

重现它的最简单方法是在一个自定义符号上运行指标,并以一定的频率开始勾选它。随着频率的增加,你会看到制动的情况。这都是合乎逻辑的。

 

在什么情况下指标不能画出它的值?缓冲区被填充了有效的值,但指标的图表是空的....。至少不是反过来,建立1940年

1944年一样。一定是这样的。

 
fxsaber:

该指标在每个tick 上执行,没有跳过。你需要一直监控OnCalculate持续时间和tick到达率。否则,你将会被卡住。

重现它的最简单方法是在一个自定义符号上运行指标,并以一定的频率开始在其中打勾。随着频率的增加,你会看到制动的情况。这一切都很有意义。

是的,正是这样。

 
Алексей Тарабанов:

雷娜特,这一直是相当悲哀的。现在的抽搐是在等待我解决我的问题吗?直到现在,我还认为抽搐是自己产生的,我要么有时间,要么没有。现在事实证明,我可以悬挂系统。

蜱虫一直 在等待。我们保证在每次打勾时都会调用OnCalculate

在四代中,它导致GUI冻结,而在五代中,它只是一个单独的线程处理某个特定字符的延迟。而且在五岁的时候就一直是这样。只是,你现在 才看到它

 
Renat Fatkhullin:

重新连接后的外星人隐形时限的冻结更新问题得到了解决和修复。原因是在重新连接后的错误缓存状态。

测试版1946年可通过帮助->检查桌面更新->最新测试版。

更新后,让我们来测试一下。

问题是目前的问题是否也与加载其他工具(看不见的时间框架)的情况有关,我指的是多货币指标 和EA,还是这些问题并不相互关联?

 
Slava:

蜱虫一直 在等待。我们保证在每次打勾时都会调用OnCalculate

如果在第四阶段,它将冻结GUI,但在第五阶段,它只是一个单独的线程处理特定字符的延迟。而且在第五届时一直是这样。只是你现在 才看到它。

终端日志会有一条关于这种情况的信息,类似于 "指标太慢"?

?

 
Igor Makanu:

终端日志中是否会有关于这种情况的信息,如 "指标太慢"?

?

在专家日志中
 
Slava:
在专家日志中

谢谢你,这是个问题,但我的理解是,不能通过程序判断,指标计算的点位不相关,指标会挂掉终端线程?

 
Igor Makanu:

谢谢你,这很有意义,但我的理解是,你不能以编程方式确定指标计算的点位不相关,指标会挂掉终端线程?

有可能尝试确定。

如果是分钟,你可以用TimeCurrent()比较上一个条形的时间。如果不是M1,你可以询问iTime(_Symbol,PERIOD_M1,0)并与TimeCurrent()比较。

你可以将买入价或最后价格(取决于符号)与上一栏的收盘价进行比较。你可以直接向SymbolInfoTick询问当前符号。除了买入和卖出之外,还有勾选时间