Нужно смотреть функцию OrderSendReliable(), которая находится во включаемом файле
OrderReliable.mqh
Да, проблема в неправильном расчете Stop Loss при открытии ордера.
Так, в строках 195 и 234 (открытие Buy и Sell соответственно) главного файла эксперта значение переменной Diff уже выражено в категории цены, а не в пунктах, но его все равно умножают на Point. Нужно убрать это умножение. Тогда советник начинает открывать ордера.
Но остается еще одна ошибка: лишние перемещения стопа, когда он по факту не изменился. Такие перемещения приводят к ошибке 1. Чтобы ее не было, нужно в файле OrderReliable.mqh блок кода, начинающийся со строки 486:
if (false) { // This section is 'nulled out', because // it would have to involve an 'OrderSelect()' to obtain // the symbol string, and that would change the global context of the // existing OrderSelect, and hence would not be a drop-in replacement // for OrderModify(). // // See OrderModifyReliableSymbol() where the user passes in the Symbol // manually. OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES); string symbol = OrderSymbol(); int digits = MarketInfo(symbol,MODE_DIGITS); if (digits > 0) { price = NormalizeDouble(price,digits); stoploss = NormalizeDouble(stoploss,digits); takeprofit = NormalizeDouble(takeprofit,digits); } if (stoploss != 0) OrderReliable_EnsureValidStop(symbol,price,stoploss); }
заменить на такой:
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES); string symbol = OrderSymbol(); int digits = MarketInfo(symbol,MODE_DIGITS); if (digits > 0) { price = NormalizeDouble(price,digits); stoploss = NormalizeDouble(stoploss,digits); takeprofit = NormalizeDouble(takeprofit,digits); } if (fabs(stoploss - OrderStopLoss()) < Point() / 10.0 && fabs(takeprofit - OrderTakeProfit()) < Point / 10.0) return true; if (stoploss != 0) OrderReliable_EnsureValidStop(symbol,price,stoploss);
Да, проблема в неправильном расчете Stop Loss при открытии ордера.
Так, в строках 195 и 234 (открытие Buy и Sell соответственно) главного файла эксперта значение переменной Diff уже выражено в категории цены, а не в пунктах, но его все равно умножают на Point. Нужно убрать это умножение. Тогда советник начинает открывать ордера.
Но остается еще одна ошибка: лишние перемещения стопа, когда он по факту не изменился. Такие перемещения приводят к ошибке 1. Чтобы ее не было, нужно в файле OrderReliable.mqh блок кода, начинающийся со строки 486:
заменить на такой:
Всем профита!
Надо к имеющемуся условию
if(mEquityNetto <= mLevelCloseRise)
добавить
а так же mLevelCloseRise не меньше mMaxBalance
помогите правильно прописать

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго время суток!
Есть старенький советник, не открывает ордера. Помогите разобраться в коде, такое ощущение, что пытается отрыть стоп на уровне цены.