Во первых правильно вставьте код.
По коду у вас проверка по ASK позиции BUY. А закрывается она по BID. Вполне может быть что из-за
этого и не правильные закрытия. Спред ни кто не отменял.
вопрос остается открытым в чем причина?
В том, что непонятно, какой именно ордер выбран. Вполне возможно, что OrderType(), OrderTicket() и OrderLots() указывают на Луну.
И как правильно написать код?
О таких проблемах лучше писать соответствующем разделе форума (для МТ4), а код вставлять через Alt+S.
В том, что непонятно, какой именно ордер выбран. Вполне возможно, что OrderType(), OrderTicket() и OrderLots() указывают на Луну.
Во первых правильно вставьте код.
По коду у вас проверка по ASK позиции BUY. А закрывается она по BID. Вполне может быть что из-за
этого и не правильные закрытия. Спред ни кто не отменял.
Если указывает на луну то почему проверку закрытия ордера проходит? Включая проверку закрытия условия по RSI.
Какой-то ордер всегда выбран. Вот его и закрывает советник. Но что там в реальности происходит - непонятно. Поэтому сначала выбирают нужный ордер (OrderSelect()), а уже потом совершают с ним действия.
Какой-то ордер всегда выбран. Вот его и закрывает советник. Но что там в реальности происходит - непонятно. Поэтому сначала выбирают нужный ордер (OrderSelect()), а уже потом совершают с ним действия.
Но ордер один, больше ордеров нет соответственно и выбирать ему не из чего. Стратегия линейная. Или бот через определенное время может потерять адрес ордера? %-/
История счета тоже пустая? Ордер может быть выбран из истории счета.
В любом случае ордер нужно выбрать. Покажите, что происходит до вызова функции CheckForClose(). Там есть вызов OrderSelect()?
bool CloseOrder_b = False; bool CloseOrder_s = False; for(int pos = 0; pos < OrdersTotal(); pos++){ if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderSymbol() == Symbol() && OrderMagicNumber() == ... && OrderType() == OP_BUY && ...){ CloseOrder_b = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),(int)MarketInfo(Symbol(),MODE_SPREAD),clrNONE);} if(OrderSymbol() == Symbol() && OrderMagicNumber() == ... && OrderType() == OP_SELL && ...){ CloseOrder_s = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),(int)MarketInfo(Symbol(),MODE_SPREAD),clrNONE);} }
Подставь свои условия в код.
История счета тоже пустая? Ордер может быть выбран из истории счета.
В любом случае ордер нужно выбрать. Покажите, что происходит до вызова функции CheckForClose(). Там есть вызов OrderSelect(с
сделал проверку ошибок
выводит именно ошибку условия, то-есть ему не нравится именно условие. Наипростейшее МА по отношению к Ask
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
кто может подсказать как решить проблему закрытия ордера? Есть код выполнения на закрытие
выполняет не правильное закрытие сделки
при установке правильного условия
бот отказывается принимать это условие
вопрос остается открытым в чем причина? И как правильно написать код?