Скачать MetaTrader 5

Отличие реала от тестера (какие проверки добавлять). - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Роман
7939
Роман  
skinet21:
Подскажите, пожалуйста, как написать при закрытии ордера, чтобы если пришел сигнал на закрытие, то ордер закрывался до тех пор пока не закроится, даже если условие на закрытие уже не выполняется. вот код условия закрытия ордера for(int i=0;i =Ask){ OrderClose(OrderTicket(),OrderLots(),Ask,proskalse,White); } } } } } странно часть кода обрезали.


В самом внешнем цикле закрытия ордеров укажите условие - пока есть рыночные ордера, т.е. пока их количество не равно нулю, то дальше уже в цикле по живым ордерам производите их закрытие, а вообще гляньте - хотя бы ради прикола учебник, например здесь - функция CloseAll() и отобразите у себя по аналогии, если у Вас не ведутся массивы с характеристиками ордеров, просто выбираете ордера и вперед...

Примечание. В цикле For... ордера необходимо выбирать от последнего к первому при их закрытии.

Например, так

//+------------------------------------------------------------------+
//| Закрытие всех позиций                                            |
//+------------------------------------------------------------------+

void CloseAllOrders(int magic)
{
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (OrderSelect(orderIndex, SELECT_BY_POS))
      {
         if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == magic))
         {
            if ((OrderType() != OP_BUY) && (OrderType() != OP_SELL))
            {
               OrderDelete(OrderTicket());
            }
            else
            {
               ClosePosBySelect();
            }
         }
      }
   }
}
Andrey Alehin
193
Andrey Alehin  

Вот так, пойдет?

Файлы:
mrexccr.rar 7 kb
bolt
67
bolt  
skinet21:

Вот так, пойдет?

Не надо изобретать велосипед. Используйте функции KimIV :

https://forum.mql4.com/ru/38949
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий