Eigentlich sollten/müssen die EAs jeweils eine eigene Magicnummer haben, damit jeder EA seine eignen Positionen, Orders, ... erkennt und von den anderen unterscheiden kann.
Manche EAs erlauben das einstellen der Magicnummer in den Einstellungen.
Eigentlich sollten/müssen die EAs jeweils eine eigene Magicnummer haben, damit jeder EA seine eignen Positionen, Orders, ... erkennt und von den anderen unterscheiden kann.
Manche EAs erlauben das einstellen der Magicnummer in den Einstellungen.
Hallo Carl,
- es gibt mehrere EAs (EA01, EA02, EA 03 etc.), die sich um das Erstellen (verschiedene Strategieren) und das Ordermanagement (Trailing, Break-Even etc.) kümmern. Jeder hat eine eigene Magic.
- Dann gibt es EINEN SEPARATEN EA, der den Gesamtprofit ALLER offenen Orders prüft um bei bestimmten Fällen einzugreifen (Eur-Basket unterschreitet bestimmte Verlustgrenze --> Schließen, etc.)
Dieser separate EA (der keine Orders erstellt oder trailt etc.) prüft also den gesamten Magic-Nummernkreis der anderen EAs ab (EA 01, EA 02, EA 03 etc.).
Für die Kontrolle des Gesamtprofits der offenen Orders würde es meiner Meinung nach keinen Sinn machen, jeden einzelnen EA damit zu beauftragen. Deswegen habe ich diese Aufgabe an einen einzigen, separaten EA ausgelagert.
Prinzipiell klappt es wunderbar, bis auf die wenigen Fehlermeldung, die ich bekomme, wenn ein gleich zeitiger Zugriff von beiden EAsauf die gleiche Ordererfolgt.
- Wie gesagt, ich vermute, dass GLEICHZEITIGE Zugriffe auf die selbe Order öfter erfolgen als man merkt. Obwohl nur wenige Fehlermeldungen (Order is locked) ausgegeben werden. Deswegen vermute ich einen Unterschied bei der Art des Zugriffs.
- Punkt 2 ist, dass in wenigen Fällen vorgekommen ist, dass eine Order für z. B. 2 Sekunden gelockt ist. Das sehe ich an den Fehlermeldungen im Log, wenn ein weiterer Zugriff verhindert.
Hier ginge es mir vor allem darum, eine gelockte Order bereits nach z. B. 0,5 Sekunden wieder freizugeben, auch, wenn die Aktion noch nicht erledigt ist.
Ich hoffe, dass ich meine Absicht jetzt besser erklärt habe.
Gruß Werner
Das liegt in den Codes der EAs, wie oft sie die Situation ihrer Positionen überprüfen. Dort müsste man ansetzen.
Vielleicht ist dadurch das Auslagern an einen anderen EA doch keine so gute Idee.
Was spricht gegen eine Funktion, die über eine einzige Datei (einzubinden mit #include ...mgh) alle EAs dazu bringt, offenen Positionen auf dieselbe Art zu behandeln?
Das liegt in den Codes der EAs, wie oft sie die Situation ihrer Positionen überprüfen. Dort müsste man ansetzen.
Vielleicht ist dadurch das Auslagern an einen anderen EA doch keine so gute Idee.
Was spricht gegen eine Funktion, die über eine einzige Datei (einzubinden mit #include ...mgh) alle EAs dazu bringt, offenen Positionen auf dieselbe Art zu behandeln?
<<Was spricht gegen eine Funktion, die über eine einzige Datei (einzubinden mit #include ...mgh) alle EAs dazu bringt, offenen Positionen auf dieselbe Art zu behandeln? >>
Damit habe ich noch nicht gearbeitet und somit keine Erfahrung.
Kannst Du vielleicht einen bestimmten Link empfehlen (Artikel, Beispiel o. ä.) wo diese Vorgehensweise genauer beschrieben ist und den ich mal durcharbeiten könnte?
Wenn es halbwegs verständlich erklärt ist, dürfte ich schon klar kommen damit.
ich verstehe nicht ganz, was du mit "Order ist locked" meinst.
Ein EA blockiert keine Order. eine Abfrage über eine Order oder Position sperrt ja nix.
bist Du sicher das hier nicht was vom Broker kommt?
<<Was spricht gegen eine Funktion, die über eine einzige Datei (einzubinden mit #include ...mgh) alle EAs dazu bringt, offenen Positionen auf dieselbe Art zu behandeln? >>
Damit habe ich noch nicht gearbeitet und somit keine Erfahrung.
Kannst Du vielleicht einen bestimmten Link empfehlen (Artikel, Beispiel o. ä.) wo diese Vorgehensweise genauer beschrieben ist und den ich mal durcharbeiten könnte?
Wenn es halbwegs verständlich erklärt ist, dürfte ich schon klar kommen damit.
Gib mal in die Suchzeile der MQL5-Referenz #include ein. Eigentlich steht dort alles, was Du wissen musst.
Sonst gib hier oben rechts in die Suche #include ein - es gibt viele, viele Beispiele, ua. der MACD-EA in: C:\...\MQL5\Experts\Examples\MACD
Gib mal in die Suchzeile der MQL5-Referenz #include ein. Eigentlich steht dort alles, was Du wissen musst.
Sonst gib hier oben rechts in die Suche #include ein - es gibt viele, viele Beispiele, ua. der MACD-EA in: C:\...\MQL5\Experts\Examples\MACD
Das werde ich machen. Danke, Carl, für Deine Hilfe!
Schönen Tag noch!
Gruß
Werner
Noch was zur Info:
So weit ich weiß wird im MT5 jeder Chart nacheinander abgearbeitet.Egal wieviele EAs da laufen
ES gibt keine Synchronen Zugriffen auf das Konto.
Sprich eine Order wird immer nur zur Zeit von einem EA bearbeitet werden können.
ich verstehe nicht ganz, was du mit "Order ist locked" meinst.
Ein EA blockiert keine Order. eine Abfrage über eine Order oder Position sperrt ja nix.
bist Du sicher das hier nicht was vom Broker kommt?
Hallo Amando,
der Text der Fehlermeldung heißt "Order is locked." Die Meldung kommt dann, wenn eine weitere Aktion (OrderModify, OrderClose etc.) durchgeführt werden hätte sollen, aber abgelehnt wurde, weil die Order bereits von einem anderen Befehl belegt wird. So zumindest stelle ich mir das vor.
Kritisch sehe ich das deswegen, weil in seltenen Fällen die Order schon mal bis zu 2 Sekunden geblockt wurde. In dieser Zeit kann viel passieren.
Gruß Werner
Noch was zur Info:
So weit ich weiß wird im MT5 jeder Chart nacheinander abgearbeitet.Egal wieviele EAs da laufen
ES gibt keine Synchronen Zugriffen auf das Konto.
Sprich eine Order wird immer nur zur Zeit von einem EA bearbeitet werden können.
Hallo Christian, das wusste ich nicht. Allerdings arbeite ich jetzt noch mit dem MT4, ob es da gleich ist, kann ich nicht sagen.
Ich kann mir das aber auch kaum vorstellen. Es ist so, dass ich 32 EAs zum Testen auf einem VPS laufen habe. Manche Trades werden von verschiedenen EAs zur exakt der gleichen Zeit geöffnet, zumindest auf die Sekunde genau. Ich meine mal etwas davon gelesen zu haben, dass ein CPU mit mehreren Prozessorkernen die anstehenden Jobs verteilt und so gleichzeitig ausführen kann.
Ich werde mal im Log genauer darauf achten, ob exakt zur selben Zeit verschiedene Aktionen durchgeführt wurden.
Wahrscheinlich werde ich noch ein paar Änderungen an meinem System vornehmen (Ideen gibt es zu genüge) und dann weiter testen. Carl hat mir den Tipp mit dem Einbinden von Dateien gegeben. Da werde ich mir mal ein paar Videos ansehen und etwas rumprobieren. Mal sehen, wie weit ich kommen. Das eröffnet wieder komplett neue Möglichkeiten.
Dank Euch hier im Forum bin ich aber bereits enorm weit gekommen.
Also, schönen Abend!
Gruß Werner
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo,
ich hätte eine Verständnisfrage zu OrderSelect, vor allem dazu, für welche Art von Zugriff (durch EA) die Order exklusiv für andere Zugriffe (durch anderen EA) gesperrt ist.
Ein Beispiel:
Beide EAs greifen also per OrderSelect auf alle offenen Orders zu indem sie z. B. den Profit abfragen, prüfen, ob der SL getrailt werden kann usw.
Da es sich um verschiedene EAs handelt und der PC gleichzeitig die Aktionen beider EAs ausführen kann, besteht auch die Möglichkeit, dass eine bereits selektierte Order (durch EA 01) GLEICHZEITIG von EA 02 selektiert wird.
Wahrscheinlich erfolgen sehr viel mehr GEMEINSAME Zugriffe (durch EA 01 und EA 02) als man merkt. Bei bestimmten Zugriffen taucht aber dann im Log die Meldung "Order is locked" auf mit der Fehlernummer.
Wie unterschieden sich diese?
2 Sekunden sind eine lange Zeit, gibt es eine Möglichkeit, diese gesperrte Order nach spätestens z. B. 0,5 Sekunden wieder freizugeben?
Vielleicht hat jemand dazu Erfahrung und eine Idee, was man hier verbessern könnte.
Danke, schon mal und viele Grüße
Werner