TerminalClose

La funzione comanda il terminale a completare il funzionamento.

bool  TerminalClose(
   int ret_code      // codice di chiusura del terminale client
   );

Parametri

ret_code

[in] Codice di ritorno, restituito dal processo del terminale client al completamento dell'operazione.

Valore restituito

La funzione restituisce true in caso di successo, altrimenti - false.

Nota

La funzione TerminalClose() non ferma il terminale immediatamente, comanda solo al terminale di completare la sua operazione.

Il codice di un Expert Advisor che ha chiamato TerminalClose() deve avere tutte le disposizioni per il completamento immediato (ad esempio tutti i file precedentemente aperti devono essere chiusi in modo normale). La chiamata di questa funzione deve essere seguita dall'operatore return.

Il parametro ret_code consente di indicare il codice di ritorno necessario per l'analisi dei motivi della cessazione programma del funzionamento del terminale, quando parte dal prompt dei comandi.

Esempio:

//--- parametri di input
input int  tiks_before=500; // numero di ticks fino alla terminazione
input int  pips_to_go=15;   // distanza in pips 
input int  seconds_st=50;   // numero di secondi dato all' Expert Advisor
//--- globali
datetime   launch_time;
int        tick_counter=0;
//+--------------------------------------------------------------------------------+
//| Funzione deinizializzazione Expert                                             |
//+--------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Print(__FUNCTION__," reason code = ",reason);
   Comment("");
  }
//+--------------------------------------------------------------------------------+
//| Funzione tick dell'Expert                                                      |
//+--------------------------------------------------------------------------------+
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;
     }
//--- distanza prezzo in pips
   distance=(tick.bid-first_bid)/_Point;
//--- mostra una notifica per monitorare l'operazione dell' EA
   string comm="Secondi passati dal momento d' inizio:\r\n\x25CF: "+
               IntegerToString(tick.time-launch_time)+" ;"+
               "\r\n\x25CF ticks received: "+(string)tick_counter+" ;"+
               "\r\n\x25CF price went in points: "+StringFormat("%G",distance);
   Comment(comm);
//--- sezione per il controllo della condizione di chiusura del terminale
   if(tick_counter>=tiks_before)
      TerminalClose(0);    // uscita dal contatore tick
   if(distance>pips_to_go)
      TerminalClose(1);    // va su per numero di pips uguale a pips_to_go
   if(distance<-pips_to_go)
      TerminalClose(-1);   // va giu per numero di pips uguale a pips_to_go
   if(tick.time-launch_time>seconds_st)
      TerminalClose(100);  // terminazione per timeout
//---
  }

Vedi anche

Funzionamento del Programma, Errori di esecuzione, Motivi per deinizializzazione