точнее оно на одном тике закрывает на бай и отложки на бай а на втором на сел и отложки на сел
for( int i = OrdersTotal()-1; i >= 0; i--)
Направление цикла надо поменять. От OrdersTotal()-1 до 0
Держи готовую функцию.
void Close_Delete()/*********************Закрытие/удаление ордеров*********************/ { bool res; int i, totalC = OrdersTotal(); for(i = totalC; i >= 0 ; i--) { if(OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == _Symbol && OrderMagicNumber() == Magic) { if(OrderType() < 2) res = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40); if(OrderType() > 1) res = OrderDelete(OrderTicket()); } } }/*******************************************************************/
AlexeyVik:
Направление цикла надо поменять. От OrdersTotal()-1 до 0
Держи готовую функцию.
мета едитор говорит что он незнает
_Symbol
надо какую то библиотеку подключать?
Еще один вопрос у меня закрытие работает на тику и получаются накладки как сделать обработку например каждые 10 секунд или минуту?
Обработку можно устроить по таймеру. Для этого надо все нужные команды вписать в функцию OnTimer().
а можно с примером?
да, туда.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет все,
Надо закрыть несколько ордеров например
for ( i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderType() == OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,10,Yellow);}
if (OrderType() == OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,10,Yellow);}
if (OrderType() == OP_BUYSTOP || OrderType( )== OP_SELLSTOP) {OrderDelete(OrderTicket(), Yellow);}
}
}
но так как фкнция работает на каждом тике она не успевает все закрыть
подскажите как сделать если надо в какой то момент(когда наступит собитие) закрылись все позиции (открытые и отложеные )