27.10.16
|
Gesperrter Benutzer
|
|
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
|
|
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
|