Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся деятельность участников MQL5.community. Заходи в раздел Стена!
Alexander Bykov
342
Alexander Bykov 2015.03.30 19:39 

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

   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 2015.03.30 19:46  

Добрый день!

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
342
Alexander Bykov 2015.03.30 20:01  
Mikalas:

Добрый день!

 

 

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

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

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

ААА, у Вас MQL4

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

Artyom Trishkin
Модератор
73715
Artyom Trishkin 2015.03.30 20:17  
Mikalas:

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

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

ААА, у Вас MQL4

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

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

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

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

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

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

Alexander Bykov
342
Alexander Bykov 2015.03.30 20:25  
artmedia70:

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

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

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

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

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

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

ААА, у Вас MQL4

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

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