Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fehlermeldung OrderModify() error

Geschrieben

Hi liebe Leute,

 

ich erhalte 2 endlose Fehlermeldungen immer abwechselnd beim Backtest eines EAs. Den Code hatte ich mal gefunden und benutze ihn für den EA. Kann leider selbst nicht herausfinden woran es hängt.

 

"OrderModify error 1"

"OrderModify() error - no error" (Wird wohl vom Modify-Code verursacht)

 

Hier die Codeschnippsel vom Kauf und Modify Code

 

Code zum Order kaufen:

void Order_1_veranlassen()
{
   double SL = Ask - Order1_BuyOrder_SL*PipValue*Point;
   if (Order1_BuyOrder_SL == 0) SL = 0;
   double TP = Ask + Order1_BuyOrder_TP*PipValue*Point;
   if (Order1_BuyOrder_TP == 0) TP = 0;
   int ticket = -1;
   if (true)
   ticket = OrderSend(Symbol(), OP_BUY, Order1_Lot, Ask, 4, 0, 0, "My Expert", Order_1_MagicNumber, 0, Yellow);
   else
   ticket = OrderSend(Symbol(), OP_BUY, Order1_Lot, Ask, 4, SL, TP, "My Expert", Order_1_MagicNumber, 0, Yellow);
   if (ticket > -1)
   {
       if (true)
       {
           OrderSelect(ticket, SELECT_BY_TICKET);
           bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Yellow);
           if (ret == false)
           Print("OrderModify() error - ", ErrorDescription(GetLastError()));
       }
           
   }
   else
   {
       Print("OrderSend() error - ", ErrorDescription(GetLastError()));
   }
   
   {
       Bool_1 = true;
       Bool_2 = false;

   }
   
}

 

 

Code der den SL ändert:

void BuyOrderModify15()                                   
{
   for (int i=OrdersTotal()-1; i >= 0; i--)
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
   {
       if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Order_1_MagicNumber)
       {
           double price = Ask;
           if (false == false)
           {
               price = OrderOpenPrice();
           }
           bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), price - Order1_Modify_SL*PipValue*Point, price + Order1_Modify_TP*PipValue*Point, 0, Yellow);
           if (ret == false)
           Print("OrderModify() error - ", ErrorDescription(GetLastError())); // Verursacht wohl den "OrderModify() error - no error"

       }
   }
   
}

 

PS: Könnte man noch etwas in den Code einfügen um noch ein Kommentar zur Order zu erhalten ?

 

Liebe Grüße

Bearbeitet von Forex1+

Featured Replies

Geschrieben
Dieser Fehler kommt üblicherweise wenn du die Position mit den gleichen SL oder TP Preisen überschreiben versuchst
Geschrieben
  • Autor
Ich hab es nochmal überprüft also die Werte vom Kauf sind andere als die vom Modify (der Modify wäre ja auch sonst überflüssig) daran müsste es nicht liegen. LG
Geschrieben

PS: Könnte man noch etwas in den Code einfügen um noch ein Kommentar zur Order zu erhalten ?

Ja, das geht beim Absenden der Order. Sieht dann so aus:

 

[...]
   ticket = OrderSend(Symbol(), OP_BUY, Order1_Lot, Ask, 4, 0, 0, "Kommentar zur long Position", Order_1_MagicNumber, 0, Yellow);
   else
   ticket = OrderSend(Symbol(), OP_BUY, Order1_Lot, Ask, 4, SL, TP, "Kommentar zur long Position mit SL und TP", Order_1_MagicNumber, 0, Yellow);
[...]

 

Bzgl. des Order Errors probiere mal das:

 

if (OrderStopLoss() != price-Order1_Modify_SL*PipValue*Point || OrderTakeProfit() != price + Order1_Modify_TP*PipValue*Point)
bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), price - Order1_Modify_SL*PipValue*Point, price + Order1_Modify_TP*PipValue*Point, 0, Yellow);

 

Es kann ggf. aber auch daran liegen, dass SL oder TP zu nah am aktuellen Preis liegen oder der Preis schon über dem TP bzw. unter dem SL ist.

Geschrieben
Kann es sein, dass du bei OrderModify den Mindestabstand zum Kurs nicht einhältst?
Geschrieben

Ich hab es nochmal überprüft also die Werte vom Kauf sind andere als die vom Modify (der Modify wäre ja auch sonst überflüssig) daran müsste es nicht liegen. LG

 

sorry die blöde Frage: Wie hast du das überprüft? Optimal wäre per Kommentar direkt vor dem Modify ala

Print(OrderStopLoss()," ",OrderTakeProfit()," ", price - Order1_Modify_SL*PipValue*Point," ", price + Order1_Modify_TP*PipValue*Point);
OrderModify(...);

 

@WOGO: Mindestabstand wär ein anderer Error. "no error" passiert AFAIK nur wenn eben nix geändert.

Geschrieben
  • Autor

@Mythos:

sorry die blöde Frage: Wie hast du das überprüft?

Ich glaub die blöden Fragen stell wohl eher ich ;-) hab das überprüft weil ich die Werte in externen Variablen vorgebe:

 

Order1_BuyOrder_SL = 35

Order1_BuyOrder_TP = 100

 

(Wenn Trade 30 Pips im Plus kommt der Modify)

 

Order1_Modify_SL = 0 (dadurch auf BE gesetzt)

Order1_Modify_TP = 200

 

@conglom-o:

Habe den Code in den Modifyteil eingefügt aber wahrscheinlich mit meinen bescheidenen MQL Kenntnissen nicht korrekt jetzt kommt abwechselnd

OrderModify() error - invalid stops

OrderModify error 130

void BuyOrderModify15()                                   // Ändert den SL der geöffneten Order
{
   for (int i=OrdersTotal()-1; i >= 0; i--)
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
   {
       if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Order_1_MagicNumber)
       {
           double price = Ask;
           
           if (OrderStopLoss() != price-Order1_Modify_SL*PipValue*Point || OrderTakeProfit() != price + Order1_Modify_TP*PipValue*Point)
           bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), price - Order1_Modify_SL*PipValue*Point, price + Order1_Modify_TP*PipValue*Point, 0, Yellow);
           
           if (ret == false)
           Print("OrderModify() error - ", ErrorDescription(GetLastError())); //Verursacht "OrderModify() error - no error"

       }
   }
   
}

 

 

Ahhhhh eben ist mir noch was aufgefallen!!! der Modifyteil wird doch durch durch den Abstandsprüfer nach 30 Pips ausgelößt. Der Abstandsprüfer ist aber jeden Tick aktiv und leitet dann logischerweise jeweils an den Modifyteil weiter das würde heißen an der Abstandsstelle gibt es jeden Treffertick den Modifybefehl und damit nach dem ersten mal jedes mal den selben Wert ! Das könnte es sein ! Werd morgen mal per Bool Variablen das so umgestalten das der Abstandsprüfer nur einmal aktiv wird und dann werd ich sehen ob die Theorie stimmt... Was ein blöder Fehler das wäre haha

 

Danke euch schonmal für die Hilfe ! werde morgen berichten

 

Gruß

Geschrieben

Denke es ist auch sinnvoller, dort anzusetzen wo die Funktion zur Modifikation aufgerufen wird. Kannst Du den Teil mal posten?

Das mit dem Fehler 130 ist klar - Du hast nämlich das "price = OrderOpenPrice();" raus genommen. Somit versucht er immer mit dem Ask was zu veranstalten. Ändere mal bitte "double price = Ask;" in "double price = OrderOpenPrice();" ab.

Geschrieben
  • Autor

Ja super es lag an dem was ich vermutet habe der Modifyteil wurde einfach dauerhaft aufgerufen das war der Fehler. Jetzt keine Fehlermeldung mehr :biggrin:

 

Danke nochmal für die Unterstützung

LG

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.