Обсуждение статьи "Рецепты MQL5 – Получаем свойства открытой хеджевой позиции"

 

Опубликована статья Рецепты MQL5 – Получаем свойства открытой хеджевой позиции:

Платформа MetaTrader 5 является не только мультирыночной, но и позволяет применять различные системы учёта позиций. Такие возможности существенно расширяют инструментарий для реализации и формализации торговых идей. В статье идёт речь о том, как обрабатывать и учитывать свойства позиций при их независимом учете ("хеджинг"). Предлагается производный класс, приводятся примеры обработки и получения свойств хеджевой позиции.

Относительно недавно в торговом терминале MetaTrader 5 появилась возможность открывать разнонаправленные ордера. Такая система учёта ордеров называется «хеджинг». Наличие этой ордерной системы позволяет легко переносить торговые алгоритмы из MetaTrader 4 в пятую версию терминала, пользуясь всеми преимуществами последнего. Более подробно о хеджинге в MetaTrader 5 можно узнать в материале статьи "В MetaTrader 5 добавлена хеджинговая система учёта позиций".

В данной статье речь пойдёт о свойствах совокупной позиции, работа с которой идёт в системе «хеджинг».

Панель свойств хеджевой позиции

Рис.4 Панель свойств хеджевой позиции

Торговый терминал MetaTrader 5 на данном этапе является не только мультирыночным, но и позволяет применять различные системы учёта позиций. Такие возможности существенно расширяют инструментарий для реализации и формализации торговых идей.

Надеюсь, что данная статья вызовет интерес у тех, кто желает заняться переводом своих стратегий из MetaTrader 4 в MetaTrader 5.

Автор: Denis Kirichenko

 

Цена открытия зачем-то нормализована по Digits.

Комиссия считается с ошибкой и медленно: нормализуется и удваивается на каждом шаге цикла.

 
fxsaber:

Цена открытия зачем-то нормализована по Digits.

Комиссия считается с ошибкой и медленно: нормализуется и удваивается на каждом шаге цикла.

Спасибо за мнение.

Проверил код относительно нормализации. В классе CHedgePositionInfo есть только в двух случаях: комиссия и маржа. Цены остаются ненормализованными. Цена открытия, насколько понял, неявно нормализуется для принта в тестовом скрипте Test_hedge_properties.mq5. 

Потом насчёт комиссии. Вы сравнивали с записями на вкладке "История"? Там по каждой сделке величина комиссии нормализована с точностью до 2. А удвоение - это учёт момента выхода (DEAL_ENTRY_OUT). Т.е. в Панели отражается комиссия за полный цикл - открытие и закрытие. В статье есть упоминание об этом.

 
Denis Kirichenko:

Спасибо за мнение.

Проверил код относительно нормализации. В классе CHedgePositionInfo есть только в двух случаях: комиссия и маржа. Цены остаются ненормализованными. Цена открытия, насколько понял, неявно нормализуется для принта в тестовом скрипте Test_hedge_properties.mq5. 

Да, речь шла про распринтовку.

Потом насчёт комиссии. Вы сравнивали с записями на вкладке "История"? Там по каждой сделке величина комиссии нормализована с точностью до 2. А удвоение - это учёт момента выхода (DEAL_ENTRY_OUT). Т.е. в Панели отражается комиссия за полный цикл - открытие и закрытие. В статье есть упоминание об этом.

Нет, судил по коду. Откройте позицию, а затем закройте ее часть. По Вашему коду комиссия текущей позиции не изменится.

Более того, удвоение - это благое намерение, которое создает проблему. Дело в том, что Вам нужно, чтобы После закрытия всех позиций Balance стал равен Equity + PositionCommission. Но тогда никакого удвоения быть не должно, т.к. MT5 на открытии позиций уже в балансе отразил комиссию открытия.


Ну и при подсчете комиссии очень дорого проводить нормализацию на каждом шаге цикла. Важно при Оптимизации.

 
fxsaber:

...Нет, судил по коду. Откройте позицию, а затем закройте ее часть. По Вашему коду комиссия текущей позиции не изменится.

Более того, удвоение - это благое намерение, которое создает проблему. Дело в том, что Вам нужно, чтобы После закрытия всех позиций Balance стал равен Equity + PositionCommission. Но тогда никакого удвоения быть не должно, т.к. MT5 на открытии позиций уже в балансе отразил комиссию открытия.

Да, не изменится. Цель была показать максимальную величину комиссии, которую платим в общем за текущий хедж. И, причём, часть уже заплатили, а вторую заплатим позже. Но есть нюансы.

К примеру, есть ещё такой тип сделки как DEAL_ENTRY_OUT_BY. Там вообще нет комиссии, по крайней мере у моего брокера. Ещё комиссия может меняться (вход и выход могут неодинаково стоить), если валюта счёта не совпадает с базовой валютой. Так что мой пример далеко не идеален...

А почему Вы решили, что мне это нужно? Я просто показал один из способов расчёта таких накладных расходов как комиссия. 


Ну и при подсчете комиссии очень дорого проводить нормализацию на каждом шаге цикла. Важно при Оптимизации.

Ну разве что для оптимизации. Ну так никто же не мешает внести свои изменения и учесть их в коде. 

 
Denis Kirichenko:

Да, не изменится. Цель была показать максимальную величину комиссии, которую платим в общем за текущий хедж. И, причём, часть уже заплатили, а вторую заплатим позже. Но есть нюансы.

К примеру, есть ещё такой тип сделки как DEAL_ENTRY_OUT_BY. Там вообще нет комиссии, по крайней мере у моего брокера.

CloseBy не облагается комиссией по определению.

Ещё комиссия может меняться (вход и выход могут неодинаково стоить), если валюта счёта не совпадает с базовой валютой. Так что мой пример далеко не идеален...

А почему Вы решили, что мне это нужно? Я просто показал один из способов расчёта таких накладных расходов как комиссия. 

Потому что на языке того же MT4 Equity = Balance + Profit + Swap + Commission. Это самая распространенная логика. Но у Вас, конечно, может быть своя.

Ну разве что для оптимизации. Ну так никто же не мешает внести свои изменения и учесть их в коде. 

Разработчики распинаются, чтобы сделать Оптимизатор быстрее. А в Статьях допускается медленный код. Выглядит странно.

 
fxsaber:

Потому что на языке того же MT4 Equity = Balance + Profit + Swap + Commission. Это самая распространенная логика. Но у Вас, конечно, может быть своя.

Не поверите, я так же считаю относительно эквити :-))

Сделаю выбор для метода комиссии, как считать. Внесу изменения в код...

...Разработчики распинаются, чтобы сделать Оптимизатор быстрее. А в Статьях допускается медленный код. Выглядит странно.

Как бы это сказать языком дипломатов... Вы всё ещё кипятите? - Я давно тестирую всё в облаке и не парюсь, что где-то есть лишние нормировки и нет многострочных макросов...

 
Denis Kirichenko:

давно тестирую всё в облаке и не парюсь, что где-то есть лишние нормировки и нет многострочных макросов...

Даже простейшую алгоритмическую оптимизацию заменять мощью железа - это, видимо, давно сформировавшийся тренд. Так не могу.

 
fxsaber:

Даже простейшую алгоритмическую оптимизацию заменять мощью железа - это, видимо, давно сформировавшийся тренд. Так не могу.

Поколение гигагерц и гигабайт.

Причина обращения: