Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 26.01.15
Benutzerbild von markusrgb
markusrgb markusrgb ist offline
Mitglied
 
Registriert seit: Jan 2015
Beiträge: 34
markusrgb befindet sich auf einem aufstrebenden Ast
Standard Erweitertes Nachkomma Stellen Problem

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);
      }
}