Möchte über EA den TakeProfit für eine Order setzen...
Hallo,
Ich habe mir einen TradeRequest aufgebaut und möchte in diesem den TakeProfit setzen. trReq.tp = trReq.price + 0.002; dann über "OrderSend" schicke ich die Order los. Jedoch wird bei der eröffneten Position im MetaTrader 5 nicht der TP gesetzt. Im Debugger kann ich aber den richtigen Wert des TP erkennen. Woran könnte das liegen das der TP in der gekaufen Position immer noch auf 0,00000 steht? Danke für eine Antwort. |
Ich kann jetzt nur für MQL4 sprechen aber vllt. funktioniert die Lösung ja bei dir auch: Ich eröffne die Trades zunächst mit OrderSend, prüfe dann, ob die Eröffnung erfolgreich war und setze dann danach SL und TP mittels OrderModify.
|
Zitat:
trReq.... trReq.... OrderSend(trReq,trRez); Prüfung OrderModify(ticket,OrderOpenPrice(),Bid+StopLoss*P oint*platform_digital,Bid-TakeProfit*Point*platform_digital,0);//Modify it! ---> hab da so was in der Art gefunden, aber wie bekomme ich das Ticket zu dem trReq ..usw. |
Aktueller Code, wobei "orderModify" nicht funktioniert.
Wie macht man es richtig? --> m_Trade stört mich. und die Parameter in OrderModify sind nicht alle OK. trReq.... trReq.... OrderSend(trReq,trRez); if (trRez.retcode == 10009 || trRez.retcode == 10008) { // Order ist erfüllt oder plaziert ulong ticket = trRez.order; Alert("Eine Kauforder wurde erfolgreich durchgeführt mit dem Ticket: ", ticket,"!!"); m_Trade.OrderModify(ticket, aktTickkursBid, aktTickkursBid - 0.002, aktTickkursBid + 0.002, m_order.TypeTime(), m_order.TimeExpiration(), 0.00000); } else { Alert("Eine Kauforder konnte nicht abgeschlossen werden - Error: ", GetLastError()); ResetLastError(); return; } |
Ich kann dir nur ein Stück MQL4-Code als Beispiel anbieten, welches bei mir funktioniert.
In "ticket" erhältst du die Ticketnummer als Antwort der OrderSend-Funktion, die du dann in der OrderModify-Funktion einsetzen kannst. Alle anderen Variablen musst du natürlich auf deinen Code anpassen und mit für dich vernünftigen Werten versehen. //********************************************** ticket = OrderSend(symbol,OP_BUY,myLotSize,ask,orderslip,0, 0); send_err = GetLastError(); if (send_err == 0) { OrderModify(ticket,bid,stoploss,takeprofit,0); mod_err = GetLastError(); } |
Zitat:
Bei MQL 5 ist es nun wohl anders. OrderModify() kennt er beim Kompilieren nicht (Funktion nicht definiert) --> oder muss ich noch was bestimmtest includen? verwende ich: datetime to_date = 0; //TimeCurrent(); m_Trade.OrderModify(ticket, aktTickkursBid, sl, tp, ORDER_TIME_GTC, to_date, 0.0); dann bringt er mir folgende Meldung: 2012.11.02 10:23:02 CTrade::OrderSend: modify #23355496 at 1.28741 (sl: 1.28541 tp: 1.28941) [invalid request] Im Testlauf kommt diese Meldung: 2012.11.02 10:37:22 2012.10.16 14:44:39 failed modify order #41 buy 0.00 at market sl: 0.00000 tp: 0.00000 -> 1.30448, sl: 1.30248 tp: 1.30648 [Invalid request] Was ist denn da ungültig? Das darf doch nicht so schwer sein den TakeProfit zu updaten. Wenn man das manuell macht gehts ja auch ganz einfach ;) Aber erst die Order senden und dann updaten scheint richtig zu sein. Nur ist irgendwas noch ungültig. Danke für eure weitere Hilfe. |
Verdammt ..... ich hab es raus bekommen :D :
LÖSUNG: m_Trade.PositionModify(my_symbol, sl, tp); Vielen Dank trotzdem! |
Zitat:
Ich habe somit den TakeProfit einer Position updaten können. Nun stellete ich mir die Aufgabe: Gibt mir zu dieser Position alle Orders(Deals) und deren TakeProfits zu analysieren. Gibt es überhaupt eine Möglichkeit sich zu einer Position alle offenen Orders zurück zu geben zu lassen? So wie das wohl früher in MQL4 war? In MQL5 ist es ja wohl so, das wenn ich eine Position schließe, alle dazugehörigen Orders mitgeschlossen werden. Das will ich aber nicht. Jede Order soll einen TakeProfit haben und sich selber schießen. Ist nicht mehr machbar oder? |
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:36 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum