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: 4978
Beiträge: 43260
Benutzer: 7.222
Aktive Benutzer: 72
Links: 84
Wir begrüßen unseren neuesten Benutzer: Mane
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur
vor 2 Wochen
- infos1982

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 269
Gesamt: 269
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree1Likes
  • 1 Post By Leopold
Thema geschlossen
 
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!!
  #2 (permalink)  
Alt 22.05.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
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---
  #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!
  #4 (permalink)  
Alt 22.05.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
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.
  #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 !!
Thema geschlossen

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 00:43 Uhr.





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