utmagazine | Техника / Графика

Дирк Вандайк (Dirk Vandycke): Алгоритм для построения трендовых линий


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

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

Создание алгоритма для вычисления трендовых линий может затрудняться тем, что для них не существует четкого математического определения. Даже если такое определение сформулировать, оно будет достаточно расплывчатым. Будет много ложноположительных и ложноотрицательных результатов. Попытка устранить их выльется в подгонку. Каждый трейдер анализирует тренды по-своему. Если попросить нескольких человек проанализировать тренд в одной и той же акции, их трендовые линии могут существенно отличаться. Отсюда вытекает еще одна сложность: как сформулировать понятие трендовой линии, не зависящее от конкретного графика и обеспечивающее объективный (насколько это возможно) результат работы алгоритма? Мы должны иметь возможность получать правильные трендовые линии, вводя в алгоритм минимум параметров.

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

Приступая к решению данной проблемы, я рассматривал несколько идей. Одна из них - использовать график типа "крестики-нолики", поскольку все трендовые линии на них имеют наклон 45 градусов. Здесь я столкнулся с такой проблемой: поскольку ось времени не играет никакой роли, трудно вернуться обратно к свечному или барному графику. Первым этапом стало вычисление уровней поддержки и сопротивления (горизонтальные трендовые линии). Спроектировав все точки данных графика на ось Y (ось цены), получаем гистограмму, подобную приведенной на рисунке 1. Самые высокие столбики горизонтальной гистограммы указывают на наиболее активные цены, что свидетельствует о наличии зон поддержки и сопротивления на оси цены. Я хотел распространить данную идею на негоризонтальные трендовые линии, но простым поворотом здесь не обойдешься. Я испробовал разные методы, но все оказалось напрасно. Хороший алгоритм не должен смотреть на график. Он должен работать с данными.

Рисунок 1. Поиск горизонтальных трендовых линий

Дирк Вандайк (Dirk Vandycke): Алгоритм для построения трендовых линий


На вертикальную ось графика Microsoft Corp. (MSFT) добавлен частотный спектр цен. Видно, что уровень $57 является хорошей горизонтальной поддержкой/сопротивлением. В данном примере использовался частотный спектр $0.50. Другие уровни с высокой частотностью, например $51, плохо представляют горизонтальные уровни поддержки/сопротивления.

Правильные трендовые линии

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

Взгляните на рисунок 2. Слева и справа от красной свечи было, соответственно, семь и шесть дней, когда цена не опускалась ниже красной свечи. В данном случае, левое число поддержки равно шести барам, а правое число поддержки - пяти барам.

Рисунок 2. Числа поддержки



Иллюстрация левого и правого чисел поддержки. Левое число поддержки для красной свечи равно 6, поскольку семь свечей назад цена опускалась ниже. Справа цена опустилась ниже на шестой день. Таким образом, правое число поддержки равно 5.

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

Заключение

Как все вышесказанное приближает нас к определению трендовых линий? Упрощенно говоря, хорошей трендовой линией будет линия, соединяющая впадины, имеющие достаточно большие числа поддержки. Чем больше число поддержки, тем более важной является такая впадина. Логика состоит в том, что если соединить бары с числами поддержки больше определенного порогового значения, то можно построить хорошую линию для данного таймфрейма. Я также поиграл с пороговыми значениями и весовыми коэффициентами последних баров, но они не оказали существенного влияния на общее качество трендовых линий. На рисунке 3 показано, как работает созданный мной алгоритм. Я назвал его ChartMill Trend Line Algorithm (CTLA). Он отбирает значимые трендовые линии, начиная с правой стороны графика и с применением порогового значения в зависимости от таймфрейма. Как видите, на разных таймфреймах трендовые линии разные.

Рисунок 3. Трендовые линии, построенные алгоритмом ChartMill



Показаны два графика разных таймфреймов и построенные алгоритмом трендовые линии. Приведены только последние из построенных трендовых линий.

Заметили ошибку? Выделите её и нажмите CTRL+ENTER
При копировании ссылка обязательна http://elitetrader.ru/index.php?newsid=381117