错误、漏洞、问题 - 页 3034

 

今天在自由职业者的网页上出现了一个错误。

Chrome浏览器。这有什么关系呢?

 
Aleksey Vyazmikin:

如果一个在M1上工作的EA在M1(或任何其他TF)上使用一个指标,该指标从上层TF中获取数据,那么在新条形图的第一个刻度上,它在任何 情况下都不能返回实际值,因为在上层TF被计算之前需要n个刻度,我这样理解对吗?


实际上,OnTick与OnCalculate 并不是用同一个符号同步的。理论上,OnTick可能会晚点,在它开始时,所有TF的所有指数都会被计算出来?

 
Slava:

从另一个时间框架来看,将采取目前已经准备好的数据。也就是说,在输出中,所有数据将完全同步。

那么,为什么指标不能在第一次请求时收到它们?

我怎样才能在不使用定时器的情况下制作一个正常的多TF(最好是--多字符)指示器?

 
Andrey Khatimlianskii:

那为什么指标不能在第一次请求时检索它们呢?

你如何在不使用计时器的情况下制作一个正常的多TF(最好是多字符)指标?

+

我担心,在目前的架构下,EA接收信号的延迟将不可避免,不幸的是

 
你好

在使用Mql Cloud进行优化时出现错误。

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1) in 0:00:00.001 (PR 274)


请告知可能是什么问题?

在没有Mql Cloud的情况下进行优化时,一切正常。这个问题从5月29日开始,在此之前,一切正常。

附加的文件:
 
Marat Bayburin:
你好

在使用Mql Cloud进行优化时出现错误。

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1) in 0:00:00.001 (PR 274)


请告知可能是什么问题?

在没有Mql Cloud的情况下进行优化时,一切正常。这个问题从29.5号开始,在此之前一切正常。

我认为问题出在编译器的构建上。我得到同样的错误。
也就是说,我们用新的版本编译,而代理商仍在使用旧的版本,....。像这样。
 
Marat Baiburin:
那么,就等着代理商更新吗?

如果这些是由于代理和你的桌面电脑的不同构建造成的错误,那么是的,请等待。例如,我的代理商仍然是2949,没有更新到2950。

 
Andrey Khatimlianskii:

那为什么指标不能在第一次请求时检索它们呢?

如何在不使用定时器的情况下制作一个正常的多TF(最好是多字符)指标?

在第一次请求时,指标可能没有收到其符号的数据,但对于另一个时间框架,只有一个原因--所需的时间序列还没有建立,或在一段时间后已经被销毁,当时没有请求。

在一个不成功的请求之后,只要向你的图表发送一个命令来更新 它,并立即终止OnCalculate。保证OnCalculate会被调用,并且时间序列会在这个时候准备好。

Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
  • www.mql5.com
ChartSetSymbolPeriod - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:

在第一次请求时,指标可能不会从其符号而不是另一个时间框架接收数据,原因只有一个--所需的时间序列尚未建立,或在一段时间后已经被销毁,当时没有请求。

在一个不成功的请求之后,只要向你的图表发送一个命令来更新,并立即终止OnCalculate
保证OnCalculate会被调用,保证所需的时间序列会在这个时候准备好。


在第一个指标调用中,计算是通过所有数据循环进行的。

//Расчёт количества просчитываемых баров
int limit = rates_total-prev_calculated;
   
//Если первый запуск
if(limit > 1)
{
   //какая нибудь инициализация
   
}

//================================================================
for(int i=limit; i>=0 && !IsStopped(); i--)
{
   ...  

如果在这个循环中,有一个失败的请求,应该返回什么?
限度+1,而它却没有成功?
还是什么?我不明白这一点。

 
Roman:


你能告诉我,如果第一次调用指标,例如计算是在所有数据上循环运行。

如果在这个循环中出现了一个失败的请求,应该返回什么?
限度+1,而它却没有成功?
还是什么?我不明白这一点。

你不能自己检查吗?