¡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.
![]()
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
GetLotForOpeningPos:
Autor: Nikolay Kositsin