тут нехватает еще MODE_MINLOT, бывают ДЦ с MINLOT=0.1, а тут 0.09
int Risk=10; double Lots() { Lot=NormalizeDouble(AccountEquity()*Risk/100/1000,1); double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT); if (Lot==0 ) Lot=Min_Lot; return(Lot); }
Здравствуйте,
Замечание 1.
Расчеты размера сделки без учета наименьшего возможного размера основаны на предположении о том, что "MarketInfo(Symbol(),MODE_LOTSTEP)" равно "MarketInfo(Symbol(),MODE_MINLOT)".
В общем случае такое предположение является слишком смелым.
Расчеты размера сделки без учета наименьшего возможного размера основаны на предположении о том, что "MarketInfo(Symbol(),MODE_LOTSTEP)" равно "MarketInfo(Symbol(),MODE_MINLOT)".
В общем случае такое предположение является слишком смелым.
Замечание 2.
Выражения вида "if (Lot==0 ) Lot=Min_Lot;" ведут к существенным погрешностям при попытках ограничить риски.
Пусть задано ограничение на размер залога в размере 10% от размера депозита.
В случае когда "AccountEquity()*Risk/100/1000" равно, например, "0.02", и "Min_Lot = MarketInfo(Symbol(),MODE_MINLOT)" равен, например, "0.10", то размер залога окажется примерно в 5 раз больше допустимого.
Должно быть "if (Lot==0 ) Lot=0;".
С уважением,
Ais
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Расчёт лотов.:
Author: IURII TOKMAN