ExpertRemove

Stopt die Arbeit des Experten und laedt ihn aus dem Chart aus.  

void  ExpertRemove();

Rückgabewert

Keinen Rückgabewert.

Hinweis

Expert wird nicht sofort beim Aufuf der Funktion ExpertRemove() gestoppt, es wird erst die Flagge für Brechen der Expertarbeit eingestellt. D.h. jedes folgendes Ereignis wird vom Experten schon nicht verarbeitet, OnDeinit() wird aufgerufen werden und Expert wird ausgeladen werden und vom Chart entfernt werden.

Der Aufruf von ExpertRemove() im Strategietester aus der Funktion OnInit() bricht den Test des aktuellen Parametersatzes ab. Ein solches Ende gilt als Initialisierungsfehler.

Wenn ExpertRemove() im Strategietester nach erfolgreicher Initialisierung eines EA aufgerufen wird, wird der Test normal mit dem Aufruf von OnDeinit() beendet und mit OnTester() abgeschlossen. In diesem Fall bleiben die gesamte Handelsstatistik und das Optimierungskriterium erhalten, aber der EA wird aus dem Speicher des Testagenten entfernt. Dies bedeutet, dass der Testagent zusätzliche Zeit benötigt, um den EA neu zu laden und den nächsten Optimierungsdurchlauf zu starten. Daher ist TesterStop() eine bevorzugte Option für die vorzeitige, routinemäßige Beendigung eines Tests.

Beispiel:

//+------------------------------------------------------------------+
//|                                            Test_ExpertRemove.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
input int ticks_to_close=20;// Tickzahl vor dem Expertausladen 
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 
   Print(TimeCurrent(),": " ,__FUNCTION__," reason code = ",reason);
//--- "clear" comment
   Comment("");
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static int tick_counter=0;
//---
   tick_counter++;
   Comment("\Vor dem Expertausladen ",__FILE__," bleiben",
           (ticks_to_close-tick_counter),"Ticks");
//--- bis
   if(tick_counter>=ticks_to_close)
     {
      ExpertRemove();
      Print(TimeCurrent(),": ",__FUNCTION__," Expert wird ausgeladen werden");
     }
   Print("tick_counter = ",tick_counter);
//---
  }
//+------------------------------------------------------------------+

Sehen Sie auch

Programmausführung, Ereignisse des Client-Terminals