Здравствуйте. Выкладываю свое субъективное мнение.
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 тоже не мешало бы проверить
Насчет самой формулы, то по моему она верна. Только не пойму ее смысла (я новичек еще), если объясните - буду признателен
Как я уже сказал, это лично мое мнение и оно может не соответствовать действительности :)
Удачи
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Lot_Volume:
Author: Andrey