НЕПРАВДА!
//---- нормализация размера лота до ближайшего стандартного значения 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. Ужасно - этот расчет лота не включает в себя управление капиталом, которое должен и обязан иметь любой здравомыслящий трейдер. Управление капиталом рассчитывает риск открытия позиции, который заключается - но не ограничивается - в стоимости потери денег до стоп-лосса.
Избегать потери денег - это часть игры.
![]()
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
GetLotForOpeningPos:
Автор: Nikolay Kositsin