Справочник MQL4

RefreshRates

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

bool  RefreshRates();

Параметры

Нет.

Возвращаемое значение

Возвращает true, если данные обновлены, иначе false.

Примечание

Эта функция используется, когда эксперт или скрипт производит вычисления в течение долгого времени и нуждается в обновленных данных.

Данные могут не обновиться только по той причине, что они соответствуют текущему состоянию клиентского терминала. Эксперты и скрипты работают с собственной копией исторических данных. Копия данных по текущему инструменту создается при первоначальном запуске эксперта или скрипта.

При каждом следующем запуске эксперта (напомним, что скрипт выполняется однократно и не зависит от приходящих тиков) первоначально созданная копия обновляется. За то время, пока эксперт или скрипт работает, может прийти один или несколько новых тиков, поэтому данные могут устареть.

Пример:

   int ticket;
   while(true)
     {
      ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"комментарий эксперта",255,0,CLR_NONE);
      if(ticket<=0)
        {
         int error=GetLastError();
         //---- недостаточно денег
         if(error==134) break;
         //---- 10 секунд ожидания
         Sleep(10000);
         //---- обновим ценовые данные
         RefreshRates();
        }
      else
        {
         OrderSelect(ticket,SELECT_BY_TICKET);
         OrderPrint();
         break;
        }
     }