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: 47
Gesamt: 48
Team: 0
Team:  
Benutzer:  fxnoob
Freunde anzeigen

Empfehlungen

Werbung

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

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

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

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....
Mit Zitat antworten
  #5 (permalink)  
Alt 16.07.17
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 287
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Für den Strategietester speicherst du die Vorlage (Template) 'Tester'
Für den Debug-Modus die Vorlage 'Debug'
__________________
Das Gras wächst nicht schneller wenn man daran zieht
Mit Zitat antworten
  #6 (permalink)  
Alt 17.07.17
Neues Mitglied
 
Registriert seit: May 2017
Beiträge: 15
exergon befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Info Kronenchakra
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
close, close-funktion, mql4, order löschen, orderclose, 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:48 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.
-----------------------------------------------------------------------------------------------------------------------------