Bibliotecas: GetLotForOpeningPos

 

GetLotForOpeningPos:

Función que calcula el tamaño del lote dependiendo de la cantidad de dinero en la moneda del depósito que se utiliza.

Autor: Nikolay Kositsin

 

¡ERROR!

//---- normalizar el tamaño del lote al valor estándar más próximo 
lot = LOTSTEP*MathFloor(lot/LOTSTEP);

El cálculo del paso del lote mínimo es incorrecto.

Lo que debemos hacer es :

1. Restar el lote (bruto) con el lote mínimo, porque siempre tenemos que empezar a calcular el lote desde el lote mínimo definido por el broker. Si el resultado es menor que 0 entonces no tenemos lote.

lot -= MinLot;
if (lot < 0) lot = 0; //--- not even qualify for minimum lot

2. 2. Calcular el número de pasos necesarios para llegar al lote. No utilice la función MathFloor(), porque el tipo de retorno de MathFloor() es doble, con lo cual se corre el riesgo de tener un error cuando el lote final no cumpla con los requerimientos del broker. Utilice alguna variable de tipo entero.

int the_step;

the_step = lot/LOTSTEP;

3. Cálculo final, obtener todos juntos

lot = MinLot + the_step*STEPLOT;

4. Un cálculo completo

//---- normalizar el tamaño del lote al valor estándar más próximo
lot -= MinLot;
if (lot < 0) lot = 0;

int the_step;
the_step = lot/LOTSTEP;

lot = MinLot + the_step*STEPLOT;

//---- comprobación del lote para el valor mínimo permitido
if (lot < MinLot) lot=0;

//---- comprobación del lote para el valor máximo permitido 
if(lot>MaxLot) lot=MaxLot;

5. Terrible - este cálculo del lote no incluye la gestión del dinero que cualquier trader con sentido común debería y debe tener. La gestión del dinero calcula el riesgo de la posición de apertura, que es - pero no limitado a - el costo de perder dinero hasta el Stop Loss.

Evitar perder dinero es parte del juego.

 

Hola Nikolay,

Soy nuevo en MT5 y me pregunto si usted puede sugerir un indicador que hace esto bien como usted sugiere?

Gracias por tu post informativo.

Saludos