|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Ordersend keine Preisangabe mehr notwendig???
Bei einem meiner EA´s ist mir nun aufgefallen, dass er trotz stark eingegernzter Slippage immer viel zu weit vom eigentlichen Kurs öffnet, der er sehr oft bei starken Bewegungen seine Trade eingehen soll aber nur wenn der Preis nicht schon zu weit weg ist.
Nach vielen Tests um die Slippage rum, habe ich einfach eine wilde Zahl in den Preis Ordersend Befehl eingetragen (anstelle Bid bzw. Ask) und auf den sonst üblichen Error gewartet... aber denkste, der EA öffnet auf Demo weiterhin seine Order, dabei scheint ihm der vorgegebene Preis völlig egal zu sein. Hat sich dieser Befehl im Laufe der vielen Updates geändert und ist die Preisangabe dabei entfallen oder war das auf Demo schon immer so? Habt ihr das auch beobachten können? Vielleicht ist das ja auch ein MQL4 Bug. Geändert von Pago2013 (06.06.16 um 18:37 Uhr) |
|
|||
Soviel ich weiß wird die Slippage in den Globalen Variablen (also vor init/start) angegeben und deklariert.
|
|
|||
Wenn ich den Befehl so, mit diesem Preis verwende dann dürfte er ja keine Order öffnen. Egal wie hoch die Slippage ist denn meines Wissens wird erst der Preis im/vom Metatrader überprüft und die Slippage wird vom Broker anhand der Preisvorgabe und des aktuell erhältlichen Preises berechnet.
ABER die Order wird trotzdem eröffnet. int Magic = 1; int OrderLots_ = 0.01; double Price = 99999999.0; int MaxSlippage = 1; int ticket=OrderSend(Symbol(),OP_SELL,OrderLots_, Price,MaxSlippage,0,0,"",Magic,0,Red); Geändert von Pago2013 (06.06.16 um 18:55 Uhr) |
|
|||
Wenn OrderLots_ als int deklariert wird, würde in diesem Falle keine Ordergeöffnet werden, weil der Wert der Variablen OrderLots_ = 0 ist!! Und bei 0 streikt die Orderausführung. D.h. unbedingt als double deklarieren.
Wäre das getan worden, würde in der Tat jeder eingegebene Wert bei Price zu einer Öffnung einer SellOrder zum aktuellen Bid-Kurs führen. Nur negative Preise werden nicht akzeptiert. Richtig logisch und konsequent ist das natürlich nicht. Das alles hat damit zu tun, weil MarketOrders immer mit dem Ask bzw. BidKurs geöffnet werden und eine Slippage im DemoKonto keine Relevanz besitzt. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
OrderLots_ ist bei mit natürlich als double deklariert, ich hab das hier nur schnell mal verkürzt aufgeschrieben und dabei einen kleinen Fehler gemacht. Ich meinte, dass es füher einen Error gab wenn man Ask und Bid vertauscht hatte aber vielleicht versehe ich mich da auch. |
|
|||
Ich hab mich etwas umgehört und es scheint nur bei Accounts zu funktionieren die den execution Type "Instant Execution" haben, bei "Market Execution" wird der Marktpreis (so wie von TraderDoc geschrieben) angesetzt.
Weiter teilte mir mein Broker mit, dass angeblich nur Marketmaker den von mir gewünschte execute Type aufweisen, somit hat sich das Thema dann wohl erledigt denn so ein Account kommt für mich nicht in die Tüte. |
Lesezeichen |
Stichworte |
bid, kursabweichung, mql4, ordersend, programmierung, programmierung metatrader, slippage |
|
|