Как получить своп для позиции если она включает в себя несколько сделок?

 

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

При этом PositionGetDouble(POSITION_SWAP) выдает своп только одной (видимо последней) сделки из состава позиции, а не совокупный своп всей позиции.

Отсюда вопрос:

"Как получить своп для позиции если она включает в себя несколько сделок?"

 
Yury Kirillov:

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

При этом PositionGetDouble(POSITION_SWAP) выдает своп только одной (видимо последней) сделки из состава позиции, а не совокупный своп всей позиции.

Отсюда вопрос:

"Как получить своп для позиции если она включает в себя несколько сделок?"


Нет ничего лучше, чем код + проверка ...

И сразу ломка шаблона: если используется хэдж, о какой "совокупной позиции" идёт речь? Что Вы под этим понимаете? 


В общем подробнее, сколько позиций открыто: скриншот из вкладки "Торговля".

 

Для визуализации ПОЗИЦИЙ используйте этот код: ListPositions.

На экран (при помощи Comment) будет выводится список всех ПОЗИЦИЙ.

Текст формируемый для каждой ПОЗИЦИИ:

            text+=IntegerToString(i)+
                  " | "+m_position.Symbol()+
                  " | "+IntegerToString(m_position.Ticket())+
                  " | "+TimeToString(m_position.Time(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+
                  " | "+EnumToString(m_position.PositionType())+
                  " | "+DoubleToString(m_position.Volume(),2)+
                  " | "+DoubleToString(m_position.PriceOpen(),8)+
                  " | "+DoubleToString(m_position.StopLoss(),8)+
                  " | "+DoubleToString(m_position.TakeProfit(),8)+
                  " | "+DoubleToString(m_position.Swap(),8)+
                  " | "+DoubleToString(m_position.Profit(),8)+
                  "\n";


То есть Вы сможете увидеть своп для каждой ПОЗИЦИИ.

 
Vladimir Karputov:

Нет ничего лучше, чем код + проверка ...

И сразу ломка шаблона: если используется хэдж, о какой "совокупной позиции" идёт речь? Что Вы под этим понимаете? 


В общем подробнее, сколько позиций открыто: скриншот из вкладки "Торговля".


Уважаемый, просьба не приписывать мне чужие изречения!

Я писал не про "совокупную позицию", это видимо писал кто-то другой. У меня написано "совокупный своп всей позиции".

В виду имелось следующее: если позиция включает в себя несколько сделок, то как получить своп по всей позиции (совокупно по всем входящим в неё сделкам)?

 
Yury Kirillov:

Уважаемый, просьба не приписывать мне чужие изречения!

Я писал не про "совокупную позицию", это видимо писал кто-то другой. У меня написано "совокупный своп всей позиции".

В виду имелось следующее: если позиция включает в себя несколько сделок, то как получить своп по всей позиции (совокупно по всем входящим в неё сделкам)?


Ага, так всё-таки нужно информация по сделкам, а не по ПОЗИЦИЯМ. 

Тогда наводящий вопрос: на хэдже для одной позиции Вы получаете несколько сделок при помощи частичного закрытия?

 

В общем мощно поступать так: зная POSITION_ID нужно при помощи HistorySelectByPosition запросить историю сделок и ордеров, имеющих указанный идентификатор позиции. Дальше остаётся пройтись по этому списку СДЕЛОК и получить для каждой сделки своп. 

Примерный код есть здесь: HistorySelectByPosition - только тогда я не делал вывода свопа.

 

Vladimir Karputov:

1. Ага, так всё-таки нужно информация по сделкам, а не по ПОЗИЦИЯМ. 

Тогда наводящий вопрос: на хэдже для одной позиции Вы получаете несколько сделок при помощи частичного закрытия?

2. В общем мощно поступать так: зная POSITION_ID нужно при помощи HistorySelectByPosition запросить историю сделок и ордеров, имеющих указанный идентификатор позиции. Дальше остаётся пройтись по этому списку СДЕЛОК и получить для каждой сделки своп. 

Примерный код есть здесь: HistorySelectByPosition - только тогда я не делал вывода свопа.

1. Скорее при помощи частичного открытия :-), я открываю новые сделки к имеющейся позиции.

2. Понятно, что перебором сделок можно вычислить общий своп позиции. Но есть же стандартная PositionGetDouble(POSITION_SWAP). На кой чёрт она нужна тогда?

Как без перебора сделок получить своп позиции? Возможно ли это в принципе?

 
Yury Kirillov:

1. Скорее при помощи частичного открытия :-), я открываю новые сделки к имеющейся позиции.

...


На хедже? Каким образом? Вы уверены, что у Вас хедж счёт? Все хедж счета имеют в заголовке терминала надпись "... Hedge ...":

Как отличить хэдж

Покажите пожалуйста скриншот заголовка Вашего терминала.

 
Vladimir Karputov:

На хедже? Каким образом? Вы уверены, что у Вас хедж счёт? Все хедж счета имеют в заголовке терминала надпись "... Hedge ...":


Покажите пожалуйста скриншот заголовка Вашего терминала.


Счет хеджевый.

Действительно, проверка показала, сделки не добавлялись в позицию. Создавались новые позиции.

Спасибо за терпение.

Итог:

В режиме хеджинга каждая позиция содержит только одну сделку.

В режиме неттинга, позиция может содержать несколько сделок.

Правильно?

 
Yury Kirillov:


Счет хеджевый.

Действительно, проверка показала, сделки не добавлялись в позицию. Создавались новые позиции.

Спасибо за терпение.

Итог:

В режиме хеджинга каждая позиция содержит только одну сделку.

В режиме неттинга, позиция может содержать несколько сделок.

Правильно?


Не совсем: 

  • на хэдж счёте одна позиция может состоять из БОЛЕЕ ЧЕМ ДВУХ сделок - но это скорее исключение, когда эту позицию по кусочкам закрываем встречными. А обычная ситуация на хэдж - позиция состоит из ДВУХ сделок - IN и OUT.
  • на неттинге позиция может содержать как НЕСКОЛЬКО сделок - например доливка или наоборот встречное открытие будет потихоньку уменьшать эту позицию, так и может содержать ВСЕГО ДВЕ сделки - IN и OUT.