Hallo Zusammen,
Bin schon ne ganze weile am googeln aber finde nichts zu meinem Spezielen Problem und das ich noch Anfänger auf dem Gebiet MT Programmierung bin macht es auch nicht leichter
Mit dem Befehl "Digits" kann ich ja soweit ich das Richtig verstanden habe, die Nachkommastellen je nach Broker auf die richtige Anzahl Nachkommastellen Reduzieren.
Jetzt ist es aber so dass mein Broker im Falle des DAX die Daten in 0,25er Schritten ... (0,25 - 0,5 - 0,75 - 0,00) z.B. 10744.75 ... 10744.00 ... 10745.25
liefert
Als SL oder TP werden aber häufig Werte errechnet, die als Nachkommastelle keine 0, 0,25, 0,50 oder 0,75 haben
sondern so sachen wie : 10744.43 oder 10745.77
Code:
TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_Prozent/100)),Digits);
und das akzeptiert der Broker eben nicht und verweigert das OrderModify().
Jetzt ist meine Frage welche Möglichkeit es gibt diesen Berechneten "NormalizeDouble" Wert in 0,25 oder gerne auch 0,5 er schritten zu Runden?
Soll also z.B. aus 10744.43 --> 10744.50 machen
Code:
// TP bei Long Deals setzen
if (OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderTakeProfit()==0)
{
TakeProfit = NormalizeDouble(OrderOpenPrice()*(1+(TP_Prozent/100)),Digits);
OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
}
}
// TP bei Short Deals setzen
if (OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderTakeProfit()==0)
{
TakeProfit = NormalizeDouble(OrderOpenPrice()/(1+(TP_Prozent/100)),Digits);
OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange);
}
}