HistoryPositionsTotal
Возвращает количество всех закрытых позиций в истории. HistorySelect() не влияет на результат данной функции. int HistoryPositionsTotal(); Возвращаемое значение
Примечание
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HistoryPositionGetTicketВыбирает закрытую позицию для дальнейшей обработки и возвращает тикет закрытой позиции в истории. HistorySelect() не влияет на результат данной функции. ulong HistoryPositionGetTicket( const int Index // номер закрытой позиции ); Параметры
Возвращаемое значение
Примечание
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HistoryPositionSelectВыбирает закрытую позицию для дальнейшей работы с ней по указанному тикету. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. HistorySelect() не влияет на результат данной функции. bool HistoryPositionSelect( const ulong Ticket // тикет позиции ); Параметры
Возвращаемое значение
Примечание
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HistoryPositionGetIntegerВозвращает запрошенное свойство закрытой позиции. Существует 2 варианта функции. 1. Непосредственно возвращает значение свойства. long HistoryPositionGetInteger( const ENUM_POSITION_HISTORY_PROPERTY_INTEGER Property // идентификатор свойства ); 2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. bool HistoryPositionGetInteger( const ENUM_POSITION_HISTORY_PROPERTY_INTEGER Property, // идентификатор свойства long& long_var // сюда примем значение свойства ); Параметры
Возвращаемое значение
Примечание
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HistoryPositionGetDoubleВозвращает запрошенное свойство закрытой позиции. Свойство закрытой позиции должно быть типа double. Существует 2 варианта функции. 1. Непосредственно возвращает значение свойства. double HistoryPositionGetDouble( const ENUM_POSITION_HISTORY_PROPERTY_DOUBLE Property // идентификатор свойства ); 2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. bool HistoryPositionGetDouble( const ENUM_POSITION_HISTORY_PROPERTY_DOUBLE Property, // идентификатор свойства double& double_var // сюда примем значение свойства ); Параметры
Возвращаемое значение
Примечание Не следует путать между собой ордера, сделки и позиции. Каждая сделка является результатом исполнения некоего ордера, каждая закрытая позиция является итоговым результатом двух и более сделок. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HistoryPositionGetStringВозвращает запрошенное свойство закрытой позиции. Свойство закрытой позиции должно быть типа string. Существует 2 варианта функции. 1. Непосредственно возвращает значение свойства. string HistoryPositionGetString( const ENUM_POSITION_HISTORY_PROPERTY_STRING Property // идентификатор свойства ); 2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. bool HistoryPositionGetString( const ENUM_POSITION_HISTORY_PROPERTY_STRING Property, // идентификатор свойства string& string_var // сюда примем значение свойства ); Параметры
Возвращаемое значение
Примечание
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Свойства закрытых позицийЗакрытая позиция является отражением факта совершения двух и более сделок. Каждая закрытая позиция описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида HistoryPositionGet...(), возвращающие значения из соответствующих перечислений. Для функции HistoryPositionGetInteger() ENUM_POSITION_HISTORY_PROPERTY_INTEGER
ENUM_POSITION_HISTORY_PROPERTY_DOUBLE
ENUM_POSITION_HISTORY_PROPERTY_STRING
|
Пример.
// Пример работы с закрытыми позициями. #include <HistoryPosition.mqh> // https://www.mql5.com/ru/blogs/post/755007 // Создаем структуру некоторых свойств закрытой позиции. struct POSITION_HISTORY { datetime TimeOpen; string Symbol; ENUM_DEAL_TYPE Type; ulong Ticket; double Volume; double PriceOpen; double StopLoss; double TakeProfit; datetime TimeClose; double PriceClose; double Commission; double Swap; double Profit; ulong Magic; string Comment; // Заполнение структуры соответствующими данными закрытой позиции. void Set() // https://www.mql5.com/ru/blogs/post/755007 { this.TimeOpen = (datetime)HistoryPositionGetInteger(POSITION_HISTORY_TIME_OPEN); this.Symbol = HistoryPositionGetString(POSITION_HISTORY_SYMBOL); this.Type = (ENUM_DEAL_TYPE)HistoryPositionGetInteger(POSITION_HISTORY_TYPE); this.Ticket = HistoryPositionGetInteger(POSITION_HISTORY_TICKET); this.Volume = HistoryPositionGetDouble(POSITION_HISTORY_VOLUME); this.PriceOpen = HistoryPositionGetDouble(POSITION_HISTORY_PRICE_OPEN); this.StopLoss = HistoryPositionGetDouble(POSITION_HISTORY_SL); this.TakeProfit = HistoryPositionGetDouble(POSITION_HISTORY_TP); this.TimeClose = (datetime)HistoryPositionGetInteger(POSITION_HISTORY_TIME_CLOSE); this.PriceClose = HistoryPositionGetDouble(POSITION_HISTORY_PRICE_CLOSE); this.Commission = HistoryPositionGetDouble(POSITION_HISTORY_COMMISSION); this.Swap = HistoryPositionGetDouble(POSITION_HISTORY_SWAP); this.Profit = HistoryPositionGetDouble(POSITION_HISTORY_PROFIT); this.Magic = HistoryPositionGetInteger(POSITION_HISTORY_MAGIC); this.Comment = HistoryPositionGetString(POSITION_HISTORY_COMMENT); } }; void OnStart() { POSITION_HISTORY Positions[]; // Сюда будем собирать данные обо всех закрытых позициях. // https://www.mql5.com/ru/blogs/post/755007 for (uint i = ArrayResize(Positions, HistoryPositionsTotal()); (bool)i--;) // Бежим по всем закрытым позициям. if (HistoryPositionGetTicket(i)) // Если выбрали закрытую позицию по индексу, Positions[i].Set(); // записываем ee данные. ArrayPrint(Positions); // Распечатали информацию обо всех закрытых позициях. }
Результат.
[TimeOpen] [Symbol] [Type] [Ticket] [Volume] [PriceOpen] [StopLoss] [TakeProfit] [TimeClose] [PriceClose] [Commission] [Swap] [Profit] [Magic] [Comment] [0] 2023.11.21 21:03:59 "" 6 2095063134 0.00000 0.00000 0.00000 0.00000 2023.11.21 21:03:59 0.00000 0.00000 0.00000 100000.00000 0 "" [1] 2023.11.21 21:04:27 "CADCHF" 0 2119992140 1.00000 0.64568 0.00000 0.00000 2023.11.21 21:05:00 0.64540 0.00000 0.00000 -29.03000 0 "" [2] 2023.11.21 21:04:42 "AUDUSD" 1 2119992806 1.00000 0.65533 0.00000 0.00000 2023.11.21 21:05:00 0.65542 0.00000 0.00000 -8.25000 0 "" [3] 2023.11.21 21:57:32 "AUDUSD" 0 2120110833 1.00000 0.65575 0.00000 0.00000 2023.11.22 01:07:35 0.65565 0.00000 5.77000 -9.16000 0 ""
К сожалению, движок блога пока не позволяет скачать обновленный mqh, поэтому прикрепляю его к этому комментарию.