Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4331
Beiträge: 39798
Benutzer: 6.660
Aktive Benutzer: 206
Links: 80
Wir begrüßen unseren neuesten Benutzer: amin233
Mit 1.311 Benutzern waren die meisten Benutzer gleichzeitig online (16.09.19 um 01:18).
Neue Benutzer:
vor 3 Tagen
- amin233
vor 3 Tagen
- foo
vor 4 Tagen
- ecollabora...
vor 6 Tagen
- karakar
vor 6 Tagen
- exesor

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 178
Gesamt: 179
Team: 0
Team:  
Benutzer:  traderdoc
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 11.09.19
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 23
UweBln befindet sich auf einem aufstrebenden Ast
Standard 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.

.
Mit Zitat antworten
  #2 (permalink)  
Alt 11.09.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 355
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Hast du es schon damit versucht:

https://docs.mql4.com/convert/normalizedouble

---Leopold---
Mit Zitat antworten
  #3 (permalink)  
Alt 11.09.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 812
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

@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?
Mit Zitat antworten
  #4 (permalink)  
Alt 11.09.19
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 23
UweBln befindet sich auf einem aufstrebenden Ast
Standard

@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
Mit Zitat antworten
  #5 (permalink)  
Alt 11.09.19
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 237
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von UweBln Beitrag anzeigen
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.
TestScript, 6 Durchgänge, die Werte werden extra auf volle Länge angezeigt, damit man sieht was wo gekürzt wird:
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
Mit Zitat antworten
  #6 (permalink)  
Alt 11.09.19
Neues Mitglied
 
Registriert seit: Mar 2017
Beiträge: 23
UweBln befindet sich auf einem aufstrebenden Ast
Standard

@AVT

Das sieht auf den ersten Blick gut aus.
Mal sehen wie ich das eingebunden kriege.

Ich mache Rückmeldung.

Danke
Mit Zitat antworten
  #7 (permalink)  
Alt 11.09.19
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 237
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von UweBln Beitrag anzeigen
Mal sehen wie ich das eingebunden kriege.
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
Mit Zitat antworten
  #8 (permalink)  
Alt 11.09.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 812
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

@UweBln

Darf ich mal nach dem Zweck des Ganzen fragen? Warum willst Du Lots mehrmals mit 1,5 multiplizieren?
Mit Zitat antworten
  #9 (permalink)  
Alt 12.09.19
Mitglied
 
Registriert seit: Jun 2011
Ort: Minsk, Weißrussland
Beiträge: 72
Bobs befindet sich auf einem aufstrebenden Ast
Standard

Man kann auch MathCeil() verwenden:
Lot=NormalizeDouble(MathCeil(0.015*100)/100,2);
Mit Zitat antworten
  #10 (permalink)  
Alt 12.09.19
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 180
RetepM befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2019 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------