Когда используется выбор по тикету в функции OrderSelect(), то значение третьего параметра игнорируется. В итоге ордер с заданным тикетом может находиться не в списке рабочих ордеров, а в истории счета. Поэтому при таком подходе к выбору ордера нужно дополнительно проверять, в каком списке находится ордер:
if (OrderSelect(ordz[i].order_ticket,SELECT_BY_TICKET)) { if (OrderCloseTime() == 0) { // Ордер выбран в списке рабочих ордеров, с ним возможны торговые операции } else { // ордер в истории счета, торговые операции невозможны, ордеру уже ничто не поможет ))) } }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот такой код в тестере оногда выдает ошибку 4108
С чем это может быть связано?
if(OrderSelect(ordz[i].order_ticket,SELECT_BY_TICKET,MODE_TRADES)) {
ot=OrderType();
if(ot>1){
if(!OrderDelete(ordz[i].order_ticket,clrMagenta)){
Print(ordz[i].order_ticket,"--------- Ordertype ",ot);
}
}
}