Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4972
Beiträge: 44343
Benutzer: 7.217
Aktive Benutzer: 85
Links: 84
Wir begrüßen unseren neuesten Benutzer: DFeck
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- DFeck
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 97
Gesamt: 97
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 01.11.12
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 7
muruki befindet sich auf einem aufstrebenden Ast
Standard 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.
  #2 (permalink)  
Alt 01.11.12
Neues Mitglied
 
Registriert seit: Sep 2012
Beiträge: 8
bonenkai befindet sich auf einem aufstrebenden Ast
Standard

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.
  #3 (permalink)  
Alt 01.11.12
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 7
muruki befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von bonenkai Beitrag anzeigen
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.
habe die Prüfung hinzugefügt. das funktioniert. Hast du ein Beispiel wie ich den TradRequest updaten kann?

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.
  #4 (permalink)  
Alt 01.11.12
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 7
muruki befindet sich auf einem aufstrebenden Ast
Standard

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;
}
  #5 (permalink)  
Alt 01.11.12
Neues Mitglied
 
Registriert seit: Sep 2012
Beiträge: 8
bonenkai befindet sich auf einem aufstrebenden Ast
Standard

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();
}
  #6 (permalink)  
Alt 02.11.12
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 7
muruki befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von bonenkai Beitrag anzeigen
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();
}

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.
  #7 (permalink)  
Alt 02.11.12
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 7
muruki befindet sich auf einem aufstrebenden Ast
Standard

Verdammt ..... ich hab es raus bekommen :

LÖSUNG: m_Trade.PositionModify(my_symbol, sl, tp);

Vielen Dank trotzdem!
  #8 (permalink)  
Alt 02.11.12
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 7
muruki befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von muruki Beitrag anzeigen
Verdammt ..... ich hab es raus bekommen :

LÖSUNG: m_Trade.PositionModify(my_symbol, sl, tp);

Vielen Dank trotzdem!

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?
Thema geschlossen

Lesezeichen

Stichworte
ea, expert-advisor, mql5, ordersend, programmierung, programmierung metatrader, takeprofit, tp

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------