//+------------------------------------------------------------------+
//| Expert Initialisierungsfunktion |
//+------------------------------------------------------------------+
int OnInit()
{
//--- abrufen des Codes für den Deinitialisierungsgrund in der Variablen 'reason'
int reason=UninitializeReason();
//--- einen Nachrichtenstring mit einem Deinitialisierungsgrund erstellen und die Nachricht an das Journal senden
string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
Print(message);
//--- Erfolg
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Deinitialisierungsfunktion des Experten |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- erstelle eine Zeichenkette mit einem Deinitialisierungsgrund aus der Variable 'reason', um sie im Journal auszudrucken
string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
Print(message);
}
//+------------------------------------------------------------------+
//| Tick-Funktion des Experten |
//+------------------------------------------------------------------+
void OnTick()
{
}
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Codes des Deinitialisierungsgrundes|
//+------------------------------------------------------------------+
string UninitializeReasonDescription(const int reason)
{
switch(reason)
{
//--- der EA beendete seine Arbeit durch den Aufruf der Funktion ExpertRemove()
case REASON_PROGRAM :
return("Expert Advisor terminated its operation by calling the ExpertRemove() function");
//--- das Programm wurde vom Chart entfernt
case REASON_REMOVE :
return("Program has been deleted from the chart");
//--- Rekompilieren des Programms
case REASON_RECOMPILE :
return("Program has been recompiled");
//--- Symbol oder Zeitrahmen des Charts wurde verändert
case REASON_CHARTCHANGE :
return("Symbol or chart period has been changed");
//--- Chart wurde geschlossen
case REASON_CHARTCLOSE :
return("Chart has been closed");
//--- Eingaben wurden vom Nutzer verändert
case REASON_PARAMETERS :
return("Input parameters have been changed by a user");
//--- ein anderes Konto wurde aktiviert oder es gab eine erneute Verbindung zum Handelsserver aufgrund von Änderungen der Kontoeinstellungen
case REASON_ACCOUNT :
return("Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings");
//--- ein anderes Chart-Template wurde angewendet
case REASON_TEMPLATE :
return("A new template has been applied");
//--- OnInit() gab einen Wert ungleich Null zurück
case REASON_INITFAILED :
return("This value means that OnInit() handler has returned a nonzero value");
//--- Terminal wurde geschlossen
case REASON_CLOSE :
return("Terminal has been closed");
}
//--- Grund der Deinitialisierung ist unbekannt
return("Unknown reason");
}
|