// Вычисление лотов double Lots() { double lot_min =MarketInfo(Symbol(),MODE_MINLOT); double lot_max =MarketInfo(Symbol(),MODE_MAXLOT); double lot_step=MarketInfo(Symbol(),MODE_LOTSTEP); double contract=MarketInfo(Symbol(),MODE_LOTSIZE); double vol; //--- check data if(lot_min<0 || lot_max<=0.0 || lot_step<=0.0) { PrintEx("CalculateVolume: invalid MarketInfo() results ["+lot_min+","+lot_max+","+lot_step+"]"); return(0); } if(AccountLeverage() <= 0) { PrintEx("CalculateVolume: invalid AccountLeverage() ["+AccountLeverage()+"]"); return(0); } //--- basic formula vol=NormalizeDouble(AccountFreeMargin()*G_MaximumRisk*AccountLeverage()/contract,2); //--- additional calculation // ... //--- check min, max and step vol=NormalizeDouble(vol/lot_step,0)*lot_step; if(vol<lot_min) vol=lot_min; if(vol>lot_max) vol=lot_max; return(vol); }где G_MaximumRisk - процент дипазита на который мона открываться.
Спасиб, попробую разобраться. Начну со второго, вроде бы поменьше, да и проще...
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ТОварищи, подскажите начинающему, как написать, чтобы советник сам выбирал размер лота в зависимости от остатка денег на счете по примерному алгоритму.
Если на счете до 1500$ то позиция открывается размером в 0. 1 лота.
если на счете от 1500 до 2500, то 0.2 лота.
от 2500 до 3500, то 0.3
и т.д.
ну и надо учесть, чтобы закрывалось тем же количеством лотов, что и открывалась сделка.
В языке не силен, пока пытаюсь перенести, то что создал в метастоке в советник.
Спасибо за ответы)))