Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
o_o
Модератор
24083
o_o  
сабж
fxsaber
6491
fxsaber  
Посмотрите SlipPage. Он находит эти числа для каждой из позиций и умножает их на соответствующий TickValue.
Andrey Dik
12261
Andrey Dik  
o_O:
сабж
Наверное нужно искать цепь сделок по истории, вначале цепи которой in а в конце out или in/out. В начале цена открытия - в конце цена закрытия. Геморно, но вроде больше никак.
Vasiliy Sokolov
24663
Vasiliy Sokolov  
o_O:
сабж

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

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

o_o
Модератор
24083
o_o  

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

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

Alexey Viktorov
11306
Alexey Viktorov  
o_O:

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

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

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

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

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

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

o_O:

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

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

Andrey Dik
12261
Andrey Dik  
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 означают закрытие.
Vasiliy Sokolov
24663
Vasiliy Sokolov  
Alexey Viktorov:

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

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

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

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

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

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

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

Alexey Viktorov
11306
Alexey Viktorov  
Vasiliy Sokolov:
Улыбнуло:))
Почему?
1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий