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

 

Lot_Volume:

Автоматический расчет размера лота от указанного процента свободных средств.

Author: Andrey

 

Здравствуйте. Выкладываю свое субъективное мнение.

extern string Lots;
double Lot_Volume()

Мне кажется это очень неудобно: задавать лоты таким вот образом, тем более это вынесено в параметр по умолчанию... если программисту нужно, то он сам может вынести, а навязывать это ему...

Еще предлагаю убрать вообще расчет фиксированный размер лота. Что там расчитывать-то? Думаю всем интересно именно расчитывать лоты по проценту . Соответственно должно получиться что-то типа

double Lots_Volume(int percentage)

Теперь дальше

      double step = MarketInfo(Symbol(),MODE_LOTSTEP);

честно говоря так и не понял для чего нам step, ибо в формуле


      double Lots2 = NormalizeDouble(((AccountFreeMargin()*(Lots1/100)/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/step)*step),1);

/step)*step - тут без комментариев просто ...

И 100 замените на 100.0 во избежание ненужных округлений. Незнаю насколько это уместно в данной ситуации, но в будующем вы оградите себя от лишней отладки

Еще в корне неправильно навязывать округление лота до десятых. MODE_LOTSTEP Вам в помощь

   if (Lots2<MarketInfo(Symbol(),MODE_MINLOT))
      {
         Lots2 = MarketInfo(Symbol(),MODE_MINLOT);
         Alert ("Размер лота очень мал. Установлен минимальный размер! ", Lots1);
      }

На MODE_MAXLOT тоже не мешало бы проверить



Насчет самой формулы, то по моему она верна. Только не пойму ее смысла (я новичек еще), если объясните - буду признателен

Как я уже сказал, это лично мое мнение и оно может не соответствовать действительности :)

Удачи