Эпиграф.
Сложность поиска идеальной стратегии робота можно лаконично выразить одной вот этой картинкой
Но не будем о грустном :))
------
И так я неугомонно потрошу все, что только можно :) и по собственному желанию делюсь инфой с сообществом (в надежде, что со мной поделятся не менее ценным-необычным ;) )
В данный момент я изучаю микро формации «вихри», а так же «анатомию» микро волатильности и пробую найти общие закономерности (которые в последствии скормлю нейронке). Сегодня провел исследование, которым и поделюсь.
------
Сейчас я формирую фрактальное сворачивание тиковых графиков. Первый уровень прохода алгоритма по сути представляет простую «пилу» строится по принципу: в случае если разница между локальным контр движением от максимума к миниму или наоборот равна и больше 8 шагов цены — появляется новый «зубец». Но этого мало. Я еще запоминаю интервалы между максимумом и минимумом. Проще говоря меня интересует размер «времени», выраженный порядковым номером сделки в общем ордер логе (время — не секунды или микро — а порядковый номер). Так вот меня интересует угол наклона в прямоугольном треугольнике, где высота — реальная высота в шагах цены, а второй катет — время выраженное в разнице порядковых номеров сделок точек экстремумов. Само собой угол не может быть больше 90 градусов :) Я потрошу вот этот вчерашний тиковый график Sih3
В моей программе фрагмент этого графика с построением «пилы волатильности» имеет вот такой вид
каждая пила (я называю этот элемент внутри робота class.MyFractalInterval) имеет разные характеристики, в частности интересующие в рамках поста параметры: m_H (высота в пунктах цены) и m_dT (ширина в интервалах псевдо-времени) и еще m_angle (угол наклона гипотенузы к горизонтальной оси времени).
то бишь m_angle = Func(m_H, m_dT). Я строю график прямоугольной гистограммы с парами значений (m_H, m_angle) на одном листе (это значит что в текущей паре первый столбец будет m_H а сразу за ним — m_angle, то есть первый столбец связан функциональной зависимостью со вторым!!! это важно для чтения результата по графику!).
Первый график я сортирую по возрастанию m_H(черный, красный m_angle)
Второй график я сортирую по убыванию m_angle(красный, m_h — опять же черный!)
И третий график формирую без сортировки — то как в процессе хода графика цены формировались пары значений (m_h, m_angle)
Как итог.
- Очень быстрые (хаотические движения) наблюдаются в начале торгового дня, когда угол наклона между максимумом-минимумом больше 30 градусов и доходит до 80 (практически вертикальное движение, данное движение формируется за счет крупного спреда между бидом и аском — по сути это и есть движение в рамках бид-аск, а не поступательный тренд )
- Длинные безоткатные движения чаще всего имеют очень малый наклон (высокий черный столбец и сходу за ним очень маленький красный)
- Чаще (но не закономерность!) чем больше угол — тем быстрее разворот в обратную сторону и наоборот, чем более пологое движение к оси времени — тем скорее всего движение продолжится
- Максимальное безоткатное движение в тот день было 37 шагов цены
- Количество интервалов пилы с заданным значением высоты падает по экспоненте) при росте высоты безоткатного движения (говоря проще — мощные безоткатные движения встречаются в разы реже чем мелкие колебания)
- На последнем графике видно, что высота безоткатных интервалов распределяется близко к «нормальному» распределению (колокообразное чередование высот — черные столбики). Собственно почти тоже самое мы наблюдаем и с углом наклона этих интервалов к оси времени :) (распределение красных столбиков)
В данный момент я создал полную эмуляцию в отладочном режиме своего робота «мэтчинга» сделок по правилам биржи (по рынку не в счет :) здесь скорее всего я исполняю хуже биржи)
У меня при нажатии на клавишу «вправо» или же кнопки «старт/пауза» происходит потиковое перемещение алгоритма (от тика к тику). Каждая выставленная заявка пока она не сработает отображается как и в терминале горизонтальной линией (красная — шорт, зеленая — лонг). Как только исполнится заявка — отображается кружок соответсвующего цвета на месте, где была совершена сделка. Текущий анализируемый тик выделяется перекрестием из голубых линий. То бишь я могу пошагово всегда разобрать конкретное место и улучшить работу своего алгоритма :) Еще собираюсь добавить случайные и задаваемые руками интервалы графика, в которых робот будет принудительно «блокироваться» на «отправку заявок» и их «исполнение» тем самым я смогу по разному прогнать одно и тоже место так как если бы у брокера на сильной волатильности возникли случайные задержки в отправке-получении-исполнении заявок.
Подобные вещи насколько я знаю не предоставляет ни одна из существующих платформ.
внизу белыми буквами выводится отладочная информация в том числе поле Profit, Position (количество контрактов — знак определяет шорт или лонг, может быть 0), и Price (средневзвешенная цена позиции). Как видим :) дойдя до перекрестия мой алгоритм смог на первых тиках заработать 9 рублей (комиссия пока не учитывается — считается чистый профит в минимальном шаге цены)
Всем удачных торгов и успехов в написании собственных максимально профитных роботов-стратегий! :)