Скачать MetaTrader 5

Контроль ордеров

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Murat Ishakov
1972
Murat Ishakov  
Подскажите пожалуйста: вот есть идея создать систему с отложенными ордерами на mql5, и как сделать чтобы советник отслеживал превращение отложенного ордера в реальный, а потом и его закрытие? С помощью теста было установлено, что при смене отложенного ордера на реальный тикет меняется
fxsaber
8953
fxsaber  

Либо, как в MT4, либо на событийной модели.

Murat Ishakov:
при смене отложенного ордера на реальный тикет меняется

Только на неттинге.

Murat Ishakov
1972
Murat Ishakov  
fxsaber:

Либо, как в MT4, либо на событийной модели.

Только на неттинге.

А что такое неттинг?
Alexey Volchanskiy
23506
Alexey Volchanskiy  
Murat Ishakov:
А что такое неттинг?

Это на МТ5, одна совокупная позиция на инструменте, нет отдельных ордеров, как в МТ4 или хеджинге на МТ5

Vladimir Karputov
Модератор
71927
Vladimir Karputov  
Murat Ishakov:
Подскажите пожалуйста: вот есть идея создать систему с отложенными ордерами на mql5, и как сделать чтобы советник отслеживал превращение отложенного ордера в реальный, а потом и его закрытие? С помощью теста было установлено, что при смене отложенного ордера на реальный тикет меняется

Когда отложенный ордер срабатывает - появляется позиция. Этот момент (появление позиции) отслеживается в OnTradeTransaction:

ловим транцакцию с типом TRADE_TRANSACTION_DEAL_ADD

смотрим на направление сделки, которая породила транзакцию (ENUM_DEAL_ENTRY) - отлавливаем вход


Всё. Момент появления позиции мы словили. То есть используется событийная модель и в таком случае не нужны никакие таймеры.
George Merts
4845
George Merts  

Лично я - просто считаю количество отложенных ордеров вначале каждого бара.

Если стало меньше - стало быть, либо ордер сработал, либо его кто-то снял.

fxsaber
8953
fxsaber  
George Merts:

Лично я - просто считаю количество отложенных ордеров вначале каждого бара.

Если стало меньше - стало быть, либо ордер сработал, либо его кто-то снял.

Частичное исполнение так не поймать.

Dmitry Fedoseev
47144
Dmitry Fedoseev  

Ловить появление новой сделки в истории сделок.

0Aleksandr0
63
0Aleksandr0  
Murat Ishakov:
Подскажите пожалуйста: вот есть идея создать систему с отложенными ордерами на mql5, и как сделать чтобы советник отслеживал превращение отложенного ордера в реальный, а потом и его закрытие? С помощью теста было установлено, что при смене отложенного ордера на реальный тикет меняется


//------  
void OnTrade()
   {
   //определение сработки стопа или профита

      //--- select history for access
      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      ulong ticket=HistoryDealGetTicket(orders-1);        
      double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT); //--- check profit
         if(profit<0.0)//если закрылась по стопу
           {
           
           }
         if(profit>=0.0)//если закрылась по профиту
           {
           
           }
   }
Использую такой способ проверки закрытия позиции, но это для  биржевого(неттингово) счета, проверяется факт закрытия счета и какой результат.
Можно переделать и для проверки открытия позиции, хотя для биржевого хватает и 
void OnTick()
  {
   
    if(PositionSelect(_Symbol))
      {
       
      }
   }
Vladimir Karputov
Модератор
71927
Vladimir Karputov  
0Aleksandr0:


Использую такой способ проверки закрытия позиции, но это для  биржевого(неттингово) счета, проверяется факт закрытия счета и какой результат.
Можно переделать и для проверки открытия позиции, хотя для биржевого хватает и 

Для определния сработал ли stop loss или take profit с недавних пор существует замечательное перечисление ENUM_DEAL_REASON

Идентификатор

Описание

DEAL_REASON_CLIENT

Сделка проведена в результате срабатывания ордера, выставленного из десктопного терминала

DEAL_REASON_MOBILE

Сделка проведена в результате срабатывания ордера, выставленного из мобильного приложения

DEAL_REASON_WEB

Сделка проведена в результате срабатывания ордера, выставленного из веб-платформы

DEAL_REASON_EXPERT

Сделка проведена в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом

DEAL_REASON_SL

Сделка проведена в результате срабатывания ордера Stop Loss

DEAL_REASON_TP

Сделка проведена в результате срабатывания ордера Take Profit

DEAL_REASON_SO

Сделка проведена в результате наступления события Stop Out

DEAL_REASON_ROLLOVER

Сделка проведена по причине переноса позиции

DEAL_REASON_VMARGIN

Сделка проведена по причине начисления/списания вариационной маржи

DEAL_REASON_SPLIT

Сделка проведена по причине сплита (понижения цены) инструмента, по которому имелась позиция на момент проведения сплита

0Aleksandr0
63
0Aleksandr0  

Хорошее перечисление)
Не знал даже, спасибо.
Этот код пару лет назад где то "дернул", так и пользуюсь без изменений, в нового советника добавлю потом, в работающий сов не полезу править, лучшее враг хорошего)

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