Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 27.10.16
Kronenchakra Kronenchakra ist offline
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard Code Snippets - EA-Steuerung mittels Globalvariablen

Das vorgehende Codeschnipsel (TradingAllowed) ist sicher nur in OnInit() zu gebrauchen.
Auf Anregung von Marquez habe ich mir eine EA-Steuerung mittels Globalvariablen überlegt, programmiert und in meinen EA eingebaut.
Zum Testen habe ich das in einen EA-Rumpf verpackt. Hier der komplette Code.
Code:
//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//+------------------------------------------------------------------+

#define PROGNAME "MyProfitableEA"

bool    trading_enabled,        // Globale Variable zum Ein- und Ausschalten
        trading_ENABLED;        // vorheriger Status um Dauermeldungen zu vermeiden


int OnInit()
{
   InitTrading(PROGNAME);
   
   //
   //
   //
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
}

void OnTick()
{
   if(!GetTradeEnabled()) return;
   
   //
   //
   //
}

//+------------------------------------------------------------------+
//|  ab hier gehört das in eine Bibliotheksdatei zB MyUtils.mqh      |
//+------------------------------------------------------------------+

string Progname;

void InitTrading(string aProgname)
{
   Progname=aProgname;
   trading_enabled=GlobalVarGetAsBool(Progname, true);
   trading_ENABLED=trading_enabled;
   if(!trading_enabled)
      Print(Progname," ist ausgeschaltet. Mit F3 einschalten!"); 
}

bool GetTradeEnabled()
{
   trading_enabled=GlobalVarGetAsBool(Progname, true);
   if(trading_ENABLED!=trading_enabled)
      {
        trading_ENABLED=trading_enabled;
        Print("EA wurde durch Globalvariable '",Progname,"' ",trading_enabled?"EIN":"AUS","geschaltet.");
      }
   return(trading_enabled);
}

bool GlobalVarGetAsBool(string aVarName, bool aDefault=false)
{
   if(GlobalVariableCheck(aVarName))                        // Variable vorhanden ?
      return(GlobalVariableGet(aVarName)==0.0?false:true);  // JA - Wert lesen und als bool übergeben
   else
      {                                                     // NEIN
       GlobalVariableSet(aVarName, aDefault?1.0:0.0);       // Wert auf aDefault setzen
       return(aDefault);                                    // aDefault übergeben
      }
}

datetime GlobalVarSetAsBool(string aVarName, bool aValue)
{
   return(GlobalVariableSet(aVarName,aValue?1.0:0.0));      // Variable auf 1.0 oder 0.0 setzen
}

void GlobalVarCheck(string aVarName, double aValue=0.0)
{
  if(!GlobalVariableCheck(aVarName))
      GlobalVariableSet  (aVarName, aValue);
}
Ist natürlich zur freien Verwendung!
Erweiterungen (wie zB. auch den Symbolnamen ausgegeben) sind ja möglich.
Viel Erfolg damit