Das Thema hatten wir doch vor kurzem....
Verwende NormalizeDouble(value,_Digits) und alles wird gut
Das Thema hatten wir doch vor kurzem....
Verwende NormalizeDouble(value,_Digits) und alles wird gut
Guten Tag,
wie kann ich meinen TP und SL als double in diese Formel einbringen
trade.SellLimit(0.1,(Ask+(200*_Point)),_Symbol,0,(Bid-(200*_Point)),ORDER_TIME_GTC,0,0);
Sobald ich die Zahlen durch Variablen ersetze erhalte ich invalid Stops und die Tickets werden nicht ausgeführt.
Dann musst die den Wert der Variablen (inkl. Bid & Ask) im Debugger kontrollieren.
Danke, werde ich versuchen.
Schau Dir einfach den den originalen Funktionsaufruf an: (C:\Users\..\MQL5\Include\Trade\Trade.mqh
bool CTrade::SellLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0, const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="")
Funktioniert nicht.
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
if((OrdersTotal()==0)&&(PositionsTotal()==0))
{
trade.SellLimit(0.1,(Ask+(200*_Point)),_Symbol,0,(Bid-(200*_Point)),ORDER_TIME_GTC,0,0);
}
Die Zeile funktioniert aber ich verstehe nicht was das mit dem Ask und Bid zu tun hat.
Der TP und SL soll variabel sein für die Tests.
Funktioniert nicht.
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
if((OrdersTotal()==0)&&(PositionsTotal()==0))
{
trade.SellLimit(0.1,(Ask+(200*_Point)),_Symbol,0,(Bid-(200*_Point)),ORDER_TIME_GTC,0,0);
}
Die Zeile funktioniert aber ich verstehe nicht was das mit dem Ask und Bid zu tun hat.
Der TP und SL soll variabel sein für die Tests.
Viele (auch ich) verwechseln schon mal, welcher Preis über oder unter welche andem sein muss oder überhaupt ungültig ist. Der Fehler lautet immer invalid price, man muss also alle(!) kontrollieren.
Wenn Deine Variablen nicht funktionieren, liegt das nicht an NormalizeDouble() (Ask und Bid muss man schon gar nicht normalisieren), sondern daran , wie Du sie berechnest - das kannst/musst Du selber mit dem Debugger überprüfen oder eben ausdrucken.
Hier mal eine Grafik zur Orientierung, Erinnerung und Verdeutlichung (rot der aktuelle Preis):
Funktioniert nicht.
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
if((OrdersTotal()==0)&&(PositionsTotal()==0))
{
trade.SellLimit(0.1,(Ask+(200*_Point)),_Symbol,0,(Bid-(200*_Point)),ORDER_TIME_GTC,0,0);
}
Die Zeile funktioniert aber ich verstehe nicht was das mit dem Ask und Bid zu tun hat.
Der TP und SL soll
variabel sein für die Tests.
willst du die input variable direkt übernehmen oder wie?
warum schreibst du input const? eine input varible ist immer eine const, da braucht man das nicht extra deklarieren.
schreib doch mal deinen gesamten code der was dazugehört
MQL5 ist im vergleich zur 4 komplizierter.
Es reicht nicht den TP oder SL einzutragen sondern es muss Bezug zum Aktuellen Kurs (Ask,Bid) gekommen werden.
dennoch, vielen dank für die Hilfe =)

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
wie kann ich meinen TP und SL als double in diese Formel einbringen
trade.SellLimit(0.1,(Ask+(200*_Point)),_Symbol,0,(Bid-(200*_Point)),ORDER_TIME_GTC,0,0);
Sobald ich die Zahlen durch Variablen ersetze erhalte ich invalid Stops und die Tickets werden nicht ausgeführt.