我想知道RefreshRates()到底更新什么数据和时间序列,什么时候是真的?
这样的秘密功能,开发人员甚至不知道它。)
我只是没有耐心去回答这样的问题。
RefreshRates
Осуществляет обновление данных в предопределенных переменных и массивах-таймсериях.
而什么是预定义变量 和时间序列数组,可以在文档中找到。

Предопределенные переменные - Справочник MQL4
- docs.mql4.com
Предопределенные переменные - Справочник MQL4
Mikhail Nazarenko:
零。一个任意的时间框架。
说实话,我很惊讶......这是很温和的说法。我以为iClose()从经纪商的服务器上获取数值,但不是。 RefreshRates(); 更新iClose()获取的数值。
/********************Script program start function*******************/ void OnStart() { for(int i = 0; i < 10; i++) { Print(Bid, " *** ", iClose(_Symbol, PERIOD_CURRENT, 0)); Sleep(1000); RefreshRates();// Без RefreshRates(); значения iClose(_Symbol, PERIOD_CURRENT, 0) не меняются… // То, что без RefreshRates(); не меняются значения Bid, это понятно и нормально… } }/******************************************************************/
以下是脚本执行的结果
2021.02.15 11:39:35.559 00 EURUSD,M5: 1.21375 *** 1.21375 2021.02.15 11:39:34.559 00 EURUSD,M5: 1.21375 *** 1.21375 2021.02.15 11:39:33.559 00 EURUSD,M5: 1.21375 *** 1.21375 2021.02.15 11:39:32.559 00 EURUSD,M5: 1.21375 *** 1.21375 2021.02.15 11:39:31.559 00 EURUSD,M5: 1.2138 *** 1.2138 2021.02.15 11:39:30.559 00 EURUSD,M5: 1.21378 *** 1.21378 2021.02.15 11:39:29.559 00 EURUSD,M5: 1.21379 *** 1.21379 2021.02.15 11:39:28.559 00 EURUSD,M5: 1.21378 *** 1.21378 2021.02.15 11:39:27.559 00 EURUSD,M5: 1.21379 *** 1.21379 2021.02.15 11:39:26.559 00 EURUSD,M5: 1.21379 *** 1.21379
嗯,好吧......我就记住这个特点,必要时插入RefreshRates()。
ps; 而iClose(_Symbol, PERIOD_CURRENT, 0)在MT5中的变化。
解决办法是什么?更多的拐杖?比如,保留一个tick历史,并在EA中自行重新计算所有时间段。这已经超越了善与恶。)
Mikhail Nazarenko:
解决办法是什么?更多的拐杖?比如,保留一个tick历史,并在EA中自行重新计算所有时间段。这已经超越了善与恶)))。
不,不是的。在函数帮助中对返回值是怎么说的?
解决办法是什么?更多的拐杖?比如,保留一个tick历史,并在EA中自行重新计算所有时间段。这已经超越了善与恶)))。