Скрипты: Расчёт лотов.

 

Расчёт лотов.:

Расчёт количества лотов от заданного процента свободных средств.

Author: IURII TOKMAN

[Удален]  

тут нехватает еще 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)".
В общем случае такое предположение является слишком смелым
.

Замечание 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