Wenn Code gepostet wird bitte den Code-Kopf aus der Editierzeile (</>) oder Alt+S verwenden.
Wenn ein Programm nicht tut, was es tun soll, ist der Debugger (zB. mit historischen Daten) die erste Wahl. Dazu vor den kritischen Zeilen ein DebugBreak() setzen und am Zeilen Anfang die entspr. Markierung setzen.
Hallo Carl und danke für deinen Hinweis. Habe den Code mit Alt+S eingefügt.
So wie ich das sehe kann er die Position (Buyorder_1 oder Sellorder_1) nicht schließen, da er genau in dem Moment wo die Position geschlossen wird ein gegenläufiges Signal bekommt. Um z.B. meine Sellorder zu schließen muss POSITION_TYPE_SELL=wahr sein. Spätestens ab dem Zeitpunkt wo sich die MACD Linien gegenläufig kreuzen ist POSITION_TYPE_SELL=unwahr und wir haben eine POSITION_TYPE_BUY=wahr. Da das schließen der Sellorder die gleichen Parameter hat wie das eröffnen einer Buyorder erhalte ich nie den Wert, um eine Position zu schließen. Damit "beißt sich die Katze dauerhaft in den Schwanz" und die Position kann nie geschlossen werden bis der S/L ausgelöst wird.
An meinem o.g. Beispiel ergibt es jetzt auch Sinn, wieso Buyorder_2 und Sellorder_2 funktionieren, da hier ein Signal beim kreuzen der 0 Linie erzeugt wird und die Position geschlossen wird wenn die MACD Linien sich kreuzen. Beide Signale kommen sich so gesehen nicht in die quere.
Ich bin mir sicher, dass auch Buyorder_1 und Sellorder_1 funktionieren können nur habe ich anscheinend ein Brett vorm Kopf und kann es nicht lösen. Sitze seit Tagen dran und habe mich nun entschlossen hier zu fragen. Manchmal schaut sich wer anders den Code an und erkennt sofort die Lösung (die Hoffnung stirbt zuletzt) :)
Hallo Carl und danke für deinen Hinweis. Habe den Code mit Alt+S eingefügt.
So wie ich das sehe kann er die Position (Buyorder_1 oder Sellorder_1) nicht schließen, da er genau in dem Moment wo die Position geschlossen wird ein gegenläufiges Signal bekommt. Um z.B. meine Sellorder zu schließen muss POSITION_TYPE_SELL=wahr sein. Spätestens ab dem Zeitpunkt wo sich die MACD Linien gegenläufig kreuzen ist POSITION_TYPE_SELL=unwahr und wir haben eine POSITION_TYPE_BUY=wahr. Da das schließen der Sellorder die gleichen Parameter hat wie das eröffnen einer Buyorder erhalte ich nie den Wert, um eine Position zu schließen. Damit "beißt sich die Katze dauerhaft in den Schwanz" und die Position kann nie geschlossen werden bis der S/L ausgelöst wird.
An meinem o.g. Beispiel ergibt es jetzt auch Sinn, wieso Buyorder_2 und Sellorder_2 funktionieren, da hier ein Signal beim kreuzen der 0 Linie erzeugt wird und die Position geschlossen wird wenn die MACD Linien sich kreuzen. Beide Signale kommen sich so gesehen nicht in die quere.
Ich bin mir sicher, dass auch Buyorder_1 und Sellorder_1 funktionieren können nur habe ich anscheinend ein Brett vorm Kopf und kann es nicht lösen. Sitze seit Tagen dran und habe mich nun entschlossen hier zu fragen. Manchmal schaut sich wer anders den Code an und erkennt sofort die Lösung (die Hoffnung stirbt zuletzt) :)
Dann schau Dir Deine if-Struktur an.
Übrigens MT5 hat ein MACD-EA als Beispiel mit im Paket und wahscheinlich auch im Fundus von MQ - such mal (oben rechts die Lupe).
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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 zusammen,
ich bastel gerade einen alten EA um. Er soll in 2 Fällen eine Buyorder und in 2 anderen Fällen eine Sellorder auslösen.
Buyorder_1 wenn MACD Linie unterhalb 0 die Signallinie von unten nach oben kreuzt oder Buyorder_2 wenn MACD Linie von unten nach oben die 0 kreuzt.
Sellorder_1 wenn MACD Linie oberhalb 0 die Signallinie von oben nach unten kreuzt oder Sellorder_2 wenn MACD Linie von oben nach unten die 0 kreuzt.
Position schließen im Falle einer Buyorder: MACD Linie kreuzt von oben nach unten die MACD Signallinie
Position schließen im Falle einer Sellorder: MACD Linie kreuzt von unten nach oben die MACD Signallinie
Im folgenden Codeschnipsel funktioniert bisher nur das öffnen und schließen der Positionen bei der Buyorder_2 und Sellorder_2. Aktiviere ich nun die Buyorder_1 indem ich die // wegnehme, oder nehme ich Buyorder_1 testweise komplett raus funktioniert es nicht.
Ich vermute schon woran es liegen könnte habe aber keine Idee, wie ich es lösen kann. Vielleicht ist hier jemand, der den Code etwas "umstellen" kann, sodass es funktioniert. Ich wäre euch sehr dankbar.
LG und bleibt gesund
Niko