• Введение
Трудно придумать что-то новое в плане новых торговых алгоритмов. Конкуренция игроков на forex так велика, что привычные торговые системы стали не эффективны, индикаторы, работавшие 30 лет назад, уже не актуальны. Рынок контролируют крупные игроки с передовыми торговыми роботами, использующими не индикаторы, а комплексный анализ заявок и глубины рынка, психологию толпы. Поэтому все труднее отыскать надежный и прибыльный алгоритм, ведь рынок forex сейчас большую часть времени носит хаотичный характер и с трудом поддается техническому анализу. Недавно, занимаясь торговлей bitcoin/usd, увидел, насколько хорошо там отрабатывается эта модель - до 80% случаев. Конечно, на форекс эта модель работает гораздо хуже. Вот я и решил проверить, применима ли стратегия на основе данной модели к валютным парам.

  • Модель "Сходящийся треугольник"
Эта модель поведения цен характеризует консолидацию на рынке, обычно перед резким движением вверх или вниз. Существует три разновидности этой модели: восходящий треугольник, нисходящий и симметричный (см. рис. 1).
  • Рисунок 1

Рассматривать расходящийся и симметричный треугольник я не буду, а остановлюсь подробнее на нисходящем и восходящем треугольниках. На самом деле нет четкой зависимости между направленностью вершины треугольника (вверх или вниз) и направлением движения цены после пробития поддержки или сопротивления. За нисходящим треугольником может последовать рост и наоборот. Но классически считается, что вероятность роста после восходящего треугольника чуть выше 50%, как и вероятность падения после нисходящего треугольника.

  • Реализация алгоритма распознавания модели
Схематически модель можно представить так:
  • Рисунок 2
Обычно в ней около 30 свечей, у основания треугольника длина свечей выше вследствие высокой волатильности, к вершине колебания цены затухают. Для упрощения алгоритма я условно разделил треугольник на 3 части, по 10 свечей в каждой. Для соответствия модели сходящегося треугольника 1-я группа из 10 свечей (считаем от вершины) должна иметь меньшую волатильность (меньшую амплитуду свечей), чем 2-я, а 2-я меньшую, чем 3-я. Самый простой способ подсчитать волатильность - суммировать high-low (наибольшее минус наименьшее) значение всех свеч в каждой группе. В роботе это реализовано следующим образом:
Для начала получим три массива свечей по 10 в каждом:

Чтобы посчитать значения для каждой свечи из массива воспользуемся loop viewer - циклической функцией, выдающей на выходе поочередно каждый из элементов массива:

А теперь вычисляем длину для каждой свечи и суммируем для каждой из трех групп:

Следующим этапом надо решить задачу определения направленности треугольника. Для восходящего треугольника справедливо утверждать, что среднее значение свеч в 1-й группе должно быть выше, чем во 2-й, а во 2-й выше, чем в 3-й. Но чтобы не делать лишних вычислений и не загромождать стратегию блоками, нам достаточно сравнить суммы high+low свеч для каждой из групп:

Так выглядит проверка условий соответствия группы свечей модели треугольника:

Здесь следует также применить фильтр на степень сужения треугольника, умножая на модификатор сумму высот свеч 1-й и 2-й группы на 1.6 и на 1.3 соответственно (можно выставить другие модификаторы). Данные модификаторы гарантируют, что "волатильность" в 3-й группе свеч будет на 30% выше чем во 2-й, а во 2-й на 23% больше, чем в первой. Выглядит это так:

Ну а теперь проверка условий на направленность модели, в зависимости от которой мы будем выбирать направление сделки:

Покупаем, если сумма high+low свеч 1-й группы > 2-й группы > 3-й группы.
Продаем, если сумма high+low свеч 1-й группы < 2-й группы < 3-й группы.

  • Заключение
Хотелось бы предупредить, что я реализовал первую же идею, пришедшую в голову. Конечно, это не самый лучший алгоритм, но он кое-как все же работает. Вот один из примеров срабатывания стратегии:


Стратегия в открытом доступе, если вдруг Вам захочется ее использовать или модифицировать под свои нужды - милости прошу.
Translate to English Show original