Бред, все не так...
Ну что б работало попробуйте просто:
int m_1=0;
int m_2=1;
Еще неплохо проверять результат OrderSelect
Бред, все не так...
Ну что б работало попробуйте просто:
int m_1=0;
int m_2=1;
Еще неплохо проводить результат OrderSelect
Да понимаю что все не так! На большее пока ума не хватает)))))))))))
А так работает! (не могли бы обьяснить почему м_1=0) ведь нет ордера с порядковым номером "0" или я ошибаюсь?
А OrderSelect я проведу и OrderDelete тоже, просто с этим не мог разобраться!
И все же можете обьяснить?
Спасибо Figar0!!
А так работает! (не могли бы обьяснить почему м_1=0) ведь нет ордера с порядковым номером "0" или я ошибаюсь?
А OrderSelect я проведу и OrderDelete тоже, просто с этим не мог разобраться!
И все же можете обьяснить?
1)Именно с "0" индекса и начинается нумерация ордеров.
2)Не провести, а проверить результат операции, я сначала немного очепятался:)
3)В таких простых программах гораздо удобне работать с ордерами в цикле их полного перебора, чем пытаться подсунуть номер ордера... Что проще сделать две функции, первая перебирает все ордера советника, и возвращает "true" если находит рыночный ордер (Бай или селл), вторая в случае возврата первой "true", снова перебирает все ордера и удаляет отложки. Так сможете избежать лишних ошибок, и гораздо удобнее обрабатывать нештатные ситуации.
Да понимаю что все не так! На большее пока ума не хватает)))))))))))
А так работает! (не могли бы обьяснить почему м_1=0) ведь нет ордера с порядковым номером "0" или я ошибаюсь?
А OrderSelect я проведу и OrderDelete тоже, просто с этим не мог разобраться!
И все же можете обьяснить?
Спасибо Figar0!!
нумерация списковая с нуля
if(OrderSelect(0,SELECT_BY_POS) && OrderType()<2) {if(OrderSelect(1,SELECT_BY_POS)) OrderDelete(OrderTicket());}
if(OrderSelect(1,SELECT_BY_POS) && OrderType()<2) {if(OrderSelect(0,SELECT_BY_POS)) OrderDelete(OrderTicket());}
3)В таких простых программах гораздо удобне работать с ордерами в цикле их полного перебора, чем пытаться подсунуть номер ордера... Что проще сделать две функции, первая перебирает все ордера советника, и возвращает "true" если находит рыночный ордер (Бай или селл), вторая в случае возврата первой "true", снова перебирает все ордера и удаляет отложки. Так сможете избежать лишних ошибок, и гораздо удобнее обрабатывать нештатные ситуации.
Figar0, предполагаю, что у автора изначально всего два отложенника поэтому, думаю, можно и не в цикле?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
if (OrdersTotal()==2)
{
int m_1=1;
int m_2=2;
OrderSelect(m_1,SELECT_BY_POS);
int info_6=OrderType();
if(info_6==OP_BUY || info_6==OP_SELL)
{
bool info_7=OrderSelect(m_2,SELECT_BY_POS);
OrderDelete(OrderTicket());
}
OrderSelect(m_2,SELECT_BY_POS);
int info_8=OrderType();
if(info_8==OP_BUY || info_7==OP_SELL)
{
bool info_9=OrderSelect(m_1,SELECT_BY_POS);
OrderDelete(OrderTicket());
}
return(0);
}
Эта часть советника должна закрывать один из отложенных ордеров при срабатывании другого. Но он закрывает второй из выставленных отложенных ордеров сразу после установки.
в чем проблемма-не могу понять?
Заранее всем респект!