Удаление отложек. MQL4

 

Привет! Помогите с кодом, надо чтобы при открытии ордера отложки удалялись, делал так, но не пашет

   int total=OrdersTotal();

   int cnt;

   for(cnt=0;cnt<total;cnt++)

     {

      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

        {

         if(OrderType() == OP_BUY || OrderType() == OP_SELL) 

         {

            for(cnt=0;cnt<total;cnt++)

            {

            if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

               {

                  if(OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) 

                  {

                  OrderDelete(OrderTicket());

                   }

                }

            }

           }

           }

 }

 

Добрый день!

void RemoveOrders()
{
  int orders_total = OrdersTotal();
//---  
  if ( orders_total > 0 )
  {
    for ( int i = 0; i < orders_total; i++ )
    {
      ulong temp_order_ticket = OrderGetTicket( i );
      
      if ( OrderSelect( temp_order_ticket ) )
      {
        string temp_symbol = OrderGetString( ORDER_SYMBOL );
        
        if ( temp_symbol == _Symbol )
        {
          RemoveOldOrder( temp_order_ticket );
        }
      }
    }
  }
}

 

 

void RemoveOldOrder( const ulong ord_ticket )
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  
  request.action = TRADE_ACTION_REMOVE;
  request.order  = ord_ticket;
  
   if ( OrderSend( request, result ) )
   {
     if ( result.retcode == TRADE_RETCODE_PLACED )
     { 
       Print( "Удаление старого ордера выполнено! Билет = ", ord_ticket );    
     }
  }
  else
  {
    Print( "Удаление старого ордера не выполнено! Билет = ", ord_ticket, "; Код возврата = ", GetLastError() );
  }
}
 
Mikalas:

Добрый день!

 

 

Ну а вообще логика с выбором ордеров правильная?
 
Dynamiteman:
Ну а вообще логика с выбором ордеров правильная?

У Вас или у меня?

У Вас не работает, а у меня работает. 

ААА, у Вас MQL4

Форум MQL5, поэтому хорошо бы добавлять, что для 4 

 
Mikalas:

У Вас или у меня?

У Вас не работает, а у меня работает. 

ААА, у Вас MQL4

Форум MQL5, поэтому хорошо бы добавлять, что для 4 

Скоро все тут будут. Нужно как-то администрации подумать об избежании такой путаницы.
Да хотя бы сделать чекбокс для выбора темы заданного вопроса, чтобы автоматически подставлялся префикс MQL4/MQL5 к теме, или к сообщению.
 
Dynamiteman:

Привет! Помогите с кодом, надо чтобы при открытии ордера отложки удалялись, делал так, но не пашет

Вопрос не полный.

При открытии ордера - какого? Выставлении нового отложенного ордера, или открытии рыночной позиции?
Какого типа позиции?
Какого типа отложки удалять? Все, или какие-то конкретные?
Есть ли уже к этому времени открытые рыночные позиции, и нужно удалить отложки при открытии новой позиции?
Нет вообще позиций, но есть отложки, и при срабатывании любой из отложек, нужно удалить все остальные?

Могу ещё вопросы придумать. Ответ на каждый вопрос - свой, и логика тоже своя.

 
artmedia70:

Вопрос не полный.

При открытии ордера - какого? Выставлении нового отложенного ордера, или открытии рыночной позиции?
Какого типа позиции?
Какого типа отложки удалять? Все, или какие-то конкретные?
Есть ли уже к этому времени открытые рыночные позиции, и нужно удалить отложки при открытии новой позиции?
Нет вообще позиций, но есть отложки, и при срабатывании любой из отложек, нужно удалить все остальные?

Могу ещё вопросы придумать. Ответ на каждый вопрос - свой, и логика тоже своя.

При открытии рыночной позиции, когда срабатывает один из всего двух отложенных ордеров, необходимо удалить оставшийся отложенный ордер, т.е. все отложенные ордера на данный момент
 
Dynamiteman:
При открытии рыночной позиции, когда срабатывает один из двух отложенных ордеров, необходимо удалить оставшийся отложенный ордер, т.е. все отложенные ордера на данный момент
Ещё вопрос: сколько при этом рыночных позиций? Одна? Именно та, которая произошла от отложки? Других нет, и не было до срабатывания?
 
Mikalas:

У Вас или у меня?

У Вас не работает, а у меня работает. 

ААА, у Вас MQL4

Форум MQL5, поэтому хорошо бы добавлять, что для 4 

Ну да...)
 
artmedia70:
Ещё вопрос: сколько при этом рыночных позиций? Одна? Именно та, которая произошла от отложки? Других нет, и не было до срабатывания?
Да, именно так
 
Dynamiteman:
Да, именно так
Проверяете есть ли рыночная позиция либо Buy, либо Sell с нужным магиком и символом графика. Если есть, ищете в цикле все отложенные ордера с нужным магиком и символом, и, если нашли, удаляете. Цикл должен быть обратным от OrdersTotal()-1 до >=0
Причина обращения: