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)
-   -   Funktion für löschen von Aufträgen im Orderbuch (http://www.expert-advisor.com/forum/showthread.php?t=5752)

exergon 16.07.17 11:24

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. :confused:

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);
}
}
}
}
}

traderdoc 16.07.17 12:37

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

exergon 16.07.17 13:07

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! :) :)

exergon 16.07.17 13:38

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....

Kronenchakra 16.07.17 18:22

Für den Strategietester speicherst du die Vorlage (Template) 'Tester'
Für den Debug-Modus die Vorlage 'Debug'

exergon 17.07.17 09:47

Danke für die Info Kronenchakra :)


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