Что обновляет функция RefreshRates()

 
Хотел точно узнать какие данные и таймсерии обновляет функция RefreshRates() и когда она равна true?
 
Такая секретная функция что и разработчики не в курсе.)))
 

Просто не хватает терпения отвечать на такие вопросы.

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; А в МТ5 значения iClose(_Symbol, PERIOD_CURRENT, 0) меняется.

 
Alexey Viktorov:

Честно сказать, я удивлён… и это мягко сказано. Я считал, что iClose() получает значение с сервера брокера(ДЦ), но нет… RefreshRates(); обновляет значения получаемые функцией iClose()

Вот результат выполнения скрипта

Ну, да ладно… Лично я просто буду иметь ввиду такую особенность и при необходимости буду вставлять RefreshRates();

 А если сменить таймфейм на отличный от текущего данные перестанут вовремя обновляться даже с RefreshRates(). Выходит фундаментальные функции iClose и тп. в MT4 выдают  неактуальную туфту. Уверен что 80% инфопродуктов не учитывают эти уникальные особенности MT4. Как жить дальше?)))

 
Alexey Viktorov:

Честно сказать, я удивлён… и это мягко сказано. Я считал, что iClose() получает значение с сервера брокера(ДЦ), но нет… RefreshRates(); обновляет значения получаемые функцией iClose()

Вот результат выполнения скрипта

Ну, да ладно… Лично я просто буду иметь ввиду такую особенность и при необходимости буду вставлять RefreshRates();


ps; А в МТ5 значения iClose(_Symbol, PERIOD_CURRENT, 0) меняется.

Всегда в четверке значения iXXXX получались корректно. Ты не проверяешь результат выполнения функции. Четверка этого тоже требует (как это странным не кажется некоторым адептам абсолютной простоты)
 
Какой выход? Опять костыли? Типа, вести историю тиков и пересчитывать все таймфреймы в советниках самостоятельно. Это же за гранью добра и зла.)))
 
Mikhail Nazarenko:
Какой выход? Опять костыли? Типа, вести историю тиков и пересчитывать все таймфреймы в советниках самостоятельно. Это же за гранью добра и зла.)))
Нет, не так. В справке про функцию что написано о возвращаемом значении?