как-то так: //////////////////////////////////////в тело советника\\\\\\\\\\\\\\\ if(GetOrdersProfit(OP_BUY) >= 0.0) { closeall(0); //закрыть только покупки } if(GetOrdersProfit(OP_SELL) >= 0.0) { closeall(1); //закрыть только продажи } if(/*условие на закрытие всех рыночных позиций*/) closeall(10); //закрыть все рыночные ///////////////////////////////////// void closeall(int typ) //функция выборочного закрытия позиций { bool TicketClosed=false; if(typ>1 && typ!=10) { Print("wrong order type!"); return; } for(int h=OrdersTotal()-1; h>=0; h--) { if(OrderSelect(h,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && (OrderType()==typ || typ==10)) { TicketClosed=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Yellow); } } } } тут ещё всякие ошибки обрабатывать нужно, это уже по вкусу.
Большое спасибо за помощь. Все работает.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь