Удаление на сработавшие отложенные ордера

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Viktorov
28125
Alexey Viktorov  
Rahmatilla:

Здравствуйте. Можете помочь.

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

Из документации, TRADE_ACTION_REMOVE для удаления отложенных ордеров:

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...
Rahmatilla
10
Rahmatilla  
Если говорить честно я новичок в этой теме
Вот полный код:

extern int     interval          = 100;                               //Interval
extern double  lot               = 100;                              //Lot Size
extern int     TP                = 1000;                              //Take Profit
extern int     magic             = 962231;                           //Magic number
extern int     slippage          = 2;                                //Slippage
extern int     ExpDate           = 24;                               //Expiration Hour Order
extern int     bar1size          = 1;                              //Bar 1 Size

double   buyPrice,//для определения цены установки BuyStop
buyTP,      //Take Profit BuyStop
buySL,      //Stop Loss BuyStop

sellPrice,//для определения цены установки BuyStop
sellTP,      //Take Profit BuyStop
sellSL;      //Stop Loss BuyStop

double   open1,//цена открытия первой свечи
open2,    //цена открытия второй свечи
open3,
close1,   //цена закрытия первой свечи
close2,   //цена закрытия второй свечи
close3,
low1,     //цена минимальная первой свечи
low2,     //цена минимальная второй свечи
low3,
high1,    //цена максимальная первой свечи
high2,    //цена максимальная второй свечи
high3;

datetime _ExpDate=0;       //локальная переменная для определения времени истечения отложенного ордера
double   _bar1size;        //локальная переменная необходимая для исключения рынка во флэте
datetime timeBUOVB_BEOVB;  //время бара, на котором открылись ордера по паттерну, для исключения повторного открытия
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double   _bid     = NormalizeDouble(MarketInfo(Symbol(), MODE_BID), Digits); //определение нижней цены 
   double   _ask     = NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), Digits); //определение верхней цены
   double   _point   = MarketInfo(Symbol(), MODE_POINT);
//--- определение цен необходимых баров
   open1        = NormalizeDouble(iOpen(Symbol(), Period(), 1), Digits);
   open2        = NormalizeDouble(iOpen(Symbol(), Period(), 2), Digits);
   open3        = NormalizeDouble(iOpen(Symbol(), Period(), 3), Digits);
   close1       = NormalizeDouble(iClose(Symbol(), Period(), 1), Digits);
   close2       = NormalizeDouble(iClose(Symbol(), Period(), 2), Digits);
   close3       = NormalizeDouble(iClose(Symbol(), Period(), 3), Digits);
   low1         = NormalizeDouble(iLow(Symbol(), Period(), 1), Digits);
   low2         = NormalizeDouble(iLow(Symbol(), Period(), 2), Digits);
   low3         = NormalizeDouble(iLow(Symbol(), Period(), 3), Digits);
   high1        = NormalizeDouble(iHigh(Symbol(), Period(), 1), Digits);
   high2        = NormalizeDouble(iHigh(Symbol(), Period(), 2), Digits);
   high3        = NormalizeDouble(iHigh(Symbol(), Period(), 3), Digits);

//--- Определение цен установки ордеров и цен установки стоп-приказов
   buyPrice=NormalizeDouble(high1+interval*_point,Digits); //определяем цену установки ордера с учетом интервала
   buySL=NormalizeDouble(low2-interval*_point,Digits);     //определяем стоп-лосс с учетом интервала
   buyTP=NormalizeDouble(buyPrice+TP*_point,Digits);       //определяем тейк-профит
   _ExpDate=TimeCurrent()+ExpDate*60*60;                   //расчет времени истечения отложенного ордера
//--- Также производим расчет для ордеров на продажу
   sellPrice=NormalizeDouble(low1-interval*_point,Digits); //определяем цену установки ордера с учетом интервала
   sellSL=NormalizeDouble(high2+interval*_point,Digits);     //определяем стоп-лосс с учетом интервала
   sellTP=NormalizeDouble(sellPrice-TP*_point,Digits);       //определяем тейк-профит
 
//---

   _bar1size=NormalizeDouble(((high1-low1)/_point),0);
//--- Находим медвежий паттерн BEOVB
   if(timeBUOVB_BEOVB!=iTime(Symbol(),Period(),1) && //на данном паттерне еще не открывались ордера
      _bar1size>bar1size && //первый бар достаточно большой, чтобы не считать рынок во флэте
      Open1 > close2 && open2 < close1 && low3 < low1 
    )       //Второй бар бычий
      {
      //--- мы прописали все условия, указывающие, что первый бар полностью поглощает второй и является бычьим
      OrderOpenF(Symbol(),OP_BUYSTOP,lot,buyPrice,slippage,buySL,buyTP,NULL,magic,_ExpDate,Blue);
      timeBUOVB_BEOVB=iTime(Symbol(),Period(),1); //указываем, что на данном паттерне уже установлены ордера
     }
//--- Находим бычий паттерн BEOVB
   if(timeBUOVB_BEOVB!=iTime(Symbol(),Period(),1) && //на данном паттерне еще не открывались ордера
      _bar1size>bar1size && //первый бар достаточно большой, чтобы не считать рынок во флэте
      Open3 < close2 && open2 > close3 && high3 > high1 
    )       //Второй бар бычий
      {
      //--- мы прописали все условия, указывающие, что первый бар полностью поглощает второй и является бычьим
      OrderOpenF(Symbol(),OP_SELLSTOP,lot,sellPrice,slippage,sellSL,sellTP,NULL,magic,_ExpDate,Blue);
      timeBUOVB_BEOVB=iTime(Symbol(),Period(),1); //указываем, что на данном паттерне уже установлены ордера
     }
  }




Alexey Viktorov
28125
Alexey Viktorov  
Rahmatilla:

Судя по этим строкам

   double   _bid     = NormalizeDouble(MarketInfo(Symbol(), MODE_BID), Digits); //определение нижней цены 
   double   _ask     = NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), Digits); //определение верхней цены
   double   _point   = MarketInfo(Symbol(), MODE_POINT);

это mql4.

Значит просто OrderDelete

OrderDelete - Торговые функции - Справочник MQL4
OrderDelete - Торговые функции - Справочник MQL4
  • docs.mql4.com
OrderDelete - Торговые функции - Справочник MQL4
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий