Как найти число заработанных пунктов у позиции из истории её сделок/ордеров

 
сабж
 
Посмотрите SlipPage. Он находит эти числа для каждой из позиций и умножает их на соответствующий TickValue.
 
o_O:
сабж
Наверное нужно искать цепь сделок по истории, вначале цепи которой in а в конце out или in/out. В начале цена открытия - в конце цена закрытия. Геморно, но вроде больше никак.
 
o_O:
сабж

Если все делать тру, тогда без ордерной арифметики не обойтись: https://www.mql5.com/ru/articles/1297#c3_8

Более простой вариант: (усредненный Out - усредненный In)/Vol, но тогда быть готовым к числам вроде 170.99999999999999999... и округлению.

 

ордерная (или сделочная) арифметика ближайшее, что пришло на ум. Наверно его и хотел бы реализовать.

только надо правильно соотносить точки входа и выхода по порядку появления.

 
o_O:

ордерная (или сделочная) арифметика ближайшее, что пришло на ум. Наверно его и хотел бы реализовать.

только надо правильно соотносить точки входа и выхода по порядку появления.

Наверное вот это поможет

ENUM_DEAL_ENTRY in_out = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticket, DEAL_ENTRY); // ticket сделки из списка HistorySelectByPosition()
если DEAL_ENTRY_IN то это сделка открытия позиции, а DEAL_ENTRY_OUT сделка закрытия позиции. Разница цен этих сделок будет искомое значение.
 
o_O:

ордерная (или сделочная) арифметика ближайшее, что пришло на ум. Наверно его и хотел бы реализовать.

Свой алгоритм я публиковал. Проще сделать навряд ли получиться, но оно того стоит.

o_O:

только надо правильно соотносить точки входа и выхода по порядку появления.

Критерий выбора двух ордеров для сведения может быть в принципе любым. Все зависит от конкретной задачи.  

 
Alexey Viktorov:

Наверное вот это поможет

ENUM_DEAL_ENTRY in_out = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticket, DEAL_ENTRY); // ticket сделки из списка HistorySelectByPosition()
если DEAL_ENTRY_IN то это сделка открытия позиции, а DEAL_ENTRY_OUT сделка закрытия позиции. Разница цен этих сделок будет искомое значение.
не только out но и in/out означают закрытие.
 
Alexey Viktorov:

если DEAL_ENTRY_IN то это сделка открытия позиции, а DEAL_ENTRY_OUT сделка закрытия позиции. Разница цен этих сделок будет искомое значение.

Улыбнуло:))
 
Andrey Dik:
не только out но и in/out означают закрытие.

Я дал не полный ответ. Надеюсь дальше мало кто не разберётся.

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

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

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

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

 
Vasiliy Sokolov:
Улыбнуло:))
Почему?