Как заркыть все отложенные Buy Stop

 

Здравствуйте, мне перед открытием нового отложенного ордера на покупку нужно удалить все уже имеющиеся отложенные ордера Buy Stop.

Кто-нибудь может подсказать код? Запутался в докуменатции...

 
Artem Uvarov:

Здравствуйте, мне перед открытием нового отложенного ордера на покупку нужно удалить все уже имеющиеся отложенные ордера Buy Stop.

Кто-нибудь может подсказать код? Запутался в докуменатции...

Пример в виде скрипта: во входном параметре 'Delete all:'  задаётся тип отложенного ордера и затем вызывается функция удаления 'DeleteOrders'

//+------------------------------------------------------------------+
//|                                               Pending Delete.mq5 |
//|                              Copyright © 2020, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Vladimir Karputov"
#property version   "1.000"
//---
#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
//---
CTrade         m_trade;                      // object of CTrade class
COrderInfo     m_order;                      // object of COrderInfo class
//---
#property script_show_inputs
//---
//+------------------------------------------------------------------+
//| Enum Pending                                                     |
//+------------------------------------------------------------------+
enum ENUM_PENDING
  {
   buy_limit=2,   // Buy Limit
   sell_limit=3,  // Sell limit
   buy_stop=4,    // Buy Stop
   sell_stop=3,   // Sell Stop
  };
//--- input parameters
input ENUM_PENDING   InpPending  = buy_limit; // Delete all:
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   DeleteOrders((ENUM_ORDER_TYPE)InpPending);
  }
//+------------------------------------------------------------------+
//| Delete Orders                                                    |
//+------------------------------------------------------------------+
void DeleteOrders(const ENUM_ORDER_TYPE order_type)
  {
   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.OrderType()==order_type)
           {
            m_trade.OrderDelete(m_order.Ticket());
            continue;
           }
  }
//+------------------------------------------------------------------+


здесь самый простой пример: нет фильтра по символу, нет фильтра по Magic number, нет проверки минимального расстояния (уровня заморозки) и нет цикла гарантирования удаления.

Файлы:
 
Vladimir Karputov:

Пример в виде скрипта: во входном параметре 'Delete all:'  задаётся тип отложенного ордера и затем вызывается функция удаления 'DeleteOrders'


здесь самый простой пример: нет фильтра по символу, нет фильтра по Magic number, нет проверки минимального расстояния (уровня заморозки) и нет цикла гарантирования удаления.

Благодарю!