PositionCloseTime?

 

Здравствуйте. Пытаюсь перенести советник с МТ4 на МТ5. Обнаружил, что для позиций в ENUM_POSITION_PROPERTY_INTEGER нет свойства CloseTIme. Как я могу узнать время закрытия позиции? Чтобы изменить:

 if(OrderCloseTime()!=0){...;}

 
Нужно смотреть свойства сделок https://www.mql5.com/ru/docs/constants/tradingconstants/dealproperties
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Свойства сделок - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sergey Zhilinskiy #:
Нужно смотреть свойства сделок https://www.mql5.com/ru/docs/constants/tradingconstants/dealproperties

Спасибо!

 
Sergey Zhilinskiy #:
Нужно смотреть свойства сделок https://www.mql5.com/ru/docs/constants/tradingconstants/dealproperties

Насколько я понял:

по тикету сделки мы можем узнать тикет ордера и узнать закрыт ли он:

ulong order_ticket=HistoryDealGetInteger(ticket,DEAL_ORDER);

datetime dt=HistoryDealGetInteger(ticket,DEAL_TIME);

ulong ent=HistoryDealGetInteger(ticket, DEAL_ENTRY);

if(ent==DEAL_ENTRY_OUT)return(dt);

Чтобы найти нужный тикет ордера придется перебирать сделки. Можете подсказать, как по тикету позиции узнать тикет сделки, в которой она прописана, не перебирая все сделки? 

Пока решил делать так:

if(PositionSelectByTicket(position_ticket))  {//position exists }else  {//position closed (error==4753) }

 
Leonids Drics #:

Насколько я понял:

по тикету сделки мы можем узнать тикет ордера и узнать закрыт ли он:

ulong order_ticket=HistoryDealGetInteger(ticket,DEAL_ORDER);

datetime dt=HistoryDealGetInteger(ticket,DEAL_TIME);

ulong ent=HistoryDealGetInteger(ticket, DEAL_ENTRY);

if(ent==DEAL_ENTRY_OUT)return(dt);

Чтобы найти нужный тикет ордера придется перебирать сделки. Можете подсказать, как по тикету позиции узнать тикет сделки, в которой она прописана, не перебирая все сделки? 

Пока решил делать так:

if(PositionSelectByTicket(position_ticket))  {//position exists }else  {//position closed (error==4753) }

DEAL_POSITION_ID

Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

long

или

ORDER_POSITION_ID

Идентификатор позиции , который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию. Идентификатор этой позиции и устанавливается исполненному ордеру в этот момент.

long

 
Alexey Viktorov #:

DEAL_POSITION_ID

Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

long

или

ORDER_POSITION_ID

Идентификатор позиции , который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию. Идентификатор этой позиции и устанавливается исполненному ордеру в этот момент.

long

Сорри, пытался переварить, но до меня не доходит.

На закладке история я вижу строки с  колонками символ, ТИКЕТ и т.д. 

На одной из строк стоит символ с тикетом 12345. Как советнику по этому номеру 12345 узнать тикет сделки, которая ликвидировала данную позицию, не перебирая для этого все сделки?

 
Leonids Drics #:

Сорри, пытался переварить, но до меня не доходит.

На закладке история я вижу строки с  колонками символ, ТИКЕТ и т.д. 

На одной из строк стоит символ с тикетом 12345. Как советнику по этому номеру 12345 узнать тикет сделки, которая ликвидировала данную позицию, не перебирая для этого все сделки?

Просто надо выбрать все ордера и сделки по ID позиции

bool  HistorySelectByPosition( 
   long   position_id     // идентификатор позиции - POSITION_IDENTIFIER 
   );

и в этих списках искать что надо

А получить ID позиции можно тремя способами, два из которых я вам показал. А третий собственно POSITION_IDENTIFIER

Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
HistorySelectByPosition - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

Просто надо выбрать все ордера и сделки по ID позиции

и в этих списках искать что надо

А получить ID позиции можно тремя способами, два из которых я вам показал. А третий собственно POSITION_IDENTIFIER

Да, туплю. Содержимое колонки Тикет на вкладыше История -  это  Идентификатор позиции? или Ордер сделки? 

long deal_order=HistoryDealGetInteger(deal_ticket,DEAL_ORDER);

long deal_position_ID=HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);

Я так понимаю, что deal_order не всегда =  deal_position_ID? Потому что я вижу, что у меня они идентичны

 
Leonids Drics #:

Да, туплю. Содержимое колонки Тикет на вкладыше История -  это  Идентификатор позиции? или Ордер сделки? 

long deal_order=HistoryDealGetInteger(deal_ticket,DEAL_ORDER);

long deal_position_ID=HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);

Я так понимаю, что deal_order не всегда =  deal_position_ID? Потому что я вижу, что у меня они идентичны

Читайте документацию. Много раз подряд. Пока не наступит прозрение…

 
OrderCloseTime Expert Advisor MQL5
OrderCloseTime Expert Advisor MQL5
  • 2018.07.03
  • www.mql5.com
Hi, Im looking for a way to retrieve the last closed order/deal/position close time, possibly in datetime...
Причина обращения: