Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   OrderModify Problem !!! Hilfeeee!!! (http://www.expert-advisor.com/forum/showthread.php?t=6332)

Angel 08.02.19 01:10

OrderModify Problem !!! Hilfeeee!!!
 
Hi Freunde des (oft widerspenstigen) MQL4,
ich möchte eine Order nach dem Öffnen mit OrderModify verändern.
Es soll ein StoppLoss auf einer EMA gesetzt werden und der soll sich mit der EMA verändern.
Nun habe ich alles versucht, in die OrderModify die zuvor ausgelesene Ticketnummer reinzubringen - ohne Erfolg.
Vielleicht könnt ihr mit mal helfen?
Hier der Code (Natürlich sind die Variablen definiert):
Code:

  for(i=0;i<=OrdersTotal();i++)
  OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          bool res=OrderModify(OrderTicket(),0,EMA50,0,0,clrBlue);
          if(!res)
                    Alert("Error in OrderModify. Error Code = ",GetLastError());
                    else
                    Alert("Order modified successfully!");

Als Fehlercode wird 4051 angezeigt (Invalid function parameter value)
Wäre echt toll, wenn ich hier weiterkommen würde...! Danke!!!

daybyter 08.02.19 03:05

Du willst den Preis auf 0 setzen? Wie soll das funktionieren?

Angel 08.02.19 08:29

Würdest Du mir die Stelle zeigen, wo ich den Preis auf 0 setze?
Falls Du die rot markierte Stelle meinst
Code:

bool res=OrderModify(OrderTicket(),0,EMA50,0,0,clrBlue);
dann sei Dir versichert, dass diese 0 zwar für den Preis steht, aber KEINE PREISÄNDERUNG signalisiert / fordert / veranlasst.

daybyter 08.02.19 08:55

OK, ich hab halt noch nirgendwo gesehen, dass das gehen soll.

Angel 08.02.19 09:09

Man kann den Preis einer Pending-Order verändern. Den Preis einer laufenden (Open-) -Order kann man naturgemäß nicht verändern. Den bestimmt der Markt.
HIER geht es um laufende, also "open" orders. Daher wird der Wert auf 0 gesetzt. Aber bitte, ich bin um jede Art des Wissen dankbar - kann ja sein, dass ich falsch liege - in dem Fall gib mir doch ein funktionierendes Beispiel...?!

daybyter 08.02.19 09:30

In meinem Framework nahm ich halt OrderOpenPrice () usw für Preis, StopLoss usw. Bei mir funktioniert das dann.

Angel 08.02.19 09:55

Ok... nachdem ich den Code ein wenig modifizierte und die verfluchten , berühmt-berüchtigten Drecksklammern eingefügt habe, funktioniert es. Vielleicht für andere, die so einen Fehler suchen:

Code:

  total=OrdersTotal();
  for(i=0;i<=OrdersTotal();i++)
      {OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
      ordernrticket[i]=OrderTicket();
      OrderModify(ordernrticket[i],0,EMA50,0,0,clrBlue);
      }

Wie gesagt, der Code ist für Open-Orders, nicht für Pending-Orders.
Und das Array von ordernrticket nicht vergessen, am Programmanfang zu definieren!

So, @Admin, vielleicht auch für die Rubrik Codeschnipsel?!

daybyter 08.02.19 10:25

Ach so...Du kommst von Python? Da macht man die Klammern nicht...stimmt...

Aber prima, dass es nun klappt!


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:27 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