Vorerst herzlichen Dank an den Admin, der hier ein neues Kapitel aufgetan hat!
Die Abfrage ob auf einem Account maschinelles handeln erlaubt ist oder nicht, ist natürlich bei einem EA auch wichtig und informiert den Anwender.
Ich denke, das ist auch ein gutes Beispiel mit wenig Code logische Werte umzudrehen, um dann das Programm leichter lesbar zu gestalten.
Diesen Code zB. in die 'MyUtils.mqh' einfügen:
Code:
string AccountString()
{
return(AccountInfoString (ACCOUNT_COMPANY)+" | "+
AccountInfoString (ACCOUNT_SERVER )+" | "+
AccountInfoString (ACCOUNT_NAME )+" | "+
(string)AccountInfoInteger(ACCOUNT_LOGIN ));
}
bool AccountExpertAllowed()
{
if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
{
Alert("Autotrading in the terminal is disabled, Expert Advisor will be removed.");
return(false);
}
if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
{
Alert(AccountString()+" | Error: Trading not allowed.");
return(false);
}
if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
{
Alert(AccountString()+" | Error: Experts not allowed.");
return(false);
}
return(true);
}
bool AccountExpertForbidden()
{
return(!AccountExpertAllowed());
}
AccountString() kann man natürlich auch einfacher gestalten.
Und so wird's verwendet:
Code:
int OnInit()
{
if(AccountExpertForbidden())
{
ExpertRemove();
return(INIT_FAILED);
}
//.......
return(INIT_SUCCEEDED);
}
Anmerkung: Sämtliche Bibliotheksfunktionen die ich hier poste sind relativ jung.
Da können sich natürlich auch Fehler einschleichen.
Jeder der hier Fehler findet oder Verbesserungsvorschläge hat, ist herzlich dazu eingeladen diese zu posten.
Liebe Grüße und evtl. kann's jemand brauchen.