错误、漏洞、问题 - 页 3029

 
Igor Makanu:

这不应该在指标中正确工作。

如果我没有弄错的话,在帮助中,有一个关于所有TFs的分页数据的脚本明细,应该有一个警告,即不能以这种方式从指标中请求历史数据,因为指标是异步工作的。

建议在你绑定句柄后使用BarsCalculated()一次。


UPD: 历史分页的脚本和解释为什么它在指标中不起作用:https://www.mql5.com/ru/docs/series/timeseries_access

在这篇文章中,我们只写到,在一个指数中请求时间序列的数据(或在一个循环中 请求SeriesInfoInteger) 是不可取的。


"回顾一下,发送更新时间序列的请求调用更新的指标 周期相同 是非常不可取的。使用与指标相同的符号周期的请求是不可取的,因为历史数据的更新是在指标工作的同一线程中进行。因此,出现楔子的可能性很大。"


如果我们简单地要求SeriesInfoInteger,并且在错误的情况下,退出OnCalculate,那么楔子怎么会发生呢?

 

给大家的问题。

https://www.mql5.com/ru/docs/series/timeseries_access 上 的帮助说。

"当调用从时间序列中复制任何数据的函数时,你应该记住, 开始参数 (开始复制价格数据的条数)必须总是在可用的终端历史中 如果我们只有100个柱子,从指数为500的柱子开始,试图复制300个柱子是没有意义的。这个请求将被视为无效,不会被处理,即不会从交易服务器加载历史记录。

CopyTime将给出-1,这很清楚,但是--它是否会自己启动建立时间序列的过程/从服务器条形图到第800条(500+300)的分页?

请告知。

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


1.这篇文章只是说从时间序列中请求数据(或在一个循环中 请求SeriesInfoInteger) 是不可取的。


"回顾一下,发送更新时间序列的请求,引起更新的指标 具有 相同的周期 是非常不可取的。使用与指标相同的符号周期的请求是不可取的,因为历史数据的更新是在指标工作的同一线程中进行。因此,出现楔子的可能性很大。"


2.如果你简单地要求SeriesInfoInteger,并将OnCalculate留在false的情况下,楔子会如何发生?

1.是的,因为你不能拖累指标的线程,因为请求同步状态会导致历史记录被交换,而你不能等待。

2.对。如果数据没有准备好,它将直接退出oncalc,同步终端将开始,但指标的流量不会被抑制。只有当数据准备好了,并且所要求的指标被完全计数后,下一个oncalc才会被完全执行,而不需要刹车。上面添加的打印结果显示,所要求的指标并不总是准备好的,但我们可以允许只做一次新的条形图,而不是在每一个tick上,以实现所有指标的 最快计算

 
Andrey Dik:

谢谢你。

另外,请看我的问题:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Andrey Dik:

见上面的代码。

修正你的代码,增加一个打印输出

  if(SeriesInfoInteger(Symbol(), OldTF, SERIES_SYNCHRONIZED))
   {
    if(iBars(Symbol(), OldTF) != BarsCalculated(Handle))
     {
      Print("Баров ", iBars(Symbol(), OldTF));
      Print("посчитано", BarsCalculated(Handle));
      return 0;
     }
   }
  else
   {
    Print("Период ", OldTF, " не синхронизирован.");
    return 0;
   }

当你看到你的蟑螂时,卷起你的显示器,并把它推到...你知道的地方。

 
mktr8591:

谢谢你。

另外,请看我的问题:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

我不是100%确定(需要检查),一旦你确定请求的日期比服务器上历史上的第一个日期更新鲜,你就可以请求数据,历史将被调换。

 
Andrey Dik:

我不是100%确定(需要检查),通过确保请求的日期比服务器上历史上的第一个日期更新鲜,数据可以被请求,历史将被交换。

谢谢。

我是在问我的另一个帖子,再次链接:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Alexey Viktorov:

修正你的代码,增加一个打印输出

当你看到你的蟑螂时,卷起你的显示器,并把它推到...你知道的地方。

你在证明我的观点,同志。

 
mktr8591:

谢谢你。

我是在问我的另一个帖子,再次链接:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

我不太理解你的代码。在下一次调用OnCalculate时,"return 0; "之后应该发生什么?

我们返回0,从而说明我们还没有计算出任何东西,并且在下一个交易日,prev kalk将不会被增加1。

也就是说,我们将在开始向老龄化国家请求数据的那一栏,直到我们返回(rate_total)为止。

 
Andrey Dik:

你证明了我的观点,同志。

1.谢谢大家--我对指标有了更多的了解 ))))

2)安德鲁,如果有人不理解你的想法(包括我),这只意味着一件事--你没有正确地画出画面!你的想法是什么?更确切地说--你以这样的方式来画它,很多人都不明白......。

原因: