Справочник MQL4

TerminalClose

Посылает терминалу команду на завершение работы.

bool  TerminalClose(
   int ret_code      // код завершения клиентского терминала
   );

Параметры

ret_code

[in]  Код возврата, возвращаемый процессом клиентского терминала при завершении работы.

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

Возвращает true в случае успеха, иначе false.

Примечание

Функция TerminalClose() не производит немедленной остановки работы терминала, она просто посылает терминалу команду на завершение.

В коде советника, вызвавшего TerminalClose(), должны быть сделаны все приготовления для немедленного завершения работы (например, должны быть штатным образом закрыты все ранее открытые файлы). Сразу после вызова этой функции должен идти оператор return.

Параметр ret_code позволяет указывать нужный код возврата для анализа причин программного прекращения работы терминала при его запуске из командной строки.

Пример:

//--- input parameters
input int  tiks_before=500; // количество тиков до завершения
input int  pips_to_go=15;   // расстояние в пипсах 
input int  seconds_st=50;   // сколько секунд даем эксперту
//--- globals
datetime   launch_time;
int        tick_counter=0;
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Print(__FUNCTION__," reason code = ",reason);
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static double first_bid=0.0;
   MqlTick       tick;
   double        distance;
//---
   SymbolInfoTick(_Symbol,tick);
   tick_counter++;
   if(first_bid==0.0)
     {
      launch_time=tick.time;
      first_bid=tick.bid;
      Print("first_bid =",first_bid);
      return;
     }
//--- ход цены в пунктах
   distance=(tick.bid-first_bid)/_Point;
//--- выведем сообщение, чтобы отслеживать работу советника
   string comm="С момента запуска:\r\n\x25CF прошло секунд: "+
               IntegerToString(tick.time-launch_time)+" ;"+
               "\r\n\x25CF поступило тиков: "+(string)tick_counter+" ;"+
               "\r\n\x25CF цена прошла в пунктах: "+StringFormat("%G",distance);
   Comment(comm);
//--- секция проверки условий для закрытия терминала
   if(tick_counter>=tiks_before)
      TerminalClose(0);    // выход по счетчику тиков
   if(distance>pips_to_go)
      TerminalClose(1);    // прошли вверх на pips_to_go пипсов
   if(distance<-pips_to_go)
      TerminalClose(-1);   // прошли вниз на pips_to_go пипсов
   if(tick.time-launch_time>seconds_st)
      TerminalClose(100);  // завершение работы по таймауту
//---
  }

Смотри также

Выполнение программ, Ошибки выполнения, Причины деинициализации