Скрипты: Расчёт лотов.
тут нехватает еще 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); }
Расчеты размера сделки без учета наименьшего возможного размера основаны на предположении о том, что "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
Расчёт лотов.:
Author: IURII TOKMAN