Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Codeschnipsel (http://www.expert-advisor.com/forum/forumdisplay.php?f=292)
-   -   Code Snippets - EA-Steuerung mittels Globalvariablen (http://www.expert-advisor.com/forum/showthread.php?t=5246)

Kronenchakra 27.10.16 17:10

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:44 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum