Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexander Bykov
345
Alexander Bykov  

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

   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());

                   }

                }

            }

           }

           }

 }

Mikhail Filimonov
5931
Mikhail Filimonov  

Добрый день!

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() );
  }
}
Alexander Bykov
345
Alexander Bykov  
Mikalas:

Добрый день!

 

 

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

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

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

ААА, у Вас MQL4

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

Artyom Trishkin
Модератор
77539
Artyom Trishkin  
Mikalas:

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

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

ААА, у Вас MQL4

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

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

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

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

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

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

Alexander Bykov
345
Alexander Bykov  
artmedia70:

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

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

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

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

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

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

ААА, у Вас MQL4

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

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