if(OrdersTotal()>0 && sell)
{
total=OrdersTotal();
for(cnt=total-1;cnt>=0l;cnt--)
if(OrderSelect(cnt,SELECT_BY_POS) && OrderType()==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);
}
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
if(OrdersTotal()>0 && sell) { total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) if(OrderSelect(cnt,SELECT_BY_POS) && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet); }Проверка показала, что некоторые ордера имеют OrderSelect(cnt,SELECT_BY_POS)=false и не закрываются. Хотя они были открыты без проблем много баров назад. Следующее изменение кода исправляет ошибку
if(OrdersTotal()>0 && sell) { while(OrdersTotal()>0) { total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) if(OrderSelect(cnt,SELECT_BY_POS) && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet); } }То есть прогоняем луп закрытия всех позиций до тех пор пока OrdersTotal не выдаст ноль. Уважаемые разработчики, объясните в чем проблема. Я даже использовал ваш скрипт "close all open position". Всё равно оставляет открытые позиции незакрытыми.