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: 4384
Beiträge: 40087
Benutzer: 6.743
Aktive Benutzer: 228
Links: 80
Wir begrüßen unseren neuesten Benutzer: Neewa
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Tagen
- Neewa
vor 2 Tagen
- Solution
vor 3 Tagen
- hw543
vor 5 Tagen
- eurix
vor 5 Tagen
- Yogi

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 186
Gesamt: 186
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
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.

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

Hallo.

Hast du es schon damit versucht:

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

---Leopold---
  #3 (permalink)  
Alt 11.09.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 886
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?
  #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
  #5 (permalink)  
Alt 11.09.19
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 268
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
  #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
  #7 (permalink)  
Alt 11.09.19
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 268
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
  #8 (permalink)  
Alt 11.09.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 886
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?
  #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);
  #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
Thema geschlossen

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 14:06 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2020 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.
-----------------------------------------------------------------------------------------------------------------------------