OnStart

La funzione è chiamata quando si verifica l'evento Start. La funzione è intesa all'esecuzione una tantum delle azioni implementate nello script. Ci sono due tipi di funzione.

La versione che restituisce il risultato

int  OnStart(void);

Valore di ritorno

Il valore di tipo int visualizzato nella scheda Journal.

La voce "script nome_script rimosso (codice risultato N)" viene creata nel journal del terminale dopo che è stata completata l'esecuzione di uno script. Qui N è un valore restituito dalla funzione OnStart().

La voce "servizio nome_servizio interrotto (codice risultato N)" viene creata nel journal del terminale dopo che è stata completata l'esecuzione di un servizio. Qui N è un valore restituito dalla funzione OnStart().

La chiamata OnStart() che restituisce il risultato dell'esecuzione è consigliata per l'uso poiché non solo consente di eseguire uno script o un servizio, ma restituisce anche un codice di errore o altri dati utili per analizzare il risultato dell'esecuzione del programma.

La versione senza un risultato restituito è lasciata solo per compatibilità con i vecchi codici. Non è raccomandata per l'uso

void  OnStart(void);

Nota

OnStart() è l'unica funzione per gestire gli eventi in script e servizi. Nessun altro evento viene inviato a questi programmi. A sua volta, l'evento Start non viene passato agli EA e agli indicatori personalizzati.

Script di esempio:

//--- macro per lavorare con i colori
#define XRGB(r,g,b)    (0xFF000000|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))
#define GETRGB(clr)    ((clr)&0xFFFFFF)
//+------------------------------------------------------------------+
//| Funzione Start del programma Script                              |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- imposta un colore di candela verso il basso
   Comment("Imposta un colore di candela verso il basso"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,GetRandomColor());
   ChartRedraw(); // aggiorna il chart immediatamente senza aspettare un nuovo tick
   Sleep(1000);   // pausa per 1 secondo per vedere tutte le modifiche
//--- imposta un colore di candela verso l'alto
   Comment("Imposta un colore di candela verso l'alto"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore di sfondo
   Comment("Imposta il colore di sfondo"); 
   ChartSetInteger(0,CHART_COLOR_BACKGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore della linea Ask
   Comment("Imposta il colore della linea Ask"); 
   ChartSetInteger(0,CHART_COLOR_ASK,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore della linea Bid
   Comment("Imposta il colore della linea Bid"); 
   ChartSetInteger(0,CHART_COLOR_BID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);    
// --- imposta il colore di una barra verso il basso e una cornice di candela verso il basso
   Comment("Imposta il colore di una barra verso il basso e una cornice di candela verso il basso"); 
   ChartSetInteger(0,CHART_COLOR_CHART_DOWN,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore di una linea del chart e delle candele Doji
   Comment("Imposta il colore di una linea del grafico e dei candelabri Doji"); 
   ChartSetInteger(0,CHART_COLOR_CHART_LINE,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore di una barra verso l'alto e di una cornice di candele verso l'alto  
   Comment("Imposta il colore di una barra verso l'alto e una cornice per candele verso l'alto"); 
   ChartSetInteger(0,CHART_COLOR_CHART_UP,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore degli assi, della scala e della linea OHLC
   Comment("Imposta il colore degli assi, la scala e la linea OHLC"); 
   ChartSetInteger(0,CHART_COLOR_FOREGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta un colore griglia
   Comment("Imposta un colore griglia"); 
   ChartSetInteger(0,CHART_COLOR_GRID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore dell'ultimo prezzo
   Comment("Imposta il colore dell'ultimo prezzo"); 
   ChartSetInteger(0,CHART_COLOR_LAST,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- imposta il colore dei livelli di ordine Stop Loss e Take Profit
   Comment("Imposta il colore dei livelli di ordine Stop Loss e Take Profit"); 
   ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
/ --- imposta il colore dei volumi e i livelli di entrata nel mercato
   Comment("Imposta il colore dei volumi e i livelli di entrata nel mercato"); 
   ChartSetInteger(0,CHART_COLOR_VOLUME,GetRandomColor());
   ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Restituisce un colore generato a caso                            |
//+------------------------------------------------------------------+
color GetRandomColor()
  {
   color clr=(color)GETRGB(XRGB(rand()%255,rand()%255,rand()%255));
   return clr;
  }

Guarda anche

Funzioni di gestione degli eventi(event handling), Esecuzione Programma, Eventi del terminale client