Обсуждение статьи "Самоадаптирующийся алгоритм (Часть IV): Дополнительный функционал и тесты" - страница 5

 
Приветствую.

1. Если принять, что обнаружена общая закономерность, примерно одинаково работающая на каждом из N инструментов, то грубо оценить емкость системы в плане увеличения одновременно торгуемых инструментов, исходя из результатов по 1 инструменту, можно так:

О = Z * Tср * ( 1 + ( N - 1 ) * Корр ) / Tп,
где
Z - число трейдов (серий сделок) для одного инструмента,
Тср - средняя длительность одного трейда в днях,
N - Число инструментов,
Корр - некий коэффициент корреляции между ними [0..1],
Тп - торгуемый период в днях.

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

2. Приближенно набросал и наскоро потестил "частичное закрытие", при торговле несколькими символами. Просадки уменьшились, график эквити приблизился к графику баланса. Но большие просадки все равно появляются. Не на такую глубину и немного не в тех местах, если сравнивать без "частичного закрытия".
Для того, чтобы обрубание хвостов (закрытие наиболее убыточных серий или их части) работало регулярно и хорошо, требуется постоянная подпитка баланса успешно закрытыми сериями, и этот приток должен быть достаточным, чтобы и минуса подзакрыть, и 20% еще в кармане (на балансе) оставить. Но когда есть такой механизм поставки прибыли на "младших" сериях, то и в "старшие" тогда влазить смысла нет.
Если рассматривать локированные серии по одному инструменту, когда к примеру держим минусовую покупку (1) и попутно в плюсы закрываем несколько продаж (2), то у меня это не работало (имею в виду устойчивый положительный результат на длительном периоде). Ни за что не агитирую, и без математики, исключительно к этому: "...я проверил..." :)

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

Система интересная, очень вариативна в разных направлениях. Например, я пробую покрутить следующие параметры:
-По блокам:
-- минимальное и максимальное количество шагов для поиска трендов/флета (8 - это очень короткий учаток? 50 - нужно ли так много?),
-- размер набора блоков, начало и шаг изменения высоты в наборе,
-- где провести границу между трендом и флетом,
А еще:
- при открытии:
-- использовать ли контроль хеджирования активов (при определенном наборе инструментов с допустимой корреляцией лучше без контроля),
-- отрабатывать ли сигналы на реверс (у меня складывается, что лучше долбить в первоначальном направлении или выйти, но не разворачиваться),
-- если сигнал, то входить на блоке против хода, по ходу или в обоих случаях (тут по-разному)
-- объем входа: фиксированный лот, или фиксированная стоимость текущего блока, или от фиксированной стоимости блока максмального размера
-- что делать при потере сигнала: закрыться, искать новый на других параметрах, продолжать по последнему,
- при закрытии:
-- планировать выход из серии по ТП на основе статожиданий движения, или по определенному профиту в $ относительно стоимости блока (типа хочу 10$ с любой серии, независимо от просадок и наращивания)
-- использовать ли общий профит для всех открытых серий и в каком объеме относительно стоимости блока (30 в сумме от всех серий, и закрываемся?)
-- использовать ли механизм частичного закрытия.

Понятно, что эти вопросы автор не озвучивал, и, может, это всё лишнее. Понятно, что я кручу-верчу ту систему, в какой степени я её понял и насколько качественно реализовал. Но мне нравится сама система и процесс её изучения, спасибо автору, слежу с интересом.
Все вопросы-параметры требуют многократного тестирования, каковое в оригинальной версии построения блоков очень затруднительно (большой объем расчетов). Попробовал упростить расчеты и построение наборов блоков (использование редких фиксированных опорных дат для расчета, вместо расчетов от последнего бара). Скорость расчета почти космос, но, к сожалению, заметил ухудшение качества получаемых сигналов :( Сейчас морщу мозг, как бы совместить...

Еще у меня вышло, что при контроле хеджа по активам лучше работает объемный контроль, а не бинарный. Бинарный - когда контролируем только направление открытых позиций по валюте, не учитывая объём. Объемный - вычисляю аналог вкладки "Активы" и новые открываю от нуля или против накопленного. (Кстати, есть ли в MQL5 стандартные средства получения данных с этой вкладки?)

Как-то так, в общем.

П.С. Когда система заточена на принятие решений на сформированных барах (только на открытии), не имеет обозначенных в позициях СЛ и ТП (хотя в алгоритме они могут присутствовать), "OHLC M1" уже содержит достаточную избыточность для достоверного тестирования.
 
Amba404:
Приветствую.

1. Если принять, что обнаружена общая закономерность, примерно одинаково работающая на каждом из N инструментов, то грубо оценить емкость системы в плане увеличения одновременно торгуемых инструментов, исходя из результатов по 1 инструменту, можно так:

О = Z * Tср * ( 1 + ( N - 1 ) * Корр ) / Tп,
где
Z - число трейдов (серий сделок) для одного инструмента,
Тср - средняя длительность одного трейда в днях,
N - Число инструментов,
Корр - некий коэффициент корреляции между ними [0..1],
Тп - торгуемый период в днях.

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

2. Приближенно набросал и наскоро потестил "частичное закрытие", при торговле несколькими символами. Просадки уменьшились, график эквити приблизился к графику баланса. Но большие просадки все равно появляются. Не на такую глубину и немного не в тех местах, если сравнивать без "частичного закрытия".
Для того, чтобы обрубание хвостов (закрытие наиболее убыточных серий или их части) работало регулярно и хорошо, требуется постоянная подпитка баланса успешно закрытыми сериями, и этот приток должен быть достаточным, чтобы и минуса подзакрыть, и 20% еще в кармане (на балансе) оставить. Но когда есть такой механизм поставки прибыли на "младших" сериях, то и в "старшие" тогда влазить смысла нет.
Если рассматривать локированные серии по одному инструменту, когда к примеру держим минусовую покупку (1) и попутно в плюсы закрываем несколько продаж (2), то у меня это не работало (имею в виду устойчивый положительный результат на длительном периоде). Ни за что не агитирую, и без математики, исключительно к этому: "...я проверил..." :)

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

Система интересная, очень вариативна в разных направлениях. Например, я пробую покрутить следующие параметры:
-По блокам:
-- минимальное и максимальное количество шагов для поиска трендов/флета (8 - это очень короткий учаток? 50 - нужно ли так много?),
-- размер набора блоков, начало и шаг изменения высоты в наборе,
-- где провести границу между трендом и флетом,
А еще:
- при открытии:
-- использовать ли контроль хеджирования активов (при определенном наборе инструментов с допустимой корреляцией лучше без контроля),
-- отрабатывать ли сигналы на реверс (у меня складывается, что лучше долбить в первоначальном направлении или выйти, но не разворачиваться),
-- если сигнал, то входить на блоке против хода, по ходу или в обоих случаях (тут по-разному)
-- объем входа: фиксированный лот, или фиксированная стоимость текущего блока, или от фиксированной стоимости блока максмального размера
-- что делать при потере сигнала: закрыться, искать новый на других параметрах, продолжать по последнему,
- при закрытии:
-- планировать выход из серии по ТП на основе статожиданий движения, или по определенному профиту в $ относительно стоимости блока (типа хочу 10$ с любой серии, независимо от просадок и наращивания)
-- использовать ли общий профит для всех открытых серий и в каком объеме относительно стоимости блока (30 в сумме от всех серий, и закрываемся?)
-- использовать ли механизм частичного закрытия.

Понятно, что эти вопросы автор не озвучивал, и, может, это всё лишнее. Понятно, что я кручу-верчу ту систему, в какой степени я её понял и насколько качественно реализовал. Но мне нравится сама система и процесс её изучения, спасибо автору, слежу с интересом.
Все вопросы-параметры требуют многократного тестирования, каковое в оригинальной версии построения блоков очень затруднительно (большой объем расчетов). Попробовал упростить расчеты и построение наборов блоков (использование редких фиксированных опорных дат для расчета, вместо расчетов от последнего бара). Скорость расчета почти космос, но, к сожалению, заметил ухудшение качества получаемых сигналов :( Сейчас морщу мозг, как бы совместить...

Еще у меня вышло, что при контроле хеджа по активам лучше работает объемный контроль, а не бинарный. Бинарный - когда контролируем только направление открытых позиций по валюте, не учитывая объём. Объемный - вычисляю аналог вкладки "Активы" и новые открываю от нуля или против накопленного. (Кстати, есть ли в MQL5 стандартные средства получения данных с этой вкладки?)

Как-то так, в общем.

П.С. Когда система заточена на принятие решений на сформированных барах (только на открытии), не имеет обозначенных в позициях СЛ и ТП (хотя в алгоритме они могут присутствовать), "OHLC M1" уже содержит достаточную избыточность для достоверного тестирования.

Интересно. С формулой оценки просадки соглашусь, в целом логика верная.

По поводу притока закрытых серий тоже логика верная ,нужно, чтобы новые серии закрывались как можно чаще. Тут нужно улучшать качество самого алгоритма ,чтобы он как можно реже входил в убыточные серии. Для этого нужно дорабатывать алгоритмы масштабирования. Я доработал в новой версии и уже стало значительно лучше работать. Идея в том, что нужна теретическая база ценообразования, описывающая что и как работает на рынке. Чем лучше теоретическая модель, тем ниже просадки и тем ниже корреляция между инструментами. 

Локированные позиции имеют смысл, без них работает хуже, чем с ними (в моем алгоритме). Но только на тех инструментах, для которых рост и падение симметричны. Для ассиметричных инструментов, нужно использовать ассиметричные параметры для генерации сигнала длинных и коротких позиций. Поэтому на акциях разрешены пока только длинные позиции, соответственно дополнительные серии не могут быть локирвоанными. Локирование это условная механика, которая нужна для визуализации и чтобы проще было думать. В реальности, когда идет торговля на неттинге, естественно никаких локов нет. 

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

По моим наблюдениям наращивать позицию имеет смысл только против хода цены. Если позиция Buy, то покупать только на каждом падающем блоке. Такой подход сам по себе вытягивает матожидание в плюс, без всего из-за некоторых теоретических особенностей движения цены. особенно это выражено на акциях. То есть смысл заложен в торговле против тренда в сторону основного тренда. Покупать актив всегда выгоднее на его падении и продавать на росте.

По тезисам:

 - Минимальное и максимальное количество шагов не зависит от характеристик рынка, а зависит только от параметров алгоритма. Чем меньше размер шага, тем меньше точность, чем больше размер шага, тем выше точность, но откроется больше позиций. Блоки это условность, созданная для лучшей визуализации. Можно переработать систему так, что анализировать окно из 100 блоков, но результаты торговли будут аналогичны окну из 24 блоков. Просто я сделал так.

- размер блока выбирается минимальный, на котором возможна прибыль с учетом комиссий и ошибок закрытия блоков (из-за того что для анализа используются свечи). Тут не описана одна важная особенность. С уменьшением размера блоков, процент перевеса должен увеличиваться, как раз из-за этой трендовой ошибки, которая возникает из-за того, что цена закрытия свечи не совпадает с ценой закрытия блока. Я пока это не сделал, но в дальнейшем планирую. Это значительно улучшит качество сигналов. Но и сам размер блока должен выбираться на основе параметров рынка. Он должен меняться в зависимости от прошлой стат характеристики рынка. Есть одна особенность, которая может помочь корректировать масштаб до начала серии.

- Границы между трендом и флетом нет, это условность, основанная на том, что в среднем на рынке вероятность изменения направления каждого следующего шага примерно 50%. Но есть инструменты у которых меньше 50%, то есть они трендовые. Используются локальные отклонения и в дальнейшем оно вернется к своему среднему. По тому что если это не так, то можно сразу зарабатывать более простыми алгоритмами.

- при открытии я использую контроль хеджирования активов

- сигнал на ревер не отрабатывается, после закрытия все начинается сначала, но тут тоже не все так просто. Отрабатывать нужно, но теоретическая база пока не готова для этого.

- входить только против хода

- объем входа это немаловажный вопрос. Его нужно корректировать. Я разработал несколько методик коррекций. Отдельно для акций и для валюты, механизм не прост. На акциях нужно корректировать объем по портфелю, на валюте тоже. Цена блока должна быть примерно одинаковой для всех инструментов. Торговлю вести нужно не лотами, а долларами и корректировать лоты от объема сделки в долларах. Торговля на фикс число $ (на акциях) сама по себе повышает матожидание. На валютах пока не разработал теоретическую модель. Зависит ли объем от размера масштаба? в новой версии я планирую это реализовать и проверить, но пока процесс не дошел до этого.

- при потере сигнала я начинаю сначала.

- выход из серии планируется на основе стат движений и теоретической точки закрытия. Если промахиваемся мимо точки закрытия из-за неучтенных факторов, то работают механизмы компенсации убыточных позиций. Чем лучше теоретическая модель ,тем реже мы будем промахиваться. Фикс 10$ обратно уводит систему к матожиданию 0 из-за рандома.

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

- механизм частичного закрытия я планировал попробовать. Но пока не знаю как он будет работать. Я хотел использовать его при подходе к теоретической точки закрытия. Не жесткий профит, а постепенное закрытие позиций в диапазоне +- 10% от точки закрытия. Это условный процент. Его нужно будет рассчитать на основе чего-то, но я пока не занимался плотно этим вопросом.


Вот по поводу объемного контроля хеджа интересное решение, сам не додумался). 

Систему затачивал на работу на m1 ohlc, позже покажу как отличается в режиме ohlc и в режиме реальных тиков. Специально делал, чтобы была не чувствительна к качеству истории и разрывам с сервером во время торговли.

 
Petros Shatakhtsyan:

Вот вы показываете много графиков, за несколько лет.

Если хотите чтобы оценили вашу ТС,  покажите хотя-бы результаты теста НЕ на тиках (Every Tick), a на реальных тиках ( Every tick based on real ticks),   хотя-бы за этот год, для 3-4 пар.

Это тоже трудно ?

Вот, как обещал 2 теста. Первый в режиме OHLC 2020-2021 GBPUSD m1

и второй тест на том-же периоде и инструменте, но в режиме реальных тиков с реального счета.

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

Оно и понятно, технически робот сделан так, чтобы работать по OHLC, и в режиме тиков он работает чуть лучше из-за большей точности. Но это чисто технические моменты. За больший период и на большем числе инструментов тестировать не буду, смысла нет, да и времени на 1 прогон 1 инструмента уходит полтора часа.

 
Maxim Romanov:

да и времени на 1 прогон 1 инструмента уходит полтора часа.

А чего такой медленный? Уверен, что можно ускорить без потери функционала.

 
Andrey Khatimlianskii:

А чего такой медленный? Уверен, что можно ускорить без потери функционала.

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

 
Maxim Romanov:

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

Разве разработка не ускорится, если советник можно будет быстро протестировать? Дело хозяйское.

 
Maxim Romanov:

Вот, как обещал 2 теста. Первый в режиме OHLC 2020-2021 GBPUSD m1

и второй тест на том-же периоде и инструменте, но в режиме реальных тиков с реального счета.

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

Оно и понятно, технически робот сделан так, чтобы работать по OHLC, и в режиме тиков он работает чуть лучше из-за большей точности. Но это чисто технические моменты. За больший период и на большем числе инструментов тестировать не буду, смысла нет, да и времени на 1 прогон 1 инструмента уходит полтора часа.

Спасибо.

Если обе графики похожи, то если при тиках сделать фильтрацию внутри 1 минуты, будет тоже самое.

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

А Самоадаптирующиеся алгоритм  не должен иметь никаких фиксированных параметров, такие как отрезки времени, фиксированные уровни или количество пунктов, для открытия/закрытия ордеров.

 
Andrey Khatimlianskii:

Разве разработка не ускорится, если советник можно будет быстро протестировать? Дело хозяйское.

Разработка точно пошла бы быстрее, если бы был спец, который делает быстро, а не половину функционала за год и то с проблемками.

 
Maxim Romanov:

Разработка точно пошла бы быстрее, если бы был спец, который делает быстро, а не половину функционала за год и то с проблемками.

Ускорить работу алгоритма, это не проблема. Те, которые занимались оптимизационными задачами это сделают быстро.

Дело в другом. В ваших рисунках есть какие-то фиксированные значения. Вот я отметил их.

Откуда вам эти цифры ?  Если в торговле используются фиксированные значения, то потом приходится всё время их изменить.



 
Petros Shatakhtsyan:

Ускорить работу алгоритма, это не проблема. Те, которые занимались оптимизационными задачами это сделают быстро.

Дело в другом. В ваших рисунках есть какие-то фиксированные значения. Вот я отметил их.

Откуда вам эти цифры ?  Если в торговле используются фиксированные значения, то потом приходится всё время их изменить.



Это для примера сделаны фиксированные значения. В алгоритме почти все что касается рынка корректируется само. Есть фиксированные значения, типа числа блоков для анализа, я использую диапазон 24-32 блока. Но эти значения не относятся к рынку, это параметры самого алгоритма, по сути это точность, с которой он работает. Ну и все в таком смысле. Сейчас еще процент перевеса фиксированный, но это будет модернизироваться, да и не критичный параметр, я знаю от чего он зависит, могу и руками выставить. Есть в общем что улучшить, чтобы качество торговли подтянуть до приемлемого уровня.
Причина обращения: