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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4245
Beiträge: 39294
Benutzer: 6.551
Aktive Benutzer: 258
Links: 80
Wir begrüßen unseren neuesten Benutzer: Jonnes
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 2 Tagen
- Jonnes
vor 2 Tagen
- bluesdd
vor 4 Tagen
- KEY
vor 5 Tagen
- aliconii
vor einer Woche
- Matthias

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 111
Gesamt: 113
Team: 0
Team:  
Benutzer:  fxnoob, traderdoc
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By Leopold
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 21.05.19
Neues Mitglied
 
Registriert seit: May 2019
Beiträge: 9
Karacho befindet sich auf einem aufstrebenden Ast
Standard Stop Order werden nicht umgesetzt

Hallo,

ich möchte, dass jeden Tag um 3 Uhr eine Stop Order gesetzt wird und habe deshalb den nachfolgenden Code geschrieben. Wenn ich diesen allerdings im Strategietester teste, wird nicht an jedem Tag eine Order gesetzt.

Ich denke, dass das Problem in der Zeile: double resultATR = ... liegt.

Wenn ich resultATR = 0.1 wähle, werden alle Stop Orders wie gewünscht umgesetzt.





void OnTick()
{

double resultATR = iATR(NULL,0,24,1);

double Einstiegskurs1 = Close[0] + resultATR;

SL1= 1;
Positionsgroesse = 0.01;


if(ZaehleStopKaufOrdern() == 0 && Hour() == 3 )// Order wird nur ausgeführt wenn noch keine offene Stop Order platziert wurde
{
datetime expiration = Time[0]+60*60;
EroeffneStopOrder(Symbol(),Positionsgroesse, Einstiegskurs1, "kauf", SL1, TP, expiration);
}

}





int ZaehleStopKaufOrdern()
{
int OrderZaehler=0;
for(int Zaehler = 0; Zaehler <= OrdersTotal()-1; Zaehler++)
{
if(OrderSelect(Zaehler,SELECT_BY_POS) == true)
{
if(OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP && OrderMagicNumber()==MagicNumber)
OrderZaehler++;
}
else
{
Print("OrderSelect ergab den FehlerCode: ",GetLastError());
}
}

return(OrderZaehler);
}







int EroeffneStopOrder (string markt, double Lots, double Eroeffnungskurs, string Handelsrichtung, double StopLoss, double TakeProfit, datetime expire)
{

if(Handelsrichtung == "kauf")
{

while(IsTradeContextBusy()) Sleep(10);
Ticketnummer = OrderSend(markt,OP_BUYSTOP, Lots, Eroeffnungskurs, Slipp, StopLoss, TakeProfit, "Stop-Kauf-Order",MagicNumber,expire,Green);

if(Ticketnummer == -1) {
FehlerCode = GetLastError();
string FehlerBeschreibung = ErrorDescription(FehlerCode);
string FehlerAusgabe = StringConcatenate("Eröffnung Stop-Kauf-Order:",FehlerCode,": ",FehlerBeschreibung);
Print(FehlerAusgabe);
}
}

if(Handelsrichtung == "verkauf")
{
while(IsTradeContextBusy()) Sleep(10);
Ticketnummer = OrderSend(markt,OP_SELLSTOP, Lots, Eroeffnungskurs, Slipp, StopLoss, TakeProfit, "Stop-Verkauf-Order", MagicNumber,expire,Red);

if(Ticketnummer == -1) {
FehlerCode = GetLastError();
string FehlerBeschreibung = ErrorDescription(FehlerCode);
string FehlerAusgabe = StringConcatenate("Eröffnung Stop-Verkauf-Order:",FehlerCode,": ",FehlerBeschreibung);
Print(FehlerAusgabe);
}
}

return(Ticketnummer);
}






Ich würde mich sehr freuen, Hilfe zu bekommen und Danke im Voraus!!
Mit Zitat antworten
  #2 (permalink)  
Alt 22.05.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 316
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

welche Fehlermeldungen bekommst du?

Ich vermute mal, du müsstest Einstiegskurs an die Dezimalstellen des Symbols anpassen. (NormalizeDouble)

---Leopold---
Mit Zitat antworten
  #3 (permalink)  
Alt 22.05.19
Neues Mitglied
 
Registriert seit: May 2019
Beiträge: 9
Karacho befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

also eine Fehlermeldung erhalte ich nicht. Ich stelle nur beim Backtest fest, dass nicht jeden Tag die Stop Order erteilt wird.

"Einstiegskurs an die Dezimalstellen des Symbols anpassen" sagt mir jetzt nichts.
Wie müsste ich das machen ?

Vielen Dank im Voraus!
Mit Zitat antworten
  #4 (permalink)  
Alt 22.05.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 316
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Beispiel:

double Einstiegskurs1 = NormalizeDouble(Close[0] + resultATR, Digits);


aber sinnvoller wäre es vielleicht wenn du NormalizeDouble bei OrderSend integrierst. Dann musst du bei Kursberechnungen nicht immer darauf achten. NormalizeDouble solltest du generell verwenden für Preise (Open, StopLoss, TakeProfit, ...)

Info:
https://docs.mql4.com/convert/normalizedouble

https://docs.mql4.com/predefined/digitsvar

---Leopold---
Karacho likes this.
Mit Zitat antworten
  #5 (permalink)  
Alt 22.05.19
Neues Mitglied
 
Registriert seit: May 2019
Beiträge: 9
Karacho befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

mit NormalizeDouble() hat es geklappt. Vielen Dank für Deine Hilfe !!
Mit Zitat antworten
Antwort

Lesezeichen


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 23:54 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2019 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.
-----------------------------------------------------------------------------------------------------------------------------