OnStart

Вызывается в скриптах и сервисах при наступлении события Start. Функция предназначена для однократного выполнения действий, заложенных в программу. Существуют два варианта функции.

Версия с возвратом результата

int  OnStart(void);

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

Значение типа int, которое выводится в закладку "Журнал".

После завершения скрипта в журнале терминала будет создана запись вида "script имя_скрипта removed (result code N)", где N и есть то значение, которое вернула функция OnStart().

После завершения сервиса в журнале терминала будет создана запись вида "service имя_сервиса stopped (result code N)", где N и есть то значение, которое вернула функция OnStart().

Приоритетным является использование вызова OnStart() с возвратом результата выполнения, так как этот способ позволяет не только выполнить скрипт или сервис, но и вернуть код ошибки или другую полезную информацию для анализа результата выполнения работы программы.

Версия без возврата результата оставлена только для совместимости со старыми кодами. Не рекомендуется к использованию

void  OnStart(void);

Примечание

OnStart() является единственной функцией для обработки событий в скриптах и сервисах, другие события в эти программы не посылаются. В свою очередь событие Start не посылается экспертам и пользовательским индикаторам.

Пример скрипта:

//--- макросы для работы с цветом
#define XRGB(r,g,b)    (0xFF000000|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))
#define GETRGB(clr)    ((clr)&0xFFFFFF)
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- установим цвет падающей свечи
   Comment("Установим цвет падающей свечи"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,GetRandomColor());
   ChartRedraw(); // немедленно обновим график без ожидания нового тика
   Sleep(1000);   // сделаем паузу в 1 секунду, чтобы можно было увидеть изменения
//--- установим цвет растущей свечи
   Comment("Установим цвет растущей свечи"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет фона
   Comment("Установим цвет фона"); 
   ChartSetInteger(0,CHART_COLOR_BACKGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет линии Ask
   Comment("Установим цвет линии Ask"); 
   ChartSetInteger(0,CHART_COLOR_ASK,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет линии Bid
   Comment("Установим цвет линии Bid"); 
   ChartSetInteger(0,CHART_COLOR_BID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);    
//--- установим цвет падающего бара и окантовки падающей свечи
   Comment("Установим цвет падающего бара и окантовки падающей свечи"); 
   ChartSetInteger(0,CHART_COLOR_CHART_DOWN,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет линии графика и свечей типа "Доджи"
   Comment("Установим цвет линии графика и свечей типа Доджи"); 
   ChartSetInteger(0,CHART_COLOR_CHART_LINE,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет растущего бара и окантовки растущей свечи  
   Comment("Установим цвет растущего бара и окантовки растущей  свечи"); 
   ChartSetInteger(0,CHART_COLOR_CHART_UP,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет осей, шкалы и строки OHLC
   Comment("Установим цвет осей, шкалы и строки OHLC"); 
   ChartSetInteger(0,CHART_COLOR_FOREGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет сетки
   Comment("Установим цвет сетки"); 
   ChartSetInteger(0,CHART_COLOR_GRID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет цены Last
   Comment("Установим цвет цены Last"); 
   ChartSetInteger(0,CHART_COLOR_LAST,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет уровней ордеров Stop Loss и Take Profit
   Comment("Установим цвет уровней ордеров Stop Loss и Take Profit"); 
   ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- установим цвет объемов и уровней открытия позиций
   Comment("Установим цвет объемов и уровней открытия позиций"); 
   ChartSetInteger(0,CHART_COLOR_VOLUME,GetRandomColor());
   ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Возвращает цвет, сгенерированный случайным образом               |
//+------------------------------------------------------------------+
color GetRandomColor()
  {
   color clr=(color)GETRGB(XRGB(rand()%255,rand()%255,rand()%255));
   return clr;
  }

Смотри также

Функции обработки событий, Выполнение программ, События клиентского терминала