Mein Experte startet Trades ohne mein Zutun- hat jemand eine Idee?

 

Hallo zusammen,

ich programmiere schon seit langem an einem umfangreichen Experten, der mich unterstützen soll (kein Robot!).
Nun ist es seit längerer Zeit so, dass typischerweise in Momenten größerer Aktivität, nachdem ich manuell- oder mein Experte automatisch - einen Trade gestoppt habe (NICHT DURCH TP!), selbsttätig und ohne mein Zutun ein Trade in die Gegenrichtung gestartet wird- mit dem gleichen Volumen, mit dem der gestoppte beendet wurde.
Das konnte ich auch schon erfolgreich beweisen, indem ich in die einzige "OrderSend" Routines des Programms einen DebugHaltepunkt setzte, der NICHT erreicht wurde.
D.h. entweder Mt5, der Broker oder das Börsenprogramm selber startet Sekunden nach meinem Stop diese gegenläufigen Trades.
Häufigkeit?  in ca. 10% oder mehr der Fälle.
Besonders häufig tritt der Effekt bei Trades mit mehr als einem Volume auf.
Ich vermute, dass der Trade durch die CTrade-Routine, die ich verwende, nicht vollständig "abgeräumt" wird, sondern TP  stehenbleibt und das tut, zu dem er beauftragt war - nämlich bei Erreichen durch einen gegenläufigen Trade den ursprünglichen zu stoppen- Nur dass es den nicht mehr gibt!
Wie kriege ich zuverlässig TP und SL erschlagen?
Weiß jemand Rat?

 
werner111053:

Weiß jemand Rat?


Hallo Werner,

ohne dass du zumindest einen Teil deines Codes hier postest kann dir wohl niemand weiterhelfen.

 
macht er wenigstens gewinne? 
 

Hallo Werner,

versuch doch mal über die Comment(..) Ausgabe mit den wichtigen Parametern eine visuelle Rückmeldung nach

Trade Ende zu erhalten. Dazu gehört u.a. auch die Anzahl der offenen Positionen (z.B. mit  posTotal = PositionsTotal())

Wenn die fragliche Position geschlossen ist (posTotal =0) mit ExpertRemove() hart aussteigen. Wenn danach noch der Effekt

der Tradeumkehr eintritt, liegt das Problem woanders.

Keine Lösung, aber Hinweis -viel Erfolg!

 
werner111053:

Hallo zusammen,

ich programmiere schon seit langem an einem umfangreichen Experten, der mich unterstützen soll (kein Robot!).
Nun ist es seit längerer Zeit so, dass typischerweise in Momenten größerer Aktivität, nachdem ich manuell- oder mein Experte automatisch - einen Trade gestoppt habe (NICHT DURCH TP!), selbsttätig und ohne mein Zutun ein Trade in die Gegenrichtung gestartet wird- mit dem gleichen Volumen, mit dem der gestoppte beendet wurde.
Das konnte ich auch schon erfolgreich beweisen, indem ich in die einzige "OrderSend" Routines des Programms einen DebugHaltepunkt setzte, der NICHT erreicht wurde.
D.h. entweder Mt5, der Broker oder das Börsenprogramm selber startet Sekunden nach meinem Stop diese gegenläufigen Trades.
Häufigkeit?  in ca. 10% oder mehr der Fälle.
Besonders häufig tritt der Effekt bei Trades mit mehr als einem Volume auf.
Ich vermute, dass der Trade durch die CTrade-Routine, die ich verwende, nicht vollständig "abgeräumt" wird, sondern TP  stehenbleibt und das tut, zu dem er beauftragt war - nämlich bei Erreichen durch einen gegenläufigen Trade den ursprünglichen zu stoppen- Nur dass es den nicht mehr gibt!
Wie kriege ich zuverlässig TP und SL erschlagen?
Weiß jemand Rat?


Poste mal einen Ausschnitt det logs in dem betreffenden Zeitraum


Gruß Christian

 

Hallo zusammen,
das war wirklich ein ärgerlicher Effekt. Vielen Dank dass ihr euch damit beschäftigt habt. Hat mich Nerven gekostet, denn damit live zu gehen?  undenkbar.
Des Rätsels Lösung war, dass der TP sehr nah gesetzt war - um 7 Ticks. 
Wenn viel los war, Amis nach 15:30 z.b., dann wurde wohl des öfteren TP gerissen während ich versuchte manuell zu stoppen.

Und jetzt kommts:

Meine Taste für Tradebeginn Long/Short wird bei laufendem Trade zur großen Stop-Taste.

Wenn ich diese jetzt 1/10 nach TP  gedrückt habe, hatte ich noch keine sichtbare Reaktion auf dem Screen, der Trade wurde beendet, aber Mt5 vergisst nichts und nahm den Klick, der als Stop gedacht war, als neuen Tradestart.
Als mir diese Möglichkeit klar wurde, habe ich TP auf 20 Ticks gesetzt und siehe da:
Kein Folgetrade mehr.

Vielen Dank für Eure Hilfeangebote!

Gerade liege ich mit Metaquotes im Clinch, weil sie es sich im Demo zu einfach machen und ziemlich sicher immer "Last" als price geben, egal ob man long oder short geht.
Wie wohl jeder weiß, bekommt man bei marketorders den nächsten price aus dem Orderbook (ask bei long und bid bei short).
Dadurch fängt man sich fast immer bei tradebeginn den spread ein.
Nicht so bei MT5.
Eröffne dort einen Trade und schließe ihn gleich wieder- zahlst nur die commission.
Ich weiß, das ist bei CFDs anders, aber ich trade futures- und da reißt du mit Demo Bäume aus, aber es gibt ein böses Erwachen im Live.
Meines Erachtens und gutem Willen eine Mini-Änderung im Mt5, dann wird man nicht auf falsche Fährten gelockt.
Werner

 
werner111053:

Hallo zusammen,
das war wirklich ein ärgerlicher Effekt. Vielen Dank dass ihr euch damit beschäftigt habt. Hat mich Nerven gekostet, denn damit live zu gehen?  undenkbar.
Des Rätsels Lösung war, dass der TP sehr nah gesetzt war - um 7 Ticks. 
Wenn viel los war, Amis nach 15:30 z.b., dann wurde wohl des öfteren TP gerissen während ich versuchte manuell zu stoppen.

Und jetzt kommts:

Meine Taste für Tradebeginn Long/Short wird bei laufendem Trade zur großen Stop-Taste.

Wenn ich diese jetzt 1/10 nach TP  gedrückt habe, hatte ich noch keine sichtbare Reaktion auf dem Screen, der Trade wurde beendet, aber Mt5 vergisst nichts und nahm den Klick, der als Stop gedacht war, als neuen Tradestart.
Als mir diese Möglichkeit klar wurde, habe ich TP auf 20 Ticks gesetzt und siehe da:
Kein Folgetrade mehr.

Vielen Dank für Eure Hilfeangebote!

Gerade liege ich mit Metaquotes im Clinch, weil sie es sich im Demo zu einfach machen und ziemlich sicher immer "Last" als price geben, egal ob man long oder short geht.
Wie wohl jeder weiß, bekommt man bei marketorders den nächsten price aus dem Orderbook (ask bei long und bid bei short).
Dadurch fängt man sich fast immer bei tradebeginn den spread ein.
Nicht so bei MT5.
Eröffne dort einen Trade und schließe ihn gleich wieder- zahlst nur die commission.
Ich weiß, das ist bei CFDs anders, aber ich trade futures- und da reißt du mit Demo Bäume aus, aber es gibt ein böses Erwachen im Live.
Meines Erachtens und gutem Willen eine Mini-Änderung im Mt5, dann wird man nicht auf falsche Fährten gelockt.
Werner

also wenn liegt das an deinem Broker, MT5 rechnet bei Buy mit Ask und bei Sell mit Bid

wenn das anders ist musst du dich mit deinem Broker auseinandersetzen.

Den Spread fängst Du dir beim öffnen und schliessen ein, nicht nur beim öffnen

 
amando:

also wenn liegt das an deinem Broker, MT5 rechnet bei Buy mit Ask und bei Sell mit Bid

wenn das anders ist musst du dich mit deinem Broker auseinandersetzen.

Den Spread fängst Du dir beim öffnen und schliessen ein, nicht nur beim öffnen

Hallo amando,
Wahrscheinlich ist es wirklich der Broker, der die Simulation einer "matching machine" falsch betreibt (habe in diesem Punkt leider nicht viel Ahnung). Mit dem mag ich nicht diskutieren.
Warum rege ich mich so auf?   Weil ich als Entwickler eines EA auf ein völlig falsches Gleis gelockt wurde und viel Zeit in eine Entwicklung gesteckt habe,
die in Demo performt wie verrückt, aber in Live immer mindestens einen Tick oder zwei (den Spread) schlechter ist. Kostet nicht nur Zeit, sondern auch Geld.

Aber ich möchte Dich in einem korrigieren:
Du zahlst im Laufe eines Trades EIN mal den Spread.

Einfachste Art es zu demonstrieren:
Spread ist definiert als Unterschied zwischen ask und bid.

Der Spread soll 1 betragen.

ask liegt bei 100, bid bei 99. du gehst market long, zahlst 100. Nach einem Wimpernschlag schliesst du den Trade, bekommst bid. Aus, Differenz 1, nicht 2.
Viele Grüße
Werner


 

Werner, das Problem könnte auch an der Latenzzeit liegen. Bildlich gesprochen wird quasi gleichzeitig 1.) die offene Position vom Server geschlossen und 2.) Du schließt sie auf der anderen Seite manuell. Da anscheinend zB. eine Kaufposition durch einen Verkauf von Dir geschlossen wird, kommt Deine Verkaufsorder beim Server an, trifft aber nicht auf eine offene Kaufposition und so öffnet der Server einen neue Verkaufsposition.

Doppel gemoppelt führt hier nicht zum Ziel.

Aber ob das so passiert ist hängt (wahrscheinlich) von verschiedenen anderen Dingen ab, zB. Netting oder Heding-Konto, wie hast Du die Position geschlossen (mit oder ohne Ticket-Nummer), ...

Hast Du mal im Journal-Tab die genaue Zeitabfolge kontrolliert?

MT5 kennt ja bezüglich eines Auftrage jetzt drei Zustände: Deal, Transaction und Position und alles sollte mit 1000-tel Sekunden dokumentiert sein!

Schimpf nicht auf die Broker, meist liegt der Fehler bei einem selbst und daran, dass man falsche Annahmen hat, wie der Ablauf sein sollte.

 
werner111053:


Aber ich möchte Dich in einem korrigieren:
Du zahlst im Laufe eines Trades EIN mal den Spread.

Einfachste Art es zu demonstrieren:
Spread ist definiert als Unterschied zwischen ask und bid.

Der Spread soll 1 betragen.

ask liegt bei 100, bid bei 99. du gehst market long, zahlst 100. Nach einem Wimpernschlag schliesst du den Trade, bekommst bid. Aus, Differenz 1, nicht 2.
Viele Grüße
Werner


Tja, da muss ich dich leider entäuschen. Du zahlst 2 mal ;-)

auch wenn man das nur schwer versteht. ist leider so. Darum gibts ja auch bei einem Wechsel der Richtung die Funktion CloseBy

Grund der Beschwerde: