|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Rundung
Guten Morgen,
ich habe folgendes Problem: Ich möchte eine anfängliche 0,01 Lot Positionsgröße multiplizieren, z.B. x1,5 Der erste Durchlauf soll 0,01 sein Der zweite Durchlauf soll mit 1,5 multipliziert werden, das Ergebnis ist dann 0,01 x 1,5 = 0,015. Der MT4 kürzt die 0,005 leider weg. Wie kann ich es erreichen, dass er hier aufrundet auf 0,02? Beim dritten Durchlauf hätte ich dann 0,02 x1,5 = 0,03 Beim folgenden dann 0,03 x1,5 = 0,045 die wünschenswert auch aufgerundet werden soll. Danke für die Hilfe. . |
|
|||
|
|
|||
@UweBln
Rundet er nicht automatisch auf? Jedenfalls wenn Deine Lots nur mit 2 Stellen nach dem Punkt angegeben werden. Haben Deine Lots 3 Stellen nach dem Punkt? |
|
|||
@Leopold, ich kann mit normalizedouble glaub ich nichts anfangen.
@MA-EA Nein, natürlich haben meine Lots nur zwei Stellen also 0,01 Lot (kleinste Einheit). Ich betreibe einen EA der gewisse Vorgaben berechnet. Ich hatte oben beschrieben um welche Vorgänge es sich handelt. Der EA rechnet also aus 0,01 x1,5 = 0,01(5) die (5) kürzt der Broker natürlich weg. Deswegen brauche ich eine Aufrundung auf 0,02 Lot. Danke für die Hilfe |
|
|||
Zitat:
Code:
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double MinLot = 0.01; //SmallestLotSize double StartLots = 0.01; //StartWithSmallest double NewLots = StartLots; //InitialValue double Multiplier = 1.5; //FixMultiplierForLots int Interations = 6; //HowOftenToMultiply for(int i=0; i<Interations; i++) //fromZeroToInterations { NewLots=NewLots*Multiplier; //Multiply double Deminite=NewLots/MinLot; //DivideByMinLot double Result=NormalizeDouble(Deminite,2); //NormalizeTo2Digits Print(" i="+IntegerToString(i) //PrintResults +" NewLots="+DoubleToStr(NewLots) +" Deminite="+DoubleToStr(Deminite) +" Result="+DoubleToStr(Result) ); } } //+------------------------------------------------------------------+ |
|
|||
@AVT
Das sieht auf den ersten Blick gut aus. Mal sehen wie ich das eingebunden kriege. Ich mache Rückmeldung. Danke |
|
|||
Dann schreib bei der Einbindung lieber geteilt durch Lotstep anstatt MinLot, das ist zwar meistens dasselbe, aber korrekter wäre wenn man durch die LotStep teilt. Sorry, geht bei mir manchmal unter sowas. AVT
|
|
|||
@UweBln
Darf ich mal nach dem Zweck des Ganzen fragen? Warum willst Du Lots mehrmals mit 1,5 multiplizieren? |
|
|||
Man kann auch MathCeil() verwenden:
Lot=NormalizeDouble(MathCeil(0.015*100)/100,2); |
|
|||
Ich würde mir das einfach machen. Schau nach, ob die Lotgröße gleich 0.01 ist. Wenn Ja multipliziere mit 2, ansonsten mit 1.5. Das ganze ist natürlich davon abhängig, welche Lotgrößen dein Broker für das aktivierte Symbol erlaubt: Du musst dem EA sonst auch noch sagen, für welches Symbol() das gelten soll...
Grüße |
Lesezeichen |
|
|