Checken ob es offene Trades gibt - Seite 2

 
BlauesQ:
Auch wenn ich offene Positionen abfrage, wenn ein SL/TP ausgelöst wird, ignoriert er einfach ALLES. Ich versteh es nicht. Ich habe mehrere Alerts eingebaut, die mir vor dem Auslösen eine Nachricht geben sollen. Auch diese erscheinen nicht. Anbei mal der Code

hast Du schon den Debugger probiert?

 
BlauesQ:
Auch wenn ich offene Positionen abfrage, wenn ein SL/TP ausgelöst wird, ignoriert er einfach ALLES. Ich versteh es nicht. Ich habe mehrere Alerts eingebaut, die mir vor dem Auslösen eine Nachricht geben sollen. Auch diese erscheinen nicht. Anbei mal der Code

Vielleicht suchst Du das: https://www.mql5.com/de/docs/event_handlers/ontradetransaction

Dokumentation zu MQL5: Ereignisbehandlung / OnTradeTransaction
Dokumentation zu MQL5: Ereignisbehandlung / OnTradeTransaction
  • www.mql5.com
OnTradeTransaction - Ereignisbehandlung - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
BlauesQ:

Ich denke ich erkenne das Problem:

Beispiel: H1 ist gewählt. Wenn es einen TakeProfit oder StopLoss gibt innerhalb eines Candlesticks, dann führt er danach ungefiltert neue Trades aus. Dann erkennt er nicht, das es bereits existierende Positionen gibt.

Ich müsste nun wohl eine Funktion einbauen, die ptüft, ob ein SL/TP ausgelöst wurde und dann mittels return; zurückspringt. Damit würde wohl sichergestellt werden, dass der Barcheck ausgeführt wird.

Du könntest ein String Signal oder eine Enumeration einführen, die auf "nicht handeln" gesetzt wird wenn eine Position getätigt wird, aber nur wieder auf "handeln" zurückgeht, wenn ein neuer Bar generiert wird.
Die Bedingung verbaust Du dann bei Deinen anderen Kaufbedingungen.

Von der Terminologie her musst Du aufpassen: wenn Du vorher nur eine Position offen hattest und dann SL oder TP ausgelöst wurde, hast Du keine Position mehr, Punkt. Du hast dann aber einen Deal in der Historie, wo DEAL_REASON_SL bzw. TP steht.

 
BlauesQ:

Hallo,


ich habe mich heute am Beispiel hier versucht: https://www.mql5.com/de/articles/100

Eigentlich ist diese Funktion ja eingebaut, aber sie scheint nicht zu laufen. Hier sieht man, dass trotzdem neue Order ausgeführt werden:


Was ist an dem Code fehlerhaft?

Da ist definitiv etwas fehlerhaft. Du solltest mal in dem Artikel ganz runter scrollen und klick auf "Diskussion im Händlerforum" was die Leute da schreiben. Dort hat ihn jemand schlussendlich nochmal überarbeitet.