错误、漏洞、问题 - 页 1787

 
fxsaber:
甚至可以顺理成章地加上当前队列中的tick的数量。

然后我直接写信给ServiceDesk#1666680

请考虑改变该功能的工作方式

bool SymbolInfoTick( string symbol, MqlTick& tick );

这样,在指标中(包括OnCalculate主体),它将根据其描述返回当前价格

同时,在语言中补充功能

bool SymbolInfoTick_OnCalculate( string& symbol, MqlTick& tick ); //(*)

这将返回引起OnCalculate函数调用 的符号和刻度线

或者作为一种选择(*):你可以在OnCalculate 调用中加入这些参数

OnCalculate( ..., const string& symbol, const MqlTick& tick );
 

我有个问题:你能用mql5工具来识别图表上所有正在运行的程序及其名称吗?特别是,我怎样才能获得当前图表上所有指标的名称?

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

请告知,如果在MT4专家顾问中,你串联调用一个有多个图表缓冲区的自定义指标,是否在每次调用时都进行重新计算,或者所有缓冲区都一次性计算,你可以在代码中多次应用于该指标,而不期望出现资源浪费的情况。另一个有趣的问题是,如果代码没有停止执行(运行时间超过一个tick),但指标值发生变化,会发生什么?

 
A100:

然后我直接写信给ServiceDesk#1666680

请考虑改变该功能的工作方式

bool SymbolInfoTick( string symbol, MqlTick& tick );

这样,在指标中(包括OnCalculate主体),它将根据其描述返回当前价格

同时,在语言中补充功能

bool SymbolInfoTick_OnCalculate( string& symbol, MqlTick& tick ); //(*)

这将返回引起OnCalculate函数调用 的符号和刻度线

或者作为一种选择(*):在调用OnCalculate时 加入这些参数

OnCalculate( ..., const string& symbol, const MqlTick& tick );
我加入了这种明显的无礼行为!))
 
Alexey Kozitsyn:
这是非常少的。测量几个小时。在几种乐器上。
爷爷
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: Текущее время мс = 1486493406313 (2017.02.07 18:50:06), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: Текущее время мс = 1486493406313 (2017.02.07 18:50:06), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: Текущее время мс = 1486495281212 (2017.02.07 19:21:21), предыдущее = 1486495281213
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: Текущее время мс = 1486495281212 (2017.02.07 19:21:21), предыдущее = 1486495281213
在OnTick中也有问题。根据几个小时的记录OnCalculate 出现问题的频率是OnTick的三倍。OnTick的问题总是在OnCalculate上重复出现,但反之亦然。
 
fxsaber:
Oops OnTick中也有问题。根据几个小时的记录,
OnCalculate出现问题的频率是OnTick的三倍。同时,OnTick-problem也总是在OnCalculate上重复出现,但反之亦然。
事实证明,SymbolInfoTick() 是异步的...
 
-Aleks-:

请告知,如果在MT4专家顾问中,你串联调用一个有多个图表缓冲区的自定义指标,是否在每次调用时都进行重新计算,或者所有缓冲区都一次性计算,你可以在代码中多次应用于该指标,而不期望出现资源浪费的情况。另一个有趣的问题是,如果代码没有停止执行(运行时间超过一个tick),但指标值发生变化,会发生什么?

所有的缓冲区都是一次性计算。悄悄地询问指标值 - 不会有重新计算

在MT4中,该指标从专家顾问中调用,在这个专家顾问的流程中工作,并在其历史数据的副本上工作。你可以循环使用专家顾问,但同时你会收到在调用OnTick时计算的指标数据。直到你调用RefreshRates。RefreshRates更新专家顾问的历史数据,之后其所有数据将在指标的 第一次调用 时重新计算。
 
Slawa:
所有的缓冲区都是一次性计算。安静地调用指标的值--不会有重新计算

在MT4中,从专家顾问中调用的指标在这个专家顾问的流程中工作,并在其历史数据的副本上工作。你可以循环使用专家顾问,但同时你会收到在调用OnTick时计算的指标数据。直到你调用RefreshRates。RefreshRates更新专家顾问的历史数据,之后其所有数据将在指标的 第一次调用 时重新计算。

谢谢你的答复

早些时候,我还对MT5中的ZigZag指标闪烁感兴趣(在MT4中没有这种效果)--非常烦人--这是什么原因?