Модернизация класса CExpert (Expert.mqh)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Karputov
Модератор
181874
Vladimir Karputov  

На данный момент советник на базе класса CExpert позволяет держать ОДНУ позицию. То есть, если открыта позиция и поступает сигнал в том-же направлении, что и позиция, то такой сигнал игнорируется. Напомню (Мастер MQL5: Новая версия), что советник работает с такими модулями как


 Так и просится ещё один модуль - модуль открытия позиция. Такой модуль должен управлять возможностями открывать дополнительные позиции в туже сторону, что и первая/последующая позиция. А вот здесь возникает масса нюансов - становится очень много вариантов поведения: 

ХеджНовый сигнал вЧто делать
Открыта позиция BuyBuyОткрыть Buy
Открыто две позиции BuySell
  • закрыть ВСЕ позиции Buy и открыть позицию Sell
  • оставить ВСЕ позиции Buy и открыть позицию Sell


А вот тут начинаются вопросы и не выяснив, для начала что делать: ЗАКРЫВАТЬ ВСЁ или оставлять всё - дальше двигаться не выйдет.

Georgiy Merts
9181
Georgiy Merts  

Я как раз сейчас проектирую свой шаблон советника.

Написал переносимый класс позиции, я вижу позицию, как набор компонент. Каждая компонента - имеет свой объем, свое направление, свой символ, свой магик, свои ТП_СЛ. Фактически, это ордер в МТ4, и позиция в МТ5.

И вот теперь - я остановился на основном цикле (аналог - CExpert::Processing()).

Если у нас позиция из разнонаправленных компонент - какой здесь должен быть генератор входов (модуль торговых сигналов) ? А изменение объема позиции ? Доливки новых компонент, или частичные закрытия старых ?  Да и с трейлингом все непросто - позиция, состоящая из компонент, по идее, должна позволять трейлингу менять ТП-СЛ компонент по отдельности.

Как я чувствую, создание шаблона эксперта для МТ5-Хеджа - весьма нетривиальная задача. Хотелось бы послушать народ, что кто думает по этому поводу ?

Vladimir Karputov
Модератор
181874
Vladimir Karputov  
Пожалуйста все рассуждения - только на базе класса CExpert - ибо каким мы его представим, такой он и впоследствии будет в стандартной библиотеке.
Vladimir Karputov
Модератор
181874
Vladimir Karputov  

Если возражений нет, значит будет так:

ХеджНовый сигнал вЧто делать
Открыта позиция BuyBuyОткрыть Buy
Открыто две позиции BuySell
  • закрыть ВСЕ позиции Buy и открыть позицию Sell
  • оставить ВСЕ позиции Buy и открыть позицию Sell


Думаю это логично, если получен противоположный сигнал, значит нужно удалить противоположные позиции.

Artyom Trishkin
Модератор
52780
Artyom Trishkin  
Vladimir Karputov:

Если возражений нет, значит будет так:

ХеджНовый сигнал вЧто делать
Открыта позиция BuyBuyОткрыть Buy
Открыто две позиции BuySell
  • закрыть ВСЕ позиции Buy и открыть позицию Sell
  • оставить ВСЕ позиции Buy и открыть позицию Sell


Думаю это логично, если получен противоположный сигнал, значит нужно удалить противоположные позиции.

Нет, не логично.

Логично оставить пользователю принимать решение в зависимости от торговой стратегии, а не навязывать ему не нужные действия.

Т.е., действие должно быть на выбор пользователя.

А если открыто 3 позиции Buy?

Andrey F. Zelinsky
35863
Andrey F. Zelinsky  
Vladimir Karputov:

Если возражений нет, значит будет так:

ХеджНовый сигнал вЧто делать
Открыта позиция BuyBuyОткрыть Buy
Открыто две позиции BuySell
  • закрыть ВСЕ позиции Buy и открыть позицию Sell
  • оставить ВСЕ позиции Buy и открыть позицию Sell


Думаю это логично, если получен противоположный сигнал, значит нужно удалить противоположные позиции. -- нет, не логично

Вы так публично нарочито-принципиально "закрыли свои глаза на МТ4" и "открыли их на МТ5", что не обратили внимание на простой и очевидный вопрос: "а почему, собственно, так долго цепляются за этот МТ4".

Даже МК "сдались" и ввели хеджинг, чем практически окончательно отправили в историю МТ4. 

Так что ответ на ваш вывод такой: "не логично". 

Georgiy Merts
9181
Georgiy Merts  
Vladimir Karputov:
Пожалуйста все рассуждения - только на базе класса CExpert - ибо каким мы его представим, такой он и впоследствии будет в стандартной библиотеке.

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

По сути, класс позиции в хеджевом варианте - это аналог класса ордера в МТ4. Соответственно, получается, что класс CExpert в Стандартной Библиотеке - предназначен для работы с "одним ордером".

Vladimir Karputov
Модератор
181874
Vladimir Karputov  
Artyom Trishkin:

Нет, не логично.

Логично оставить пользователю принимать решение в зависимости от торговой стратегии, а не навязывать ему не нужные действия.

Т.е., действие должно быть на выбор пользователя.

А если открыто 3 позиции Buy?

То есть нужен метод, который должен переводить CExpert или в режим "закрыть ВСЕ противоположные позиции" или в режим "Не закрыть противоположные позиции"?
Georgiy Merts
9181
Georgiy Merts  
Vladimir Karputov:
То есть нужен метод, который должен переводить CExpert или в режим "закрыть ВСЕ противоположные позиции" или в режим "Не закрыть противоположные позиции"?
Боюсь, без пересмотра класса CPosition - договориться не получится.
Andrey F. Zelinsky
35863
Andrey F. Zelinsky  
Artyom Trishkin:

Нет, не логично.

Логично оставить пользователю принимать решение в зависимости от торговой стратегии, а не навязывать ему не нужные действия.

Т.е., действие должно быть на выбор пользователя.

А если открыто 3 позиции Buy?

Нет, Артём -- почитал ещё раз пост Карпутова:

Vladimir Karputov:

На данный момент советник на базе класса CExpert позволяет держать ОДНУ позицию. То есть, если открыта позиция и поступает сигнал в том-же направлении, что и позиция, то такой сигнал игнорируется. 

...

А вот тут начинаются вопросы и не выяснив, для начала что делать: ЗАКРЫВАТЬ ВСЁ или оставлять всё - дальше двигаться не выйдет.

Он вообще не рассматривает в своей логике хеджинг -- поэтому он и вычеркнул вариант "оставить ВСЕ позиции Buy и открыть позицию Sell"

Он просто решает вопрос с доливкой: "по сигналу в ту же сторону -- доливать или нет" 

Vladimir Karputov
Модератор
181874
Vladimir Karputov  
Andrey F. Zelinsky:

Нет, Артём -- почитал ещё раз пост Карпутова:

Он вообще не рассматривает в своей логике хеджинг -- поэтому он и вычеркнул вариант "оставить ВСЕ позиции Buy и открыть позицию Sell"

Он просто решает вопрос с доливкой: "по сигналу в ту же сторону -- доливать или нет" 

Нет. Неправильно поняли. В первом посте ещё раз внимательно посмотрите таблицу. Там два варианта развития событий при получении сигнала противоположного существующей позиции: что делать - закрывать ВСЕ ПРОТИВОПОЛОЖНЫЕ позиции или ОСТАВЛЯТЬ ИХ. То есть если сигнал совпадает с направлением существующей/существующих позиций - то доливка точно будет (при выставлении перед началом работы соответствующей настройки торгового класса).
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий