ERRADO!
//---- normalizando o tamanho do lote para o valor padrão mais próximo lot = LOTSTEP*MathFloor(lot/LOTSTEP);
O cálculo do passo mínimo do lote está errado!
O que devemos fazer é :
1. Subtrair o lote (bruto) do lote mínimo, pois sempre temos que começar a calcular o lote a partir do lote mínimo definido pela corretora. Se o resultado for menor que 0, então não temos lote.
lot -= MinLot; if (lot < 0) lot = 0; //--- not even qualify for minimum lot
2. Calcule quantos passos são necessários para que o lote de passos chegue ao lote. Não use a função MathFloor(), pois o tipo de retorno de MathFloor() é duplo, o que pode causar um erro quando o lote final não estiver de acordo com as exigências da corretora. Use alguma variável do tipo inteiro.
int the_step;
the_step = lot/LOTSTEP;3. Cálculo final, junte todos eles
lot = MinLot + the_step*STEPLOT;
4. Um cálculo completo
//---- normalizando o tamanho do lote para o valor padrão mais próximo lot -= MinLot; if (lot < 0) lot = 0; int the_step; the_step = lot/LOTSTEP; lot = MinLot + the_step*STEPLOT; //---- verificação do lote quanto ao valor mínimo permitido if (lot < MinLot) lot=0; //---- verificando o lote quanto ao valor máximo permitido if(lot>MaxLot) lot=MaxLot;
5. Péssimo - esse cálculo de lote não inclui o gerenciamento de dinheiro que qualquer trader de bom senso deve ter. O gerenciamento de dinheiro calcula o risco da posição de abertura, que é - mas não se limita a - o custo de perder dinheiro até o Stop Loss.
Evitar a perda de dinheiro faz parte do jogo.
![]()
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
GetLotForOpeningPos:
Autor: Nikolay Kositsin