failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 1.09905, tp: 1.10125 [Invalid parameters] Was tun?
Ganz verstehe ich das Szenario nicht, aber wenn der Kurs plötzlich nach oben (unten) schießt, dann ist er vielleicht plötzlich über dem TP (oder unter dem SL)?
Also mach Dir komplette Ausdrücke mit den aktuellen Bid und Ask.
Bekomme bei 1-2 ausgeführten PendingOrders (wenn der kurs radikal in die Höhe schiesst, scheint zumindest so) diesen retcode:
2019.02.17 21:29:58.078 2016.03.10 16:00:06 failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 1.09905, tp: 1.10125 [Invalid parameters]
Stelle bereits sicher,dass ein SL&TP bereits da sind mit:
Stop & FreezeLevel sind 0 bei diesem Symbol..
Jmd nh idee was ich machen kann?
Da steht, das du beim modify eine Lotsize von 0,00 nicht ändern kannst.
Du musst auch die Lot in die modify einbinden, es reicht zu sagen, das die neue Lotsize die alte Lotsize ist
ModifyTpLongrequest.volume = GositionGetDouble(POSITION_VOLUME);
(ungetestet)
Da steht, das du beim modify eine Lotsize von 0,00 nicht ändern kannst.
Du musst auch die Lot in die modify einbinden, es reicht zu sagen, das die neue Lotsize die alte Lotsize ist
(ungetestet)
Um dies richtige Antwort noch zu verbessern kannst du auch die Size komplett weglassen.
Siehe hier ->https://www.mql5.com/de/docs/standardlibrary/tradeclasses/ctrade/ctradeordermodify

- www.mql5.com
Um dies richtige Antwort noch zu verbessern kannst du auch die Size komplett weglassen.
Siehe hier ->https://www.mql5.com/de/docs/standardlibrary/tradeclasses/ctrade/ctradeordermodify
Ich korregiere mich . Die Order war ja schon ausgeführt also PositionModify
https://www.mql5.com/de/docs/standardlibrary/tradeclasses/ctrade/ctradepositionmodify

- www.mql5.com
Gerade alle preise printen lassen
Hier ein Beispiel(kompletter Journalverlauf der Position)
2019.02.18 14:59:39.887 2016.03.03 14:00:19 deal #15 sell 0.01 EURUSD Tickstory at 1.08990 done (based on order #31)
2019.02.18 14:59:39.887 2016.03.03 14:00:19 deal performed [#15 sell 0.01 EURUSD Tickstory at 1.08990]
2019.02.18 14:59:39.887 2016.03.03 14:00:19 order performed sell 0.01 at 1.08990 [#31 sell 0.01 EURUSD Tickstory at 1.08990]
2019.02.18 14:59:39.888 2016.03.03 14:00:19 failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 1.08791, tp: 1.08990 [Invalid parameters]
(im Fenster Operationen findet sich kein einziger eintrag für diese Order, auf #30 folgt sofort #32)
in der Historie steht nur, dass diese Sell Order bei 1.08990 als in den Take Profit reingelaufen ist.
Die Order davor ist eine BuyStop (das Chartbild zeigt, dass diese genau dort endet, wo besagte Sell Order geöffnet wird, also gehe ich davon aus, dass mit "Sell" oben die Auflösung der BuyStop Order gemeint ist)
Wenn dem so ist, ist dass der Verlauf
2019.02.18 14:59:39.818 2016.03.03 12:00:18 order [#30 buy stop 0.01 EURUSD Tickstory at 1.08790] triggered 2019.02.18 14:59:39.818 2016.03.03 12:00:18 deal #14 buy 0.01 EURUSD Tickstory at 1.08790 done (based on order #30) 2019.02.18 14:59:39.818 2016.03.03 12:00:18 deal performed [#14 buy 0.01 EURUSD Tickstory at 1.08790] 2019.02.18 14:59:39.818 2016.03.03 12:00:18 order performed buy 0.01 at 1.08790 [#30 buy stop 0.01 EURUSD Tickstory at 1.08790] [...] 2019.02.18 14:59:39.883 2016.03.03 14:00:16 1.087==SL,NR1 (BUY)&& Ask==1.08977ticket==30 2019.02.18 14:59:39.883 2016.03.03 14:00:16 1.0899==TP,NR1 (BUY)&& Ask==1.08977ticket==30 2019.02.18 14:59:39.883 2016.03.03 14:00:16 position modified [#30 buy 0.01 EURUSD Tickstory 1.08790 sl: 1.08777 tp: 1.08990] 2019.02.18 14:59:39.884 2016.03.03 14:00:16 1.087==SL,NR2 (BUY)&& Ask==1.08977ticket==30 2019.02.18 14:59:39.884 2016.03.03 14:00:16 1.0899==TP,NR2 (BUY)&& Ask==1.08977ticket==30 2019.02.18 14:59:39.885 2016.03.03 14:00:19 1.08777==SL,NR1 (BUY)&& Ask==1.08978ticket==30 2019.02.18 14:59:39.886 2016.03.03 14:00:19 1.0899==TP,NR1 (BUY)&& Ask==1.08978ticket==30 2019.02.18 14:59:39.886 2016.03.03 14:00:19 position modified [#30 buy 0.01 EURUSD Tickstory 1.08790 sl: 1.08778 tp: 1.08990] 2019.02.18 14:59:39.886 2016.03.03 14:00:19 1.08777==SL,NR2 (BUY)&& Ask==1.08979ticket==30 2019.02.18 14:59:39.886 2016.03.03 14:00:19 1.0899==TP,NR2 (BUY)&& Ask==1.08979ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 position modified [#30 buy 0.01 EURUSD Tickstory 1.08790 sl: 1.08787 tp: 1.08990] 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.08786==SL,NR2 (BUY)&& Ask==1.08988ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.0899==TP,NR2 (BUY)&& Ask==1.08988ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.08787==SL,NR1 (BUY)&& Ask==1.08989ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.0899==TP,NR1 (BUY)&& Ask==1.08989ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 position modified [#30 buy 0.01 EURUSD Tickstory 1.08790 sl: 1.08789 tp: 1.08990] 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.08787==SL,NR2 (BUY)&& Ask==1.08989ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.0899==TP,NR2 (BUY)&& Ask==1.08989ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.08789==SL,NR1 (BUY)&& Ask==1.0899ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.0899==TP,NR1 (BUY)&& Ask==1.0899ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 position modified [#30 buy 0.01 EURUSD Tickstory 1.08790 sl: 1.08790 tp: 1.08990] 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.08789==SL,NR2 (BUY)&& Ask==1.08991ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.0899==TP,NR2 (BUY)&& Ask==1.08991ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.0879==SL,NR1 (BUY)&& Ask==1.08991ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 1.0899==TP,NR1 (BUY)&& Ask==1.08991ticket==30 2019.02.18 14:59:39.887 2016.03.03 14:00:19 take profit triggered #30 buy 0.01 EURUSD Tickstory 1.08790 sl: 1.08790 tp: 1.08990 [#31 sell 0.01 EURUSD Tickstory at 1.08990] 2019.02.18 14:59:39.887 2016.03.03 14:00:19 deal #15 sell 0.01 EURUSD Tickstory at 1.08990 done (based on order #31) 2019.02.18 14:59:39.887 2016.03.03 14:00:19 deal performed [#15 sell 0.01 EURUSD Tickstory at 1.08990] 2019.02.18 14:59:39.887 2016.03.03 14:00:19 order performed sell 0.01 at 1.08990 [#31 sell 0.01 EURUSD Tickstory at 1.08990] 2019.02.18 14:59:39.888 2016.03.03 14:00:19 failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 1.08791, tp: 1.08990 [Invalid parameters] 2019.02.18 14:59:39.888 2016.03.03 14:00:19 1.0879==SL,NR2 (BUY)&& Ask==1.08992ticket==30 2019.02.18 14:59:39.888 2016.03.03 14:00:19 1.0899==TP,NR2 (BUY)&& Ask==1.08992ticket==30
danach hört man gar nichts mehr von der Order...
demnach ließe sich auch etwas im Operations Fenster finden:
Hier das Chartbild: (oben links sind die letzten Distanzen von Modify Signal (0,0018), von Jetzigem Preis (0,00165), und von TakeProfit (0.002) zum Eröffnugspreis der Position angegeben)
(da die Order geschlossen ist, bleibt der Comment bis zur nächsten Sell Order so...)
interessant ist jedoch auch, dass ich diese werte als comment nur im Falle einer SellPosition ausgeben lassen habe
(Hat sich also die BuyStop in eine SellPosition verwandelt?)
Woran kann das Liegen?
Ich korregiere mich . Die Order war ja schon ausgeführt also PositionModify
https://www.mql5.com/de/docs/standardlibrary/tradeclasses/ctrade/ctradepositionmodify
gerade getestet, ändert leider nichts :( und im Trade.mql ist auch nichts von der Lotsize zu finden,
Wenn ich den Retcode ausgebe bei dem Hauptfehler:
2019.02.18 16:26:52.518 2016.02.26 16:00:10 1.09637==TP,NR0 (SELL)&& Bid==1.09672ticket==25
2019.02.18 16:28:30.864 2016.05.11 16:00:21 failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 1.14042, tp: 1.14248 [Invalid parameters]
2019.02.18 16:28:30.864 2016.05.11 16:00:21 3
Weiterer Fehler (speziell beim Short Trail) er kommt folgender Zeile Vorbei (Print gibt auch nichts anderes mehr als die gleiche stelle aus):
(ist der Code für das signal: wenn der Bid 90% des TP erreicht hat//AB HIER Kommt der Code nicht durch!! if (NormalizeDouble((OpenPrice-TP)*sigshortModify,_Digits)<=NormalizeDouble(OpenPrice-Bid,_Digits)){
kompletter code:
if (PositionSelectByTicket(ticket) && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && PositionGetInteger(POSITION_MAGIC)==MagicNummer )//CHECKKEN OB AUF IST { double Bid = SymbolInfoDouble(_Symbol, SYMBOL_BID), TP = PositionGetDouble(POSITION_TP), OpenPrice = PositionGetDouble(POSITION_PRICE_OPEN), SL = PositionGetDouble(POSITION_SL); bool SL_SetzenShort=false,TP_SetzenShort=false,StopsSetzen=false; if (SL!=0.0 && TP!=0.0 &&HistoryDealGetInteger(ticket,DEAL_TIME)==0) { //Prints zum Checken wo der Code weiter kommt (Die nummer nach dem SL/TP "NR0, NR1, NR2, NR3, NR4 Print(PositionGetDouble(POSITION_SL),"==SL,NR0 (SELL) Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); Print(PositionGetDouble(POSITION_TP),"==TP,NR0 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); Comment("Sig==",NormalizeDouble((OpenPrice-TP)*sigshortModify,_Digits),"Current==",NormalizeDouble(OpenPrice-Bid,_Digits),"TP==",NormalizeDouble(OpenPrice-PositionGetDouble(POSITION_TP),_Digits)); //AB HIER Kommt der Code nicht durch!! if (NormalizeDouble((OpenPrice-TP)*sigshortModify,_Digits)<=NormalizeDouble(OpenPrice-Bid,_Digits)){ if (Bid+StepShortSL<SL) { //Prints zum Checken wo der Code weiter kommt (Die nummer nach dem SL/TP "NR0, NR1, NR2, NR3, NR4 Print(PositionGetDouble(POSITION_SL),"==SL,NR1 (SELL) Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); Print(PositionGetDouble(POSITION_TP),"==TP,NR1 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); //Modifikation MqlTradeRequest ModifySlShortrequest={0}; MqlTradeResult ModifySlShortresult; ModifySlShortrequest.action= TRADE_ACTION_SLTP;; ModifySlShortrequest.position =ticket; ModifySlShortrequest.sl = Bid+StepLongSL; ModifySlShortrequest.tp = PositionGetDouble(POSITION_TP); ModifySlShortrequest.deviation=deviationPending; ModifySlShortrequest.volume=inp_Lotsize; SL_SetzenShort = OrderSend(ModifySlShortrequest,ModifySlShortresult); //Prints zum Checken wo der Code weiter kommt (Die nummer nach dem SL/TP "NR0, NR1, NR2, NR3, NR4 Print(ModifySlShortresult.retcode); Print(PositionGetDouble(POSITION_SL),"==SL,NR2 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); Print(PositionGetDouble(POSITION_TP),"==TP,NR2 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); if (((ModifySlShortresult.retcode==TRADE_RETCODE_DONE)&&(ModifySlShortresult.retcode==TRADE_RETCODE_PLACED))||(PositionGetDouble(POSITION_SL)==Bid+StepShortSL)) { //Print("Trade Placed"); //NewSL=PositionGetDouble(POSITION_SL);//Bid+StepShortSL; NewTP=TP-StepShortTP; if (NewTP<TP) { //Prints zum Checken wo der Code weiter kommt (Die nummer nach dem SL/TP "NR0, NR1, NR2, NR3, NR4 Print(PositionGetDouble(POSITION_SL),"==SL,NR3 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); Print(PositionGetDouble(POSITION_TP),"==TP,NR3 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); //Modifikation MqlTradeRequest ModifyTpShortrequest={0}; MqlTradeResult ModifyTpShortresult; ModifyTpShortrequest.action= TRADE_ACTION_SLTP;; ModifyTpShortrequest.position =ticket; ModifyTpShortrequest.sl = PositionGetDouble(POSITION_SL); ModifyTpShortrequest.tp = NewTP; ModifyTpShortrequest.deviation= deviationPending; ModifyTpShortrequest.volume=inp_Lotsize; TP_SetzenShort= OrderSend(ModifyTpShortrequest,ModifyTpShortresult); //Prints zum Checken wo der Code weiter kommt (Die nummer nach dem SL/TP "NR0, NR1, NR2, NR3, NR4 Print(ModifyTpShortresult.retcode); Print(PositionGetDouble(POSITION_SL),"==SL,NR4 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); Print(PositionGetDouble(POSITION_TP),"==TP,NR4 (SELL)&& Bid==",SymbolInfoDouble(_Symbol, SYMBOL_BID),"ticket==",ticket); } } } } } } } }/*
Du musst immer aufpassen über was geredet wird
mql5 unterscheidet zwischen orders, positionen und deals
Modifizieren kannst du orders und deals
jenachdem ob du dich im hedge oder netting modus befindest kannst du eine oder mehrere positionen haben
orderd kannst du unendlich haben
wenn du im netting modus bist, dann ist eine buystoporder der stoploss einer sell order bei gleicher lotsize
eine buylimit ist der take profit einer sellorder bei gleicher lotsize
wenn jetzt der stoploss und die buystop gleich ist kann ich dir nicht sagen was zuerst passiert oder ob dann eine gegenposition aufgebaut wird. Arbeite nur im heding modus
gerade getestet, ändert leider nichts :( und im Trade.mql ist auch nichts von der Lotsize zu finden,
Und warum möchtest du das Rad neu erfinden ?
Du machst was falsch oder verstehst noch nicht die OrderSend() Funktion
Die Request Actions für SL/TP ändern sich bei Order und Position !
Nutze doch die Beispiele .
Immer das Rad neu erfinden macht wenig Sinn und Spass.
https://www.mql5.com/de/docs/constants/tradingconstants/enum_trade_request_actions
Auf jeden Fall sind deine Parameter im Request falsch. Sagt auch die Fehlermeldung.
ModifyTpShortrequest.volume=inp_Lotsize;???
Nutze den Debugger für sowas .
Breakpoint in Abfrage für den Returncode. Bei Fehler guckst du dir die komplette
ModifySlShortrequest
Struktur an .
Und eine Bitte :
Erst ein Problem Lösen dann das nächste

- www.mql5.com

- 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.
Bekomme bei 1-2 ausgeführten PendingOrders (wenn der kurs radikal in die Höhe schiesst, scheint zumindest so) diesen retcode:
2019.02.17 21:29:58.078 2016.03.10 16:00:06 failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 1.09905, tp: 1.10125 [Invalid parameters]
Stelle bereits sicher,dass ein SL&TP bereits da sind mit:
Stop & FreezeLevel sind 0 bei diesem Symbol..
Jmd nh idee was ich machen kann?