Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1032

 
Artyom Trishkin:

Это время сделки.

Не понимаю. 
Продолжительность?
Или когда мы закрыли ордер, это и есть время сделки? 
А как мне отфильтровать, мне интересно только время установки ордеров? 
 
Roman Kutemov:
Не понимаю. 
Продолжительность?
Или когда мы закрыли ордер, это и есть время сделки? 
А как мне отфильтровать, мне интересно только время установки ордеров? 

Не продолжительность, а время совершения сделки.

В списке сделок нету ордеров. Два исторических списка в терминале - список ордеров и список сделок. Вот в них и ищите что именно нужно.

Читайте справку:

Документация по MQL5: Торговые функции / HistorySelect
Документация по MQL5: Торговые функции / HistorySelect
  • www.mql5.com
Функция HistorySelect() создает в mql5-программе список ордеров и список сделок для дальнейшего обращения к элементам списка посредством соответствующих функций. Размер списка сделок можно узнать с помощью функции HistoryDealsTotal(), размер списка ордеров в истории можно получить с HistoryOrdersTotal(). Перебор элементов списка ордеров лучше...
 
Roman Kutemov:
Не понимаю. 
Продолжительность?
Или когда мы закрыли ордер, это и есть время сделки? 
А как мне отфильтровать, мне интересно только время установки ордеров? 
Закрытая позиция имеет как минимум два ордера и две сделки. Именно они характеризуют позицию. Сначала ордер и сделка на открытие позиции, потом ордер и сделка на закрытие позиции. Если ордер в виде отложенного может "прожить" какое-то время пока не будет совершена сделка, то у сделки нет вообще такого "срока жизни".
 
Alexey Viktorov:
Закрытая позиция имеет как минимум два ордера и две сделки. Именно они характеризуют позицию. Сначала ордер и сделка на открытие позиции, потом ордер и сделка на закрытие позиции. Если ордер в виде отложенного может "прожить" какое-то время пока не будет совершена сделка, то у сделки нет вообще такого "срока жизни".
Хорошо, тогда как определить время открытия позиции, которая уже в истории? 
 
Roman Kutemov:
Хорошо, тогда как определить время открытия позиции, которая уже в истории? 

По свойству сделки из перечисления ENUM_DEAL_ENTRY

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

Закрытие встречной позицией

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
Alexey Viktorov:

По свойству сделки из перечисления ENUM_DEAL_ENTRY

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

Закрытие встречной позицией

Входов может быть много у одной позиции - так и будешь по крупицам сообщать?

Найти нужно первую сделку позиции DEAL_ENTRY_IN.

 
Roman Kutemov:
Хорошо, тогда как определить время открытия позиции, которая уже в истории? 

Почитайте уже наконец справку - там есть всё, да с примерами порою.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
Roman Kutemov:
Хорошо, тогда как определить время открытия позиции, которая уже в истории? 

Два варианта

Forum on trading, automated trading systems and testing trading strategies

OrderCloseTime Expert Advisor MQL5

fxsaber, 2018.07.06 00:49

#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

void LastTimeMQL4( datetime &OpenTime, datetime &CloseTime )
{
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)  
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL))
    {
      OpenTime = OrderOpenTime();
      CloseTime = OrderCloseTime();
      
      break;
    }
}

void LastTimeMQL5( datetime &OpenTime, datetime &CloseTime )
{
  if (HistorySelect(0, INT_MAX))
  {
    for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
    {
      const ulong Ticket = HistoryDealGetTicket(i);
  
      if (HistoryDealGetInteger(Ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT)
      {
        CloseTime = (datetime)HistoryDealGetInteger(Ticket, DEAL_TIME);

        if (HistorySelectByPosition(HistoryDealGetInteger(Ticket, DEAL_POSITION_ID)))
          OpenTime = (datetime)HistoryDealGetInteger(HistoryDealGetTicket(0), DEAL_TIME);
          
        break;
      }
    }
  }
}
Второй вариант работает медленнее, но поддерживает неттинг.
 
Artyom Trishkin:

Входов может быть много у одной позиции - так и будешь по крупицам сообщать?

Найти нужно первую сделку позиции DEAL_ENTRY_IN.

Артём, когда задают такие вопросы, это 99% что пишется для рынка форекс и 90% что для счёта hadge. Зачем-же изначально усложнять жизнь новичку?
 
Alexey Viktorov:
Артём, когда задают такие вопросы, это 99% что пишется для рынка форекс и 90% что для счёта hadge. Зачем-же изначально усложнять жизнь новичку?
Да, да. Жизнь усложнять не надо.)) 
После мт4 вообще трудно въезжать.