Библиотеки: GetLotForOpeningPos

 

GetLotForOpeningPos:

Функция, производящая расчёт величины лота в зависимости от величины используемых финансовых средств в валюте депозита.

Автор: Nikolay Kositsin

 

НЕПРАВДА!

//---- нормализация размера лота до ближайшего стандартного значения 
lot = LOTSTEP*MathFloor(lot/LOTSTEP);

Расчет шага лота min-lot неверен!

Что мы должны сделать, так это :

1. Вычесть (сырой) лот из минимального лота, потому что мы всегда должны начинать вычисление лота с минимального лота, определенного брокером. Если результат меньше 0, то у нас нет лота.

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

2. Рассчитайте, сколько шагов необходимо сделать для получения лота. Не используйте функцию MathFloor(), так как возвращаемый тип MathFloor() - double, что чревато ошибкой при несоответствии конечного лота требованиям брокера. Используйте переменную целочисленного типа.

int the_step;

the_step = lot/LOTSTEP;

3. Окончательный расчет, соберите их все вместе

lot = MinLot + the_step*STEPLOT;

4. Полный расчет

//---- нормализация размера лота до ближайшего стандартного значения
lot -= MinLot;
if (lot < 0) lot = 0;

int the_step;
the_step = lot/LOTSTEP;

lot = MinLot + the_step*STEPLOT;

//---- проверка лота на минимально допустимое значение
if (lot < MinLot) lot=0;

//---- проверка лота на максимально допустимое значение 
if(lot>MaxLot) lot=MaxLot;

5. Ужасно - этот расчет лота не включает в себя управление капиталом, которое должен и обязан иметь любой здравомыслящий трейдер. Управление капиталом рассчитывает риск открытия позиции, который заключается - но не ограничивается - в стоимости потери денег до стоп-лосса.

Избегать потери денег - это часть игры.

 

Здравствуйте, Николай,

Я новичок в MT5 и хотел бы узнать, можете ли вы предложить индикатор, который делает это так хорошо, как вы предлагаете?

Спасибо за ваш информативный пост.

Будьте здоровы