Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3774
Beiträge: 37294
Benutzer: 5.958
Aktive Benutzer: 505
Links: 80
Wir begrüßen unseren neuesten Benutzer: Alf0809
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 22 Stunden
- Alf0809
vor einem Tag
- jimydirekt...
vor einem Tag
- Geri78
vor 2 Tagen
- Phil7
vor 2 Tagen
- daijiro051...

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 43
Gesamt: 44
Team: 0
Team:  
Benutzer:  fxnoob
Freunde anzeigen

Empfehlungen

Werbung

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.07.17
Neues Mitglied
 
Registriert seit: May 2017
Beiträge: 15
exergon befindet sich auf einem aufstrebenden Ast
Standard 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
Mit Zitat antworten
  #2 (permalink)  
Alt 09.07.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.848
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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);
}
Immer vorausgesetzt, dass 100%ig das Feld TicketNummer[5] eine TicketNumber einer PendingOrder enthält!!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt 10.07.17
Mitglied
 
Registriert seit: May 2015
Beiträge: 250
next user befindet sich auf einem aufstrebenden Ast
Standard

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:
Zitat von traderdoc Beitrag anzeigen
Manchmal habe ich den Eindruck, dass mit den Arrays etwas merkwürdig umgegangen wird.
Ist bei mir glücklicherweise noch nicht passiert.

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
Mit Zitat antworten
  #4 (permalink)  
Alt 10.07.17
Neues Mitglied
 
Registriert seit: May 2017
Beiträge: 15
exergon befindet sich auf einem aufstrebenden Ast
Standard

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....
Mit Zitat antworten
  #5 (permalink)  
Alt 10.07.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.848
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #6 (permalink)  
Alt 10.07.17
Neues Mitglied
 
Registriert seit: May 2017
Beiträge: 15
exergon befindet sich auf einem aufstrebenden Ast
Standard

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! :-)
Mit Zitat antworten
  #7 (permalink)  
Alt 10.07.17
Mitglied
 
Registriert seit: May 2015
Beiträge: 250
next user befindet sich auf einem aufstrebenden Ast
Standard

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 ...");   
      }
   }   
}
Würde mich echt interessieren, ob da bei allen der gleiche Fehler kommt. Wenn es hier klappen sollte, so würde ich mal an der Stelle suchen,
wo du deinen Array mit den Tickets füllst.
Mit Zitat antworten
  #8 (permalink)  
Alt 11.07.17
Neues Mitglied
 
Registriert seit: May 2017
Beiträge: 15
exergon befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #9 (permalink)  
Alt 11.07.17
Mitglied
 
Registriert seit: May 2015
Beiträge: 250
next user befindet sich auf einem aufstrebenden Ast
Standard

Und ich hatte schon fast angefangen an mystische "zufällige Codesegmente" zu glauben (wie im Film I Robot), die nicht zu erklären sind.
Mit Zitat antworten
  #10 (permalink)  
Alt 11.07.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.848
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
error, error 4108, mql4, orderdelete, orderdelete error, orderdelete(), ordermodify, pending order löschen, programmierung, programmierung metatrader, programmierung mql4


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 +2. Es ist jetzt 08:47 Uhr.



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