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 - AccountExpertAllowed (http://www.expert-advisor.com/forum/showthread.php?t=5235)

Kronenchakra 23.10.16 04:07

Code Snippets - AccountExpertAllowed
 
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.

marquez 27.10.16 03:18

Bist Du Dir eigentlich sicher, dass nach dem Expertremove Dein return(INIT_FAILED) überhaupt noch ausgeführt wird ?

Und ich hab mir angewöhnt als bsp. nicht immer alles direkt als Alert auszugeben, sondern per Input vom Indi / EA eine Option einzubauen, ob das ganze als Alert oder Print ausgegeben werden soll.

Bsp:
Wenn Du Deine Routine nimmst, den Expert enabled hast (also trade allowed), dann 10 Währungspaare nutzt, die Abfrage im Init kommt, Du aber vorm beenden vom MT Dein allowed abschaltest. Danach den MT startest ohne dass dann allowed aktiv ist, hauen Dir alle 10 Assets einen Alarm um die Ohren !

Kronenchakra 27.10.16 11:10

Ja das stimmt!
Alert ist halt die wirkungsvollste Art mich zu informieren, daß was nicht passt.
Es sind ja Codebeispiele die jeder seinen Bedürfnissen anpasssen kann.
Das wesentlich hier ist ja die Abfrage der Einstellungen.
Ich trage hier so Schnipsel zusammen, nach denen ich oft lange gesucht habe,
oder zufällig darauf gestoßen bin.
Danke für das Feedback
Liebe Grüße


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:01 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