Bibliotecas: GetLotForOpeningPos

 

GetLotForOpeningPos:

A função calcula o tamanho do lote de acordo com o capital depositado na moeda a ser utilizada.

Autor: Nikolay Kositsin

 

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.

 

Oi Nikolay,

Sou novo no MT5 e gostaria de saber se você pode sugerir um indicador que faça isso tão bem quanto você sugere.

Obrigado por sua postagem informativa.

Abraços