Wer kann mir Helfen mit der MagicNumber so das ich 2 EA´s im MT5 laufen lassen kann

Dirk Schmidt
17
Dirk Schmidt  

Hallo zusammen, gibt es eine einfache Lösung das man zwei EA´s gleichzeitig laufen lassen kann ohne das sie sich die Positionen gegeneinander öffnen oder schließen.

Ja, ich habe auch schon darüber was gefunden verstehe es nur nicht bzw. bekomme es nicht hin. Bin halt Anfänger und verstehe das noch nicht alles.

Ich habe so angefangen.

#include<Trade\Trade.mqh>

#define EXPERT_MAGIC 9999

//Erstelle eine Instanz von CTrade

CTrade trade;

Dann habe ich noch die Magicnumber gesetzt

int OnInit()

{

   //Vergeben die MagicNumber

   trade.SetExpertMagicNumber(EXPERT_MAGIC);

   

   return(INIT_SUCCEEDED);

in der OnTick

Sind alle Grunddaten

und die Kauf oder Verkauf Signale

 so ungefair

       if ((CheckTradingTime()==true) && PositionsTotal()<1)          

       if (_Symbol==Symbol()) 


        signal="Kaufen";  


   if (signal =="Kaufen")

   trade.Buy(Volumen,NULL,Ask,(Ask-StoppLoss*_Point),0,NULL);

im void ist dann die Position schließen drin.


Da mein EA  mehrere Positionen öffnet und einzeln schließt, haut mir der EA 2 der dann MagicNumber 1111 hat, das alles durcheinander. Obwohl die Positionen verschiedene Magicnumbers haben.

Habe das schon mit der "for" Schleife probiert aber ich bin zu blöde dafür. 

Kann mir da einer Helfen, bzw. vorschlagen wie ich die Abfrage da schreiben muss.

Vielen Dank vorab für eure Hilfe.

Gruß Dirk.

Trades ausführen - Handelsoperationen - MetaTrader 5 Hilfe
Trades ausführen - Handelsoperationen - MetaTrader 5 Hilfe
  • www.metatrader5.com
Die Handelsaktivität in der Plattform besteht aus dem Erstellen und Senden von Market und Pending Orders um diese beim Broker auszuführen...
amando
3685
amando  
Dirk Schmidt:

Hallo zusammen, gibt es eine einfache Lösung das man zwei EA´s gleichzeitig laufen lassen kann ohne das sie sich die Positionen gegeneinander öffnen oder schließen.

Ja, ich habe auch schon darüber was gefunden verstehe es nur nicht bzw. bekomme es nicht hin. Bin halt Anfänger und verstehe das noch nicht alles.

Ich habe so angefangen.

#include<Trade\Trade.mqh>

#define EXPERT_MAGIC 9999

//Erstelle eine Instanz von CTrade

CTrade trade;

Dann habe ich noch die Magicnumber gesetzt

int OnInit()

{

   //Vergeben die MagicNumber

   trade.SetExpertMagicNumber(EXPERT_MAGIC);

   

   return(INIT_SUCCEEDED);

in der OnTick

Sind alle Grunddaten

und die Kauf oder Verkauf Signale

 so ungefair

       if ((CheckTradingTime()==true) && PositionsTotal()<1)          

       if (_Symbol==Symbol()) 


        signal="Kaufen";  


   if (signal =="Kaufen")

   trade.Buy(Volumen,NULL,Ask,(Ask-StoppLoss*_Point),0,NULL);

im void ist dann die Position schließen drin.


Da mein EA  mehrere Positionen öffnet und einzeln schließt, haut mir der EA 2 der dann MagicNumber 1111 hat, das alles durcheinander. Obwohl die Positionen verschiedene Magicnumbers haben.

Habe das schon mit der "for" Schleife probiert aber ich bin zu blöde dafür. 

Kann mir da einer Helfen, bzw. vorschlagen wie ich die Abfrage da schreiben muss.

Vielen Dank vorab für eure Hilfe.

Gruß Dirk.

Ja das geht,

du musst aber bei der weiteren behandlung die magic number abfragen, sonst nimmt er immer alles durcheinander, der ea merkt sich ja nicht was von ihm kommt, das muss man bei jedem handling abfragen

Carl Schreiber
Moderator
11825
Carl Schreiber  

Hallo,

bitte Code als Code posten mit Alt+S oder in der Editierzeile das Icon </>.

Für Anfänger empfehle ich diese wertvolle Literatur - ist ganz kostenlos:
https://www.mql5.com/de/articles/648 // Das MQL5-Kochbuch: Mehrwährungsfähiger Expert Advisor – eine einfache, saubere und schnelle Herangehensweise
https://www.mql5.com/de/articles/650 // Das MQL5-Kochbuch: Entwicklung eines mehrwährungsfähigen Expert Advisors mit unbegrenzter Anzahl von Parametern
https://www.mql5.com/de/articles/651 // Das MQL5-Kochbuch: Schreiben der Historie von Abschlüssen in eine Datei und Erstellen von Bilanzdiagrammen für jedes Symbol in Excel
https://www.mql5.com/de/articles/496 // Quickstart for newbies
https://www.mql5.com/de/articles/211 // Orders, Positions und Abschlüsse in MetaTrader 5

Außerdem: Es gibt fast nicht, was nicht schon für MQ programmiert wurde,
also vielleicht erst einmal suchen, statt es selber versuch, denn kopieren ist viel schneller als probieren.
(Oben rechts die Lupe)

Die Magic Nummer wird beim absenden eines Auftrages festgelegt und kann nicht mehr geändert werden, hier ein Beispiel: https://www.mql5.com/de/docs/trading/ordersend

Auch zu finden aus dem Editor, einfach den Kursor auf die Funktion stellen und F1 drücken.

Das MQL5-Kochbuch: Mehrwährungsfähiger Expert Advisor – eine einfache, saubere und schnelle Herangehensweise
Das MQL5-Kochbuch: Mehrwährungsfähiger Expert Advisor – eine einfache, saubere und schnelle Herangehensweise
  • www.mql5.com
In diesem Beitrag wird die Umsetzung einer einfachen Herangehensweise an einen mehrwährungsfähigen Expert Advisor beschrieben. Das heißt, Sie werden in der Lage sein, den Expert Advisor für das Testen/den Handel unter identischen Bedingungen aber mit unterschiedlichen Parametern je Symbol einzurichten. Als Beispiel erstellen wir ein Muster für zwei Symbole auf eine Weise, mit der Sie nach Bedarf zusätzliche Symbole hinzufügen können, indem Sie kleine Änderungen am Code vornehmen.
pennyhunter
271
pennyhunter  
Dirk Schmidt:

Hallo zusammen, gibt es eine einfache Lösung das man zwei EA´s gleichzeitig laufen lassen kann ohne das sie sich die Positionen gegeneinander öffnen oder schließen.

Ja, ich habe auch schon darüber was gefunden verstehe es nur nicht bzw. bekomme es nicht hin. Bin halt Anfänger und verstehe das noch nicht alles.

Ich habe so angefangen.

#include<Trade\Trade.mqh>

#define EXPERT_MAGIC 9999

//Erstelle eine Instanz von CTrade

CTrade trade;

Dann habe ich noch die Magicnumber gesetzt

int OnInit()

{

   //Vergeben die MagicNumber

   trade.SetExpertMagicNumber(EXPERT_MAGIC);

   

   return(INIT_SUCCEEDED);

in der OnTick

Sind alle Grunddaten

und die Kauf oder Verkauf Signale

 so ungefair

       if ((CheckTradingTime()==true) && PositionsTotal()<1)          

       if (_Symbol==Symbol()) 


        signal="Kaufen";  


   if (signal =="Kaufen")

   trade.Buy(Volumen,NULL,Ask,(Ask-StoppLoss*_Point),0,NULL);

im void ist dann die Position schließen drin.


Da mein EA  mehrere Positionen öffnet und einzeln schließt, haut mir der EA 2 der dann MagicNumber 1111 hat, das alles durcheinander. Obwohl die Positionen verschiedene Magicnumbers haben.

Habe das schon mit der "for" Schleife probiert aber ich bin zu blöde dafür. 

Kann mir da einer Helfen, bzw. vorschlagen wie ich die Abfrage da schreiben muss.

Vielen Dank vorab für eure Hilfe.

Gruß Dirk.

Amando Recht, abfragen musst Du sie sowieso. Du solltest aber mal in der Doku die Funktionenliste ansehen und Dir klar machen welche was kann und wie Du sie verketten kannst um welche Position, Deal, Magic, Ticket etc. abzufragen bzw. was die Unterschiede sind.
Wichtig ist auch, dass Du Grundahnung hast von Arrays und Indizes weil Du sonst nicht richtig verstehst, was eine for loop macht.
Dirk Schmidt
17
Dirk Schmidt  
pennyhunter:
Amando Recht, abfragen musst Du sie sowieso. Du solltest aber mal in der Doku die Funktionenliste ansehen und Dir klar machen welche was kann und wie Du sie verketten kannst um welche Position, Deal, Magic, Ticket etc. abzufragen bzw. was die Unterschiede sind.
Wichtig ist auch, dass Du Grundahnung hast von Arrays und Indizes weil Du sonst nicht richtig verstehst, was eine for loop macht.
Danke für die Antworten, werde mich wohl noch was intensiver damit beschäftigen müssen, natürlich verstehe ich als Anfänger  nicht alle Funktionen daher dachte ich es gibt eine Simple Lösung. Wenn ich mir aber die Dokumentationen ansehe die das Thema beschreiben wird mir schwindelig :-).
pennyhunter
271
pennyhunter  
Dirk Schmidt:
Danke für die Antworten, werde mich wohl noch was intensiver damit beschäftigen müssen, natürlich verstehe ich als Anfänger  nicht alle Funktionen daher dachte ich es gibt eine Simple Lösung. Wenn ich mir aber die Dokumentationen ansehe die das Thema beschreiben wird mir schwindelig :-).
Die Englische Doku ist übrigens einfacher zu lesen als die deutsche.
Da gibt es einen schönen Artikel "MQL5 Grundlagen Arrays" oder so.
Ein Array ist wie eine Menge von Variablen. Jeder Platz in dem Array hat einen Index. Du zählst mit der for loop also die Indizes der Werte des Arrays durch. Aber man muss sich da ein leichtes Übungsprojekt suchen und die Sache mit der for loop ein paar mal ausprobieren.

Beispiel: Du erstellst eine MqlRates für hundert Balken und prüfst bei jedem Balken ob der close wert über dem open wert liegt.

Das heißt die loop muss die hundert Balken durchzählen. Jetzt kann man auch noch die bullischen oder bearischen Balken zählen oder so.
Pay24Money
107
Pay24Money  
Dirk Schmidt:

Hallo zusammen, gibt es eine einfache Lösung das man zwei EA´s gleichzeitig laufen lassen kann ohne das sie sich die Positionen gegeneinander öffnen oder schließen.

Ja, ich habe auch schon darüber was gefunden verstehe es nur nicht bzw. bekomme es nicht hin. Bin halt Anfänger und verstehe das noch nicht alles.

Ich habe so angefangen.

#include<Trade\Trade.mqh>

#define EXPERT_MAGIC 9999

//Erstelle eine Instanz von CTrade

CTrade trade;

Dann habe ich noch die Magicnumber gesetzt

int OnInit()

{

   //Vergeben die MagicNumber

   trade.SetExpertMagicNumber(EXPERT_MAGIC);

   

   return(INIT_SUCCEEDED);

in der OnTick

Sind alle Grunddaten

und die Kauf oder Verkauf Signale

 so ungefair

       if ((CheckTradingTime()==true) && PositionsTotal()<1)          

       if (_Symbol==Symbol()) 


        signal="Kaufen";  


   if (signal =="Kaufen")

   trade.Buy(Volumen,NULL,Ask,(Ask-StoppLoss*_Point),0,NULL);

im void ist dann die Position schließen drin.


Da mein EA  mehrere Positionen öffnet und einzeln schließt, haut mir der EA 2 der dann MagicNumber 1111 hat, das alles durcheinander. Obwohl die Positionen verschiedene Magicnumbers haben.

Habe das schon mit der "for" Schleife probiert aber ich bin zu blöde dafür. 

Kann mir da einer Helfen, bzw. vorschlagen wie ich die Abfrage da schreiben muss.

Vielen Dank vorab für eure Hilfe.

Gruß Dirk.

Hallo,

verwenden Sie in OnInit  trade.SetExpertMagicNumber(Magic); Magic nicht als  #define 

Und die Trades als trade.Buy(lot,ASK,_Symbol,Stop,Takeprofit,ORDER_TIME_GTC,expiration);

eingeben.


input ulong  Magic         = 12345; // Magicnummer

int OnInit()

{

trade.SetExpertMagicNumber(Magic);

}