Продолжаю писать блок расчета мани-менеджмента.
Компилируется без ошибок, но при изменении входных параметров Risk и StopLoss конечный результат (объем лота) не меняется. Как будто в буфере есть какие-то значения по умолчанию. Прошу помочь разобраться.
Совсем уже обленились).
Эта строчка не может скомпилироваться по причине разного количества открывающихся и закрывающихся скобок:
Comment(DoubleToString(LotsByRisk(Risk,StopLoss),2);
Совсем уже обленились).
Эта строчка не может скомпилироваться по причине разного количества открывающихся и закрывающихся скобок:
Видимо скобка во время копирования кода потерялась). Исправил, но проблема осталась. Расчет производится без привязки к задаваемым "Risk" и "StopLoss"...
Видимо скобка во время копирования кода потерялась). Исправил, но проблема осталась. Расчет производится без привязки к задаваемым "Risk" и "StopLoss"...
в свойствах внешних параметров советника не нули?
попоробуйте сначала так:
double Risk = 3; int StopLoss = 40;
lot = AccountInfoDouble(ACCOUNT_BALANCE) * risk / 100 / SL; // стоимость 1 пункта относительно % риска и размера стоп-лосса
вот тут нужно попробовать так:
lot = AccountInfoDouble(ACCOUNT_BALANCE) * risk / 100.0 / SL; // стоимость 1 пункта относительно % риска и размера стоп-лосса
или SL сделать double
или double(SL) написать
в MQL5 иногда бывает автоматическое приведение типов там где его не ожидаешь
Risk и risk - разные переменные.
StopLoss и SL - тоже.
Продолжаю писать блок расчета мани-менеджмента.
Компилируется без ошибок, расчет производится, но при изменении входных параметров Risk и StopLoss конечный результат (размер лота) не меняется. Прошу помочь разобраться.
Слишком большой код и для каждой Валюты прописывать надо. Вот код попроще.
double LotsByRisk(int op_type,double risk,int sloss) { double lot_min = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN); double lot_max = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX); double lot_step = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP); double lotcost = ((SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE)*_Point)/(SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))); double lot = 0; double UsdPerPip = 0; lot = AccountInfoDouble(ACCOUNT_BALANCE)*risk/100; UsdPerPip = lot/sloss; lot = NormalizeDouble(UsdPerPip/lotcost, 2); lot = NormalizeDouble(lot/lot_step, 0) * lot_step; if(lot < lot_min) lot = lot_min; if(lot > lot_max) lot = lot_max; return(lot); }

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Продолжаю писать блок расчета мани-менеджмента.
Компилируется без ошибок, расчет производится, но при изменении входных параметров Risk и StopLoss конечный результат (размер лота) не меняется. Прошу помочь разобраться.