RefreshRates()的更新内容

 
我想知道RefreshRates()到底更新什么数据和时间序列,什么时候是真的?
 
这样的秘密功能,开发人员甚至不知道它。)
 

我只是没有耐心去回答这样的问题。

RefreshRates

Осуществляет обновление данных в предопределенных переменных и массивах-таймсериях.


而什么是预定义变量 和时间序列数组,可以在文档中找到。

Предопределенные переменные - Справочник MQL4
Предопределенные переменные - Справочник MQL4
  • docs.mql4.com
Предопределенные переменные - Справочник MQL4
 
Alexey Viktorov:

我只是没有耐心去回答这样的问题。


而你可以在文档中阅读关于预定义变量 和时间序列数组的内容。

也就是说,iClose()函数的数据不受RefreshRates()的任何影响。那么我们怎样才能使iClose()函数输出更新的信息?

 
Mikhail Nazarenko:

所以iClose()中的数据不会受到RefreshRates()的影响。那么我怎样才能使iClose()函数输出更新的信息?

iClose() 是哪个柱子

 
Alexey Viktorov:

iClose() 是哪根柱子?

零。任意的时间框架。

 
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中的变化。

 
Alexey Viktorov:

说实话,我很惊讶......这是很温和的说法。我以为iClose()从经纪人的服务器上获取数值,但不是。 RefreshRates(); 更新iClose()收到的数值。

以下是脚本执行的结果

嗯,好吧......就我个人而言,我将牢记这一特性,在必要时插入RefreshRates()。

如果我把时间框架改成比当前时间框架更多的时间,即使使用RefreshRates(),数据也会停止及时刷新。所以,iClose和MT4的其他基本功能产生了无关紧要的废话。我确信80%的信息都没有考虑到MT4的这些独特功能。如何生活?)

 
Alexey Viktorov:

坦率地说,我很惊讶......这是很温和的说法。我以为iClose()从经纪人的服务器上获取数值,但不是。 RefreshRates(); 更新iClose()收到的数值。

以下是脚本执行的结果

嗯,好吧......我就记住这个特点,必要时插入RefreshRates()。


ps; 而iClose(_Symbol, PERIOD_CURRENT, 0)在MT5中的变化。

在四合院中的iXXXXXX值总是正确的。你没有检查函数的结果。四重奏也需要它(虽然在一些绝对简单的信徒看来,这很奇怪)。
 
解决办法是什么?更多的拐杖?比如,保留一个tick历史,并在EA中自行重新计算所有时间段。这已经超越了善与恶。)
 
Mikhail Nazarenko:
解决办法是什么?更多的拐杖?比如,保留一个tick历史,并在EA中自行重新计算所有时间段。这已经超越了善与恶)))。
不,不是的。在函数帮助中对返回值是怎么说的?