|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
OrderDelete error 4108
Hallo Zusammen,
ich bin neu hier und finde das Forum echt klasse! Habe schon viel dadurch gelernt. Aktuell bin ich an einem Problem, dass ich einfach nicht gelöst bekomme. Ich möchte eine Pending-Order aus dem Orderbuch mit Hilfe des Befehls OrderDelete() löschen. Anbei Code: bool zz = false; while(zz !=true) { zz=OrderDelete(TicketNummer[5]); } Die Variable "TicketNummer[5]" ist ein integer array und beinhaltet den richtigen Ticketnummerwert. Ich habe ihn ausgeben lassen und überprüft. Trotzdem bekomme ich folgende Fehlermeldung: "OrderDelete error 4108 - unkown ticket for OrderDelete function" Was mache ich falsch? Ich habe schon aus der Not heraus - um die Funktion OrderDelete() zu umgehen - versucht über OrderModify den Einstieg zu verschieben um die Order dann später manuell zu löschen, aber da kommt dann "OrderModify error 1" egal wie ich den Kaufpreis, den Stoploss und den TakeProfit setze. Wer kann mir helfen? Danke Euch.... VG exergon |
|
|||
Manchmal habe ich den Eindruck, dass mit den Arrays etwas merkwürdig umgegangen wird. Deshalb würde ich mal probieren:
Code:
bool zz = false; int ticket = TicketNummer[5]; while(zz !=true) { zz=OrderDelete(ticket); } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Mir ist auch mal sowas passiert, allerdigns war das Problem nicht auf meiner Seite. Als ich den Fehler nicht im Code finden konnte, habe
ich ne Order manuell modifizieren wollen. Auch das ging nicht. Ein paar Minuten später stellte sich heraus, das der Broker die Anfrage mit einem Fehler beendete. Danach ging der selbe Code. Ist hier bei dir aber wahrscheinlich nicht der Fall. Zitat:
Beim Code, der eigentlich richtig aussieht ist es meist schwer, die Quelle des Problems zu finden. Sofern das von Traderdoc nicht funktioniert (was ich stark bezweifle), kannst du es ja mal mit einer Test-Order und direkter Eingabe der Ordernummer versuchen. Die Order ist aber wirklich pending, oder |
|
|||
Vielen Dank Euch beiden für die schnelle Antwort.
Traderdoc: Klasse Idee...habe es eben probiert aber leider kommt die selbe Fehlermeldung. Wirklich verrückt und sehr crazy! next_user: Schon komisch manchmal....das stimmt. Und ich verstehe auch die Skepsis hinsichtlich meiner Aussage mit der "Pending-Order". Aber es ist wirklich eine Pending-Order die noch aktiv im Orderbuch steht. Was ich auch nicht kapiere ist, dass die OrderModify-Funktion ebenfalls ins Leere läuft. Ich sehe im Journal dass die Daten der Order noch geändert werden wie von mir vorgegeben und dann steigt die Funktion aus mit dem error 1. So ein Mist.... |
|
|||
Da kann was nicht stimmen, was auch immer es ist.
Also entweder ist es keine PendingOrder, obwohl Du sagst, es ist definitiv eine oder Dein MT4 hat ne Macke. Das ist alles schon vorgekommen. Da hilft nur Neuinstallation des MT4. Wenn bei OrderModify() der Error 1 kommt, liegt das meistens daran, dass versucht wird, Daten der PendingOrder zu ändern, die bereits geändert wurden. Das passiert gern in Schleifen, dass OrderModify() dann mehrmals aufgerufen wird, obwohl die Änderung bereits geschehen war. Nur wenn Du tatsächlich Änderungen siehst, dann wurde auch die Order richtig angesprochen, was wiederum bedeutet, dass mit der Funktion OrderClose() was nicht mehr stimmt. Trotzdem, sehr merkwürdig. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ja, das ist definitiv sehr komisch ....sehe ich auch so. Habe Stunden damit verbracht eine Lösung zu finden. Ohne Erfolg.
Werde den EA auf einem anderen PC nochmal testen. Danke Dir traderdoc für Dein Feedback! :-) |
|
|||
Sag dann nacher mal, ob es auf'm anderen geklappt hat.
Und falls du Zeit hast, erstell doch mal ein paar Test-Orders und setze in deine EA-Initialisierung folgenden Code ein: Code:
for(int i=OrdersTotal()-1; i>=0; i--) { ResetLastError(); if(!OrderSelect(i,SELECT_BY_POS)) Print("Order konnte nicht selektiert werden. Fehler: ",IntegerToString(GetLastError())); else { if(OrderType() != OP_BUY && OrderType() != OP_SELL) { if(!OrderDelete(OrderTicket())) Print("Pending Order konnte nicht gelöscht werden. Fehler: ",IntegerToString(GetLastError())); else Print("IST NICHT WAHR ..."); } } } wo du deinen Array mit den Tickets füllst. |
|
|||
Update:
Ich habe den Fehler gefunden....es lag an mir! Der reine Code mit dem Löschen der Order stimmt. Aber im Ablauf ist mein Programm nach der Ausführung der Löschfunktion nochmal in die Delete-Schleife reingelaufen und da war dann die Order ja schon gelöscht. Daher musste ich einfach die Delete-Funktion nochmal verriegeln damit sie nicht zweimal ausgefürt wird. Nun passt alles....also mein Fehler! Nochmal herzlichen Dank an Euch beide! :-) VG exergon |
|
|||
Und ich hatte schon fast angefangen an mystische "zufällige Codesegmente" zu glauben (wie im Film I Robot), die nicht zu erklären sind.
|
|
|||
Sorry, aber was ich jetzt nicht verstehe ist, dass Du eingangs es so beschrieben hattest, als das die PendingOrder per OrderClose() überhaupt nicht geschlossen wurde. Hättest Du geschrieben, dass sie geschlossen wurde und trotzdem dieser Fehler angezeigt wird, dann hättest Du auch an der zeitlichen Abfolge ersehen können, dass der Fehler nach! dem eigentlichen und stattgefundenen! Close erscheint.
Also eigentlich eine völlig andere Situation! traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
error, error 4108, mql4, orderdelete, orderdelete error, orderdelete(), ordermodify, pending order löschen, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|