Алгоритм. Первые оптимизации
Идея алгоритма внутридневной торговли, которую пытаюсь реализовать, достаточно проста. Есть внутридневные уровни цены и поведение цены у значимых внутридневных уровней, подкрепленное дополнительными индикаторами иногда перевешивает чашу весов в трейдинге в Вашу сторону. А положительное мат.ожидание на большом количестве трейдов делает кривую счета восходящей.
На первом этапе тестирования столкнулся с двумя проблемами:
а) Определение значимых внутридневных уровней
б) Количество собранных стопов за день (размер стопа менял от 300 до 500п на большем стопе даже хуже).
Кажется, что вопросы разные, но при изучении где именно собирает стопы, оказалось, что прежде всего проблема попадания на несколько стопов за час – это проблема определения уровня. Алгоритм пробойно/отбойный, т.е. не состоялся пробой уровня и есть достаточная сила сигнала для отката – позиция открывается на отбой, состоялся прорыв, подтвержденный краткосрочными индикаторами, позиция открывается на поддержание пробоя. Есть еще фильтр ложных движений, который пытается учитывать внутридневную динамику цены и варьирует силу сигнала для лонга и шорта в зависимости от текущей ситуации.
Для определения уровней на текущий торговый день попробовал использовать уровни Камариллы. Сразу столкнулся с проблемой большого диапазона между 3-4-5 Камариллой, где цена по долгу может задерживаться, без касания этих уровней, а также запиливанием вокруг Камариллы 1-2. Потом была попытка не мудрствовать, а просто взять круглые уровни 147000, 148000, 149000 и т.д. Но оказалось, что движение пробойное начинается или чуть ниже/выше уровня и часто сопровождается возвратным запиливанием вокруг этих уровней на 200-300п, что при коротком стопе опять делает алгоритм убыточным.
Да, можно сидеть у монитора и выставлять руками горизонтальные уровни, но, во-первых, это субъективно, во-вторых, алгоритм для того и пишется, чтобы он сам в автоматическом режиме фильтровал лишнее и оставлял ценное без вмешательства человеческой психологии.
В итоге сделал следующий код, если на уровне собрано 2 стопа, то данный уровень из внутридневного расчета убираю, а т.к. стопы у меня собирает по 300п (плюс запас цены в расчете при определении пробой/отбой), то вместо удаленного уровня появляются 2 новых с отклонением 500п от начального. Далее фильтрация, чтобы исключить уровни, расстояние между которыми менее 800-1000п. И можно надеяться, что теперь при запиливании в текущем узком диапазоне на 500-600п, расчет на пробой/отбой будет вестись у нужной нижней/верхней границы диапазона.
Если кто подскажет еще пути улучшения – буду рад.
Спасибо за подсказку, про АТR тоже думал. Особенно хорошо ATR на низкой волатиле границы рэнджа показывает. Попробую добавить как критерий при фильтре уровней.
трейлинг есть. закрытие в б/у есть, т.е. если профит ушел в минус ненамного, а потом вернулся, то проверяются условия на момент возврата и решает алгоритм держать или закрывать в б/у.
А вот чем проще код, тем лучше — не поспорить. Как лишнее выкидываешь и работает намного предсказуемее.
когда ценник у камариллы ходит — получается хороший результат. как только уровень камариллы попадает на середину ренджа, а такое бывает и не редко — алгоритм начинает запиливаться на стопах. можно конечно, попробовать вернуть уровни камарилла +фильтр добавить. Потестю, посмотрю.
стратегия работающая есть. тактику отрабатываю кодом.
1.пробойный — входим, если уровень прошит на n пунктов
2.отбойный — входим, если произошёл отбой от уровня на n пунктов
т.о. каждый алгоритм будет проще сам по себе и его будет легче заточить под одну конкретную задачу ;)
Наверное разобью алгоритм. Только по другому немного.
1. Поиск хай/лоу — отбойный
2. Уровни — пробойный
Посмотрю что получится. Худший вариант это постоянное обновление лоу или хая, но тут можно подумать при каких условиях ограничивать поиск хай/лоу
так уровни у меня в процессе добавляются. и хай и лоу тоже в расчет попадают. вроде есть идея как изменить. пока получается так: много уровней = много сделок = много стопов. попытка разрядить уровни через 800-1000п все равно оставляет много уровней. Сделаю так: хай/лоу дневной обновляемый с фильтрацией на ложные пробои. На 2х уровнях проще будет оттестить.
сделал проще. 2 уровня хай/лоу обновляемые по мере движения рынка. в зависимости от внутридневной динамики на отбой и пробой сигналы разные. плюс оставил среднедневную цену. итого 3 уровня. Вечером затестю.