Lot runden

 

Es gib Dituationen in den die kalkulierte Lot zb 1.02 ist aber die Schrittweite alle 1.0 lot ist.

Also hatte ich mir überlegt eine Funktion zu schreiben die mir die Lot abrunden soll, ich seh nicht wo es klemmt, kann mir wer helfen?

double roundLotdown(double lots)
  {
   double startLots = lots;
   double lotstep = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),2);
   lots = NormalizeDouble(lots,2);

   double rest = (lots - NormalizeDouble(lots/lotstep,2)) * lotstep;
   rest = NormalizeDouble(rest,2);
   if(rest != 0)
     {
      for(double i = 0.01; i <= lotstep; i += 0.01)
        {
         lots = NormalizeDouble(lots - 0.01,2);
         rest = (lots - NormalizeDouble(lots/lotstep,2)) * lotstep;
         rest = NormalizeDouble(rest,2);
         if(rest == 0)
            break;
        }
     }
     
   return lots;
  }
 

Versuch es mal damit:

double NormDoub( double v, double stp){ return(stp*MathFloor(v /stp)); }   // lots = NormDoub(lots, MarketInfo(_Symbol,MODE_LOTSTEP)) // Lotsize

Auf eigene Gefahr!!

 
Carl Schreiber #:

Versuch es mal damit:

Auf eigene Gefahr!!

Danke dir, laut meiner exceltabelle sollte 1Lot rauskommen, da sind 86 schon etwas zu viel ...

Aber danke dir, war ja auf eigene Gefahr;

 
Aleksi-Trader #:

Danke dir, laut meiner exceltabelle sollte 1Lot rauskommen, da sind 86 schon etwas zu viel ...

Aber danke dir, war ja auf eigene Gefahr;

Das ist aber keine Excel-Formel!

Wie hast Du denn das gerechnet?

 
Carl Schreiber #:

Das ist aber keine Excel-Formel!

Wie hast Du denn das gerechnet?

das ging über die Pipwert

=WENNS(F7=0,1;ABRUNDEN((F12-F6)/F23;0)*(F7);F7>=1;ABRUNDEN((F12-F6)/F23;1))


wobei:

F6=Kommission

F7=Punktwer des CFD

F12=Risiko pro Trade als Betrag

F23=Gesamtrisiko pro CFD

Das ExcelTool ist Kommerziell.... daher kann ich es nicht weiter geben (Copyright will ich nicht verletzen)

 
Aleksi-Trader #:
das ging über die Pipwert

=WENNS(F7=0,1;ABRUNDEN((F12-F6)/F23;0)*(F7);F7>=1;ABRUNDEN((F12-F6)/F23;1))


wobei:

F6=Kommission

F7=Punktwer des CFD

F12=Risiko pro Trade als Betrag

F23=Gesamtrisiko pro CFD

Das ExcelTool ist Kommerziell.... daher kann ich es nicht weiter geben (Copyright will ich nicht verletzen)

Meine Formel bringt nur ein berechnetes Volumen auf genau einen Wert, der beim Broker umsetzbar ist, also zB. auf eine ganze Zahl, wenn es um Aktien geht, wo stp=1, oder 0.01 meist bei Forex.

NormalizeDouble ist überflüssig! Es geht um reelle Zahlen (double), die über Exponentialfunktionen repräsentiert werden, sodass es immer nur die nächste, so darstellbare Zahl ist.

Und zur Losgrößenermittlung basierend auf dem Risiko und der Kontogröße (die fehlt in Deiner Formel: viel oder wenig Geld => gleiche Losgröße?) gibt es viele Beispiele, zB.: https://www.mql5.com/en/forum/155104/page2#comment_3798113

Calculate lotsize from money (USD)
Calculate lotsize from money (USD)
  • 2015.03.17
  • www.mql5.com
Hi, I need a simple function. I know stop loss and fixed amount of money (let's say in USD). I'd like to know, where SL should be placed...
 
Carl Schreiber #:

Meine Formel bringt nur ein berechnetes Volumen auf genau einen Wert, der beim Broker umsetzbar ist, also zB. auf eine ganze Zahl, wenn es um Aktien geht, wo stp=1, oder 0.01 meist bei Forex.

NormalizeDouble ist überflüssig! Es geht um reelle Zahlen (double), die über Exponentialfunktionen repräsentiert werden, sodass es immer nur die nächste, so darstellbare Zahl ist.

Und zur Losgrößenermittlung basierend auf dem Risiko und der Kontogröße (die fehlt in Deiner Formel: viel oder wenig Geld => gleiche Losgröße?) gibt es viele Beispiele, zB.: https://www.mql5.com/en/forum/155104/page2#comment_3798113

Nicht wirklich, dlic Losgröße wird berechnet, basierend auf dem Risiko und der Kontogröße... es werden sogar weitere Kosten wie Spread Kommission berücksichtigt.