trade.SellLimit

 
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.
 

Das Thema hatten wir doch vor kurzem....

Verwende NormalizeDouble(value,_Digits) und alles wird gut

 
Otto Pauser:

Das Thema hatten wir doch vor kurzem....

Verwende NormalizeDouble(value,_Digits) und alles wird gut

Der Preis als Berechnung wird richtig ausgegeben (ist schon gerundet) 

Takeprofit und Stoploss funktioniert als Variable nicht.
(TP 1000 und SL 1000)
 
Janis Hellmuth:
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.
 
Carl Schreiber:
Dann musst die den Wert der Variablen (inkl. Bid & Ask) im Debugger kontrollieren.
Danke, werde ich versuchen.
An der Zeile ist alles in Ordnung?

trade.SellLimit(0.1, Berechnung,_Symbol,SL,TP,ORDER_TIME_GTC,0,0)
 
Janis Hellmuth:
Danke, werde ich versuchen.
An der Zeile ist alles in Ordnung?

trade.SellLimit(0.1, Berechnung,_Symbol,SL,TP,ORDER_TIME_GTC,0,0)

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="")
 
Janis Hellmuth:
Danke, werde ich versuchen.
An der Zeile ist alles in Ordnung?

trade.SellLimit(0.1, Berechnung,_Symbol,SL,TP,ORDER_TIME_GTC,0,0)

Kommt immer drauf an was du als sl, tp, und entry preis eingiebst

 
trade.SellLimit(Lots,Berechnung,_Symbol,StopLoss,TakeProfit,ORDER_TIME_GTC,0,0);
     
input const double TakeProfit = 100;
input const double StopLoss = 100;


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.

 
Janis Hellmuth:
trade.SellLimit(Lots,Berechnung,_Symbol,StopLoss,TakeProfit,ORDER_TIME_GTC,0,0);
     
input const double TakeProfit = 100;
input const double StopLoss = 100;


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


 
Janis Hellmuth:
trade.SellLimit(Lots,Berechnung,_Symbol,StopLoss,TakeProfit,ORDER_TIME_GTC,0,0);
     
input const double TakeProfit = 100;
input const double StopLoss = 100;


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

 
Problem gelöst. 

MQL5 ist im vergleich zur 4 komplizierter. 

trade.SellLimit(Lots,
(Ask+(Berechnung*_Point)),
_Symbol,
(Ask+(StopLoss*_Point)),
(Bid-(TakeProfit*_Point)),
0,
0);

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 =) 

Grund der Beschwerde: