TesterStop

Fornisce il comando di completamento dell'operazione del programma quando si fa il testing.

void  TesterStop();

Valore di ritorno

Nessun valore di ritorno.

Nota

La funzione TesterStop() è progettata per uno spegnimento anticipato di routine di un EA su un agente di testing - per esempio, quando si raggiunge un numero specificato di trade perdenti o un livello di drawdown preimpostato.

La chiamata TesterStop() è considerata un normale completamento di un test, pertanto viene chiamata la funzione OnTester () e i valori delle intere statistiche di trading accumulate e criterio di ottimizzazione vengono sottoposti al tester di strategia.

La chiamata di ExpertRemove() nel tester di strategia significa anche normale completamento del test e consente di ottenere statistiche di trading, ma l'EA viene de-caricato dalla memoria dell'agente. In questo caso, eseguire un passaggio(un pass) sul prossimo set di parametri richiede tempo per ricaricare il programma. Pertanto, TesterStop() è un'opzione preferita per il completamento di routine di un test.

 

Esempio:

//--- define
#define BALANCE_LOSS_STOP  100.0       // value of the balance drawdown, at which testing is stopped
#define EQUITY_LOSS_STOP   100.0       // value of the equity drawdown, at which testing is stopped
 
//-- parametri di input
input  double  InpLots        =  0.1;  // lotti
input  uint    InpStopLoss    =  50;   // Stop loss in punti
input  uint    InpTakeProfit  =  150;  // Take Profit in punti
sinput ulong   InpMagic       =  123;  // Numero Magico
sinput ulong   InpDeviation   =  5;    // deviazione
//---variabili globali
CTrade      trade;                     // istanza della classe di trading
CSymbolInfo symb;                      // istanza della classe del simbolo
CAccountInfo account;                  // istanza di classe del conto di trading
...
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ...
//-- inizializzazione avvenuta con successo
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//-- aggiornare le quotazioni attuali
   if(!symb.RefreshRates())
      return;
   ...
 
//-- se il saldo o il patrimonio netto sono diminuiti più di quanto indicato nella sostituzione macro BALANCE_LOSS_STOP e EQUITY_LOSS_STOP,
//-- il test è considerato non riuscito e viene chiamata la funzione TesterStop() 
//-- verifica della perdita del saldo superiore a BALANCE_LOSS_STOP
   if(balance_prev!=account.Balance())
     {
      if(account.Balance()<balance_prev-BALANCE_LOSS_STOP)
        {
         PrintFormat("The initial balance of %.2f %s decreased by %.2f %s, and now has a value of %.2f %s. Stop testing.",balance_prev,account.Currency(),balance_prev-account.Balance(),account.Currency(),account.Balance(),account.Currency());
         TesterStop();
         /*
        Risultato:
         The initial balance of 10000.00 USD decreased by 100.10 USDand now has a value of 9899.90 USDStop testing.
         TesterStop() called on 9of testing interval
         */
        }
     }
//-- controllare la perdita del patrimonio netto sia maggiore di EQUITY_LOSS_STOP
   if(equity_prev!=account.Equity())
     {
      if(account.Equity()<equity_prev-EQUITY_LOSS_STOP)
        {
         PrintFormat("The initial equity of %.2f %s decreased by %.2f %s, and now has a value of %.2f %s. Stop testing.",equity_prev,account.Currency(),equity_prev-account.Equity(),account.Currency(),account.Equity(),account.Currency());
         TesterStop();
         /*
        Risultato:
         The initial equity of 10000.00 USD decreased by 100.10 USDand now has a value of 9899.90 USDStop testing.
         TesterStop() called on 9of testing interval
         */
        }
     }
  }

Guarda anche

Esecuzione Programma, Test delle Strategie di Trading, ExpertRemove, SetReturnError