вторник, 9 ноября 2021 г.

Лекарство от нетерпения - диапазонный робот SWT_Range


В апреле этого года я занялся разработкой диапазонного робота. В дополнение к трендовому, который разработан раньше.

Назвать эту разработку новой трудно по трем причинам:
1. Основа программного кода в общем-то одинакова, отличаются только правила открытия и закрытия позиций.
2. Направление торговли определяется по основным правилам SWT-метода, идентичным правилам трендового робота. Отличие в управлении открытой позицией, наращивании ее объема и в правилах закрытия.
3. Сетка и мартингейл, добавленные к основному алгоритму, для меня тоже не новы. Сетка использовалась в модификациях трендового робота до 2021 года, затем была исключена, как чужеродный элемент. А алгоритм мартингейла я модифицировал под свои задачи еще в 2006 году, правда использовался он в ручной торговле и был немного другим. Автоматика позволила добавить и гибкости и пару интересных примочек.
В детали вдаваться не буду, это будет предметом отдельной публикации. Коротко остановлюсь на двух моментах: зачем это делалось и что получилось.

1. Зачем? 
Рынки постепенно меняются. Тенденция, которую я отметил для себя (возможно я ошибаюсь)  - следствие роботизации маркетмейкеров. Роботы зажимают диапазон и держат его до последнего, а потом ситуация резко срывается в тренд и уходит к новому узкому диапазону.
Понятия узкий диапазон и тренд условны, но длительное простои моего трендового робота, которые достигали месяцев, выматывают нервы и заставляют делать ошибки. А стремительность перехода к тренду такова, что робот или всегда успевает открыть позицию и отработать движение или, при уменьшении глубины анализа, сваливается в пилу при повышенном быстродействии.
Поэтому я решил разделить торговлю по тренду и в диапазоне и сделать диапазонный робот, который торговал бы по маленькой, пока трендовый робот в простое.

2. Что получилось?
То, что получается обычно в сетке + мартингейл. Эквити плавно растет, но склонна к срыву и краху счета.
Но тут пришел на помощь SWT-метод, который позволяет рассчитать диапазон возможного движения по любому из трендов (циклов).
За основу берутся измерения пиковой волатильности среднесрочного тренда с циклом примерно полгода. Полученный диапазон разбит 32 части и принято предположение, что рынок за эти полгода не пройдет направленное расстояние от края до края края без откатов на 1/32 диапазона. Деление на 32 части выбрано из соображений ММ, но шаг сетки можно масштабировать.
Для евро, например, этот диапазон на текущий момент составляет около 500 пунктов в четвертом знаке после запятой, а шаг сетки примерно 15 пунктов. 

Начинали мы с такого графика.

Дальше тестирование на исторических данных с 1999 до 2021 года, по по ходу которого выявлялись критические звенья алгоритма. Результаты публиковались, в том числе и на настоящем ресурсе.

По результатам теста внесены незначительные правки в алгоритм и второстепенные корректировки, уменьшающие риски. И провели повторный тест на данных 2021 года на основе откорректированной программы.

Результаты теста:


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



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

Комментариев нет:

Отправить комментарий