|
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 |
|
|||
Funktion für löschen von Aufträgen im Orderbuch
Hallo zusammen,
als Anfänger habe ich eine Funktion für das identifizeren von speziellen Währungen im Orderbuch geschrieben. Sinn: Sollten im Orderbuch noch Aufträge zur aktuellen Währung sein - egal ob aktiv oder Pending - dann sollen diese um 20 Uhr (ist ja echt 19 Uhr) geschlossen werden. Die Funktion geht aber es werden nicht alle Aufträge gelöscht. Immer nur ein paar....die Closefunktion scheint mir hier von mir vielleicht nicht richtig angewendet zu sein. Habe die Funktion dann zweimal hinterienander reingesetzt - bringt aber nix. Hat jemand eine Idee wo der Fehler liegen könnte? Anbei Code - wie kann man den Code hier einfügen dass die Tabs usw. gezeigt werden? Sieht so ja nicht toll aus...Danke an alle! //Start Durchsuchen Orderbuch nach möglichen Ordern dieser Währung sofern es nach 19 Uhr ist!!! if((Hour() >= 20) && (OrdersTotal()>0) && (VerriegelungClose == 0)) { //VerriegelungClose wieder schließen da nur einmal laufen lassen bis nächster Trade eröffnet wird VerriegelungClose = 1; //Orderbuch durchsuchen nach Orders dieser Währung for(int a=0;a<odzahlALL;a++) { if(OrderSelect(a, SELECT_BY_POS, MODE_TRADES)==true) { //Ordersymbol, Ticketnummer und Zusatnd - ob Pending oder Aktivorder spreichern BHilfsstring = OrderSymbol(); BHilfsticketnummer = OrderTicket(); BHilfslots = OrderLots(); BHilfstype = OrderType(); //Prüfen ob Währung passt if(BHilfsstring == Basiswert) { //Prüfen ob gefundene Order eine aktive Order OP_BUY ist - dann kommt OrderClose zum Einsatz if((BHilfstype == 0)) { bool Bax1 = false; while(Bax1 != true) { //Order löschen Bax1=OrderClose(BHilfsticketnummer,BHilfslots,Bid, 5,Red); } Print("Orderbuch löschen weil nach 19/20 Uhr: Aktive Order Nr. ", BHilfsticketnummer, " wurde aus Orderbuch gelöscht! Währung war: ", Basiswert); } //Prüfen ob gefundene Order eine aktive Order OP_SELL ist - dann kommt OrderClose zum Einsatz if((BHilfstype == 1)) { bool Bax2 = false; while(Bax2 != true) { //Order löschen Bax2=OrderClose(BHilfsticketnummer,BHilfslots,Ask, 5,Red); } Print("Orderbuch löschen weil nach 19/20 Uhr: Aktive Order Nr. ", BHilfsticketnummer, " wurde aus Orderbuch gelöscht! Währung war: ", Basiswert); } //Prüfen ob gefundene Order eine Pending Order ist - dann kommt OrderDelete zum Einsatz if((BHilfstype == 2) || (BHilfstype == 3) || (BHilfstype == 4) || (BHilfstype == 5) ) { bool Bax3 = false; while(Bax3 != true) { //Order löschen Bax3=OrderDelete(BHilfsticketnummer); } Print("Orderbuch löschen weil nach 19/20 Uhr: Pending Order Nr. ", BHilfsticketnummer, " wurde aus Orderbuch gelöscht! Währung war: ", Basiswert); } } } } } |
|
|||
Beim Schreiben von Posts befindet sich darüber ein # und zwischen den Tags wird dann der Code geschrieben.
Wenn Basiswert nicht mit dem Handelsinstrument übereinstimmt, auf welchem der EA läuft, dann wird es mit Ask und Bid in der Close-Funktion auch kein Schließen geben. Es wäre dann zu benutzen: OrderClose(BHilfsticketnummer,BHilfslots,MarketInf o(Basiswert,MODE_ASK),5,Red); bzw. OrderClose(BHilfsticketnummer,BHilfslots,MarketInf o(Basiswert,MODE_BID),5,Red); Ansonsten, was steht denn in den Log-Dateien bzgl. der mißlungenen Closeversuche? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hallo traderdoc,
vielen Dank für Deine rasche Antwort!!!! In den Journal steht kein Fehler weil die Order im Strategietest einfach irgendwann mit Stop.loss oder Take-Profit verkauft wird. Meinst Du das? Der EA läuft immer nur in dem Chart, aus dem der Basiswert ist. Weil sich der EA beim Start den EA aus dem aktuellen Chart holt. Das dürfte nicht zu Problemen führen. Die Bid und Ask Problematik für die Close-Funktion habe ich versucht über die ersten beiden if-Abfragen abzufangen. Reicht das nicht? Wie gesagt, so wirklich einen Fehler spuckt mir der EA nicht aus oder muss ich außer im Journal nhoch woanders schauen? Danke Dir nochmals....echt klasse die Unterstützung! |
|
|||
Weißt Du zufällig, ob man das Strategiefenster-Chart vom Layout hier irgendwo definieren kann? Ich habe im Netz nichts gefunden...das normale kann man ja mit default als Vorgabe setzen. Aber im Strategiefenster finde ich nix....
|
|
|||
Für den Strategietester speicherst du die Vorlage (Template) 'Tester'
Für den Debug-Modus die Vorlage 'Debug' |
Lesezeichen |
Stichworte |
close, close-funktion, mql4, order löschen, orderclose, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|