TesterStatistics

Die Funktion gibt den Wert des statistischen Parameters zurück, der aus den Testergebnissen berechnet wurde.

double  TesterStatistics(
   ENUM_STATISTICS statistic_id      // ID
   );

Parameter

statistic_id

[in]   Identifikator des statistischen Parameters aus der Enumeration ENUM_STATISTICS.

Rückgabewert

Der Wert des statistischen Parameters des Testergebnisses.

Hinweis

Die Funktion kann innerhalb von OnTester() oder OnDeinit() im Tester aufgerufen werden. In anderen Fällen ist das Ergebnis undefiniert.

Beispiel:

// Der EA, basierend auf der Standarddatei "MACD Sample.mq5",
// zeigt das Ergebnis von TesterStatistics() in der Ereignisbehandlung des Testers
#define MACD_MAGIC 1234502
//---
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>
//---
input double InpLots          =0.1// Lots
input int    InpTakeProfit    =50;  // Take-Profit (in Pips)
input int    InpTrailingStop  =30;  // Trailing Stop Level (in Pips)
input int    InpMACDOpenLevel =3;   // MACD Eröffnungslevel (in Pips)
input int    InpMACDCloseLevel=2;   // MACD-Level für das Schließen (in Pips)
input int    InpMATrendPeriod =26;  // MA Periodenlänge des Trends
//+------------------------------------------------------------------+
//| Expert Initialisierungsfunktion                                  |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- Erstellen von allen benötigten Objekten
   if(!ExtExpert.Init())
      return(INIT_FAILED);
//--- erfolgreiche Initialisierung
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert new tick handling function                                |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   static datetime limit_time=0// letzte Aufrufzeit unter Berücksichtigung von 'timeout'
//--- wenn die Zeit den angegebenen Wert von limit_time überschreitet
   if(TimeCurrent()>=limit_time)
     {
 //--- Überprüfung der Daten
      if(Bars(Symbol(),Period())>2*InpMATrendPeriod)
        {
         //--- wenn erfolgreich, erhöhe limit_time um 'timeout' Sekunden
         if(ExtExpert.Processing())
            limit_time=TimeCurrent()+ExtTimeOut;
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tester handling function                                  |
//+------------------------------------------------------------------+
double OnTester(void)
  {
   double ret=TesterStatistics(STAT_PROFIT_FACTOR);
   double profit=TesterStatistics(STAT_PROFIT);
   int    trades_total=(int)TesterStatistics(STAT_TRADES);
   int    profit_total=(int)TesterStatistics(STAT_PROFIT_TRADES);
   int    loss_total=(int)TesterStatistics(STAT_LOSS_TRADES);
   PrintFormat("%s: Profit = %.2f, trades total: %lu, profit trades total: %lu, loss trades total: %lu, profit factor: %.2f",__FUNCTION__,profit,trades_total,profit_total,loss_total,ret);
   return(ret);
   /*
  Ergebnis:
   OnTesterProfit = 209.84trades total13profit trades total11loss trades total2profit factor3.02
   final balance 10209.84 USD
   OnTester result 3.020606644198363
   */
  }