OnStart

É chamado em scripts e serviços quando ocorre um evento Start. A função se destina à execução única de ações estabelecidas pelo programa. Existem duas versões da função.

Versão com retorno de resultado

int  OnStart(void);

Valor retornado

Valor de tipo int que é exibido na guia "Diário".

Após o script ser concluído, no log do terminal será criada uma entrada de tipo "script nome_do_script removed (result code N)", onde N é o valor retornado pela função OnStart().

Após o serviço ser concluído, no log do terminal será criada uma entrada de tipo "service имя_сервиса stopped (result code N)", onde N é o valor retornado pela função OnStart().

O uso da chamada da OnStart() com o retorno de resultado é prioridade, pois este método permite não apenas iniciar o script, mas também retornar um código de erro ou outras informações úteis para analisar o resultado da execução do script.

Versão sem retorno do resultado é deixada apenas para compatibilidade com códigos antigos. Não é recomendada

void  OnStart(void);

Observação

OnStart() é a única função para manipular eventos em scripts e serviços, outros eventos não são enviados para esses programas. Por sua vez, o evento Start não é enviado para EAs e indicadores personalizados.

Exemplo de script:

//--- macros para trabalhar com cores
#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()
  {
//--- definimos a cor a vela de baixa
   Comment("Definimos a cor da vela de baixa"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,GetRandomColor());
   ChartRedraw(); // atualizamos imediatamente o gráfico sem esperar por um novo tick
   Sleep(1000);   // fazemos uma pausa de 1 segundo, para poder ver as alterações
//--- definimos a cor da vela de alta
   Comment("Definimos a cor da vela de alta"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor de fundo
   Comment("Definimos a cor de fundo"); 
   ChartSetInteger(0,CHART_COLOR_BACKGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor da linha Ask
   Comment("Definimos a cor da linha Ask"); 
   ChartSetInteger(0,CHART_COLOR_ASK,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor da linha Bid
   Comment("Definimos a cor da linha Bid"); 
   ChartSetInteger(0,CHART_COLOR_BID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);    
//--- definimos a cor da barra baixista e as bordas da vela baixista
   Comment("Definimos a cor da barra baixista e as bordas da vela baixista"); 
   ChartSetInteger(0,CHART_COLOR_CHART_DOWN,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor da linha do gráfico e das velas do tipo "Doji"
   Comment("Definimos a cor da linha do gráfico e das velas do tipo Doji"); 
   ChartSetInteger(0,CHART_COLOR_CHART_LINE,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor da barra altista e a borda da vela altista  
   Comment("Definimos a cor da barra altista e a borda da vela altista"); 
   ChartSetInteger(0,CHART_COLOR_CHART_UP,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor dos eixos, da escala e da linha OHLC
   Comment("Definimos a cor dos eixos, da escala e da linha OHLC"); 
   ChartSetInteger(0,CHART_COLOR_FOREGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor da grade
   Comment("Definimos a cor da grade"); 
   ChartSetInteger(0,CHART_COLOR_GRID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor do preço Last
   Comment("Definimos a cor do preço Last"); 
   ChartSetInteger(0,CHART_COLOR_LAST,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor dos níveis das ordens Stop Loss e Take Profit
   Comment("Definimos a cor dos níveis das ordens Stop Loss e Take Profit"); 
   ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- definimos a cor dos volumes e dos níveis de abertura das posições
   Comment("Definimos a cor dos volumes e dos níveis de abertura das posições"); 
   ChartSetInteger(0,CHART_COLOR_VOLUME,GetRandomColor());
   ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Retorna uma cor gerada aleatoriamente                            |
//+------------------------------------------------------------------+
color GetRandomColor()
  {
   color clr=(color)GETRGB(XRGB(rand()%255,rand()%255,rand()%255));
   return clr;
  }

Veja também

Funções de processamento de eventos, Execução de programas, Eventos do terminal do cliente