
Как функции столетней давности могут обновить ваши торговые стратегии
Введение
Анализ текущего состояния финансового рынка является важнейшей основой успешного трейдинга. Он позволяет трейдерам оценивать текущую ситуацию и прогнозировать возможные изменения цен и принимать обоснованные торговые решения. Для этого анализа можно применять различные математические методы и модели.
В этой статье мы обсудим несколько новых математических функций. Ну, не совсем новых. Новыми они были лет 100 назад. Сейчас некоторые функции хорошо забыты, а некоторые используются. Но, почему-то не в трейдинге. Давайте попробуем исправить этот досадный недостаток.
Функции Радемахера
С точки зрения математики, функция — это некоторое соответствие между аргументами функции и ее значениями. Они могут выглядеть, например, вот так:
Но в трейдинге такие функции используются очень редко. Для технического анализа чаще всего применяются оконные функции:
Суть этих функций очень проста. Берется заранее заданное количество цен. Каждая цена умножается на какой-то коэффициент, рассчитанный каким-то очень хитрым и запутанным способом. Полученные значения суммируются, и в результате получается индикатор. То есть, индикатор является функцией от цены. А перед нами встает основной вопрос трейдинга — где бы найти эти коэффициенты, но чтобы они были простыми и понятными.
Коэффициенты индикатора можно задать с помощью функции Радемахера. Формула этой функции очень проста:
Где, p — порядок функции, а sign – функция знака:
Выглядит эта функция еще проще. Например, функция 1-го порядка представляет собой два отрезка.
Если концы этих отрезков соединить с нулем, то у нас получится тот же синус, только квадратный. «Quadratisch. Praktisch. Gut». Однако, в таком виде эта функция для трейдинга не пригодна. Нам нужно внести в нее некоторые изменения, чтобы получить дискретный вариант.
Предположим, что мы решили создать индикатор на основе функций Радемахера. Сначала зададим его период N. Тогда значение i-го коэффициента этого индикатора можно рассчитать по формуле:
Например, так выглядит дискретная функция Радемахера 2-го порядка с периодом 8.
Теперь, мы можем приступить к разработке индикатора на основе этих функций. Период индикатора должен быть равен степени двойки:
Тогда индикатор будет состоять из функций Радемахера порядка с 0 по s. Например, для индикатора с периодом равным 4 можно использовать функции 0, 1 и 2 порядков.
Давайте посмотрим, как будет работать такой индикатор. Сначала нам нужно рассчитать значения всех функций на каждом отсчете нашего будущего индикатора.
p = 0 | 1 | 1 | 1 | 1 |
p = 1 | 1 | 1 | -1 | -1 |
p = 2 | 1 | -1 | 1 | -1 |
Теперь, нам нужно найти вес каждой функции. Для этого коэффициенты функции умножаем на соответствующие цены и суммируем результаты. После чего, полученную сумму делим на период индикатора. У нас получится три веса каждой функции:
Вес функции 0-го порядка — это всем знакомая SMA. Все остальные веса можно представить как средние скорости линейного тренда со сдвигом и уменьшением периодов тренда.
Зная весовые коэффициенты функций, мы можем приступить к вычислению значений индикатора. Для этого нам нужно умножить веса на значения функций Радемахера, которые соответствуют данному отсчету индикатора. Говоря проще, при расчете весов, на вход подавались цены, и суммирование велось по строкам. А при расчете индикатора, на вход нужно подавать веса, а суммирование осуществлять по столбцам. У нас получается четыре значения индикатора:
То есть, изменение одной цены, приводит к изменению значений индикатора по всей его длине. С одной стороны, можно сказать, что он рисует. А с другой, мы можем сказать, что индикатор меняет свою модель движения цены, в соответствии с появившимися новыми данными.
Вы уже представляете, как может выглядеть такой индикатор на графике? Тут возможны варианты. При конструировании индикатора мы не обязаны использовать полную систему функций Радемахера, а ограничиться каким-то меньшим порядком. Например, индикатор с периодом 16, построенный на функциях с порядком 0 – 2 выглядит так:
Главная особенность индикатора, построенного на функциях Радемахера, заключается в том, что он не стремится к сглаживанию цены. Любые изменения цены он рассматривает, как совокупность нескольких линейных трендов, и выводит средние уровни этих трендов.
Функции Уолша
Любой временной ряд можно смоделировать с помощью тригонометрических полиномов. Движение цены может быть сколь угодно сложным, но удачно подобранные коэффициенты при синусах и косинусах гарантируют точное совпадение значений полинома и временного ряда.
Однако, считать синусы и косинусы долго и сложно. Значительно упростить расчеты нам помогут функции Уолша. Обычно, эти функции определяются следующим образом… Посмотрел я на их определение, и понял почему они не пользуются популярностью у трейдеров.
В общем, классическое определение функций Уолша нам не подходит. Нам нужно что-то простое и наглядное. Поэтому, расчет функции порядка p мы будем производить следующим образом:
Такой подход к определению функций Уолша позволяет нам построить очень дискретный аналог дискретного преобразования Фурье. Функции с косинусами соответствуют действительным частям этого преобразования, а функции с синусами — мнимой. Синусные функции отслеживают тренды, а косинусные — моменты изменения трендов. Благодаря такому сочетанию, индикатор, сглаживает цены, и чем выше порядок функций, тем сильнее сглаживание.
Единственное ограничение — порядок функций не может превышать период индикатора. Например, вы решили использовать индикатор с периодом равным 8. Тогда можно использовать функции с порядком 0 - 7.
Ломай систему, торгуй свободно
Функции, которые мы с вами рассмотрели, уже доказали свою полезность. Посмотрите на свой мобильный телефон — где-то внутри него есть функции Уолша. Но… В любом деле всегда существует это «но». Если его нет, то либо все действительно идеально (что маловероятно), либо вам чего-то недоговаривают. Давайте нарушать правила, но не из хулиганских побуждений, а из стремления расширить горизонты.
Функции Радемахера построены на синусах. Синус — функция нечетная:
Что это означает никто толком не знает, но (опять это «но») с помощью этой нечетности можно отобразить трендовые модели движения цены. А если мы хотим сгладить ценовой ряд? Тогда нам потребуется какая-то четная функция. Например, косинус.
Сглаживающий вариант функции Радемахера порядка p можно задать следующим образом:
Индикатор, построенный на таких функциях, также будет отслеживать тренды. Но эти тренды будут измеряться относительно центра индикатора, то есть, он будет показывать моменты изменения направления тренда.
Система функций Уолша аналогична системе тригонометрических полиномов. Ну, или преобразованию Фурье. Эти функции изначально и разрабатывались как простая замена этому преобразованию. Функции Уолша не так точны, но их расчет был очень быстрым и с минимальным количеством действий. Для компьютеров того времени это обстоятельство было очень критичным.
Но (снова «но»), есть еще одно преобразование, которое можно использовать для построения другой системы. Это преобразование Хартли. В основе этого преобразования лежат суммы синусов и косинусов. А коэффициенты такой функции можно рассчитать так:
Функции могут быть симметричными, тогда они будут сглаживать цены. А могут быть несимметричными, тогда эти функции будут отслеживать тренды. Индикатор, построенный на этих функциях, выглядит так.
Следующее изменение, которое мы внесем, касается внешнего вида индикатора. Любая функция 0-го порядка равносильна SMA. Но, мы привыкли к тому, что SMA отображается в виде линии на графике. Поступим так же — на каждом баре мы будем рассчитывать только последнее значение индикатора и выводить его на график. Тогда мы увидим привычную линию.
На основе этих функций также можно построить осциллятор. В сам индикатор нужно будет внести совсем небольшие изменения. Все коэффициенты функций 0-го порядка нужно приравнять нулю. Тогда, получившийся осциллятор будет показывать колебания линейного индикатора относительно SMA.
При расчете двух последних индикаторов используются разности, поэтому их запаздывание будет небольшим. А это может положительно сказаться на трейдинге.
Торговые стратегии
Теперь давайте посмотрим, как можно использовать эти индикаторы в трейдинге.
В первой стратегии я буду использовать способность индикатора отслеживать тренды. Правила стратегии очень просты:
- если текущая цена ниже самого маленького значения индикатора, и предыдущая цена выше текущей, то открыть позицию buy и закрыть позиции sell;
- если текущая цена выше самого большого значения индикатора, и предыдущая цена ниже текущей, то открыть позицию sell и закрыть позиции buy.
Несмотря на простоту, стратегия выглядит вполне работоспособной.
На основе линейного индикатора можно построить стратегию, сигналы которой генерируются при пересечении цены и линии индикатора:
- если текущая цена выше линии индикатора, а предыдущая была ниже, то открыть позицию buy и закрыть позиции sell;
- если текущая цена ниже линии индикатора, а предыдущая была выше, то открыть позицию sell и закрыть позиции buy.
Результаты тестирования вау-эффекта не производят. Но вы всегда можете использовать несколько индикаторов, каждый со своими параметрами. Каждый индикатор будет генерировать свои сигналы и приносить свой небольшой доход.
В эту стратегию можно внести небольшие изменения — вместо значений цены использовать значения другого индикатора. Интуиция подсказывает, что один индикатор должен быть сглаживающий, а другой — трендовый. Результат этих изменений может быть таким.
Для генерации сигналов можно использовать и осциллятор, построенный на рассмотренных функциях.
Сначала попробуем простой вариант. Пусть сигналы генерируются при пересечении ноля линией индикатора. Если осциллятор меняет знак с минуса на плюс, то открываем позицию buy и закрываем позиции sell. При изменении знака с плюса на минус, генерируется противоположный сигнал.
Такой подход не вызывает большого доверия, и его использование на практике выглядит крайне сомнительным.
Давайте внесем изменения в эту стратегию. Позиции buy будут открываться если осциллятор достигнет какого-то установленного минимального значения. Позиции sell будут открываться, если значение индикатора станет выше определенного уровня. Закрытие позиций будет происходить при пересечении осциллятором ноля.
Изменение сигналов на открытие позиций несколько улучшает результаты.
Если полученные результаты вас не устраивают, всегда можно попробовать изменить настройки.
Как вы можете видеть, применение новых индикаторов в трейдинге вполне оправданно. При этом, рассмотренные в статье функции позволяют строить и более сложные стратегии. Все функции с 1-го порядка и выше представляют собой независимые друг от друга осцилляторы. Вы можете построить банк осцилляторов, на основе функций разных типов, порядков и периодов. На основе этих индикаторов вы можете получить более точные торговые сигналы.
Заключение
Применение новых старых функций в трейдинге открывает определенные возможности для анализа движения цены и принятия торговых решений. Они могут помочь выявить скрытые закономерности в поведении цены и прогнозировать будущие изменения. На их основе можно разработать эффективные торговые стратегии. Кроме того, функции Радемахера и Уолша могут использоваться для фильтрации шумов и улучшения качества прогноза.
При написании статьи были использованы следующие программы:
Название | Тип | Особенности |
---|---|---|
New Function | Индикатор |
|
New Function Lin | Индикатор | Индикатор рассчитывает последнее известное значение выбранной системы функций, и выводит его на график. |
New Function Osc | Индикатор | Осциллятор, построенный на функциях порядка 1 и выше. |
EA New Function | Эксперт | Для генерации сигналов используется отклонение текущей цены от минимального/максимального значений функций. |
EA New Function Lin | Эксперт | Сигналы генерируются при пересечении цены и линии индикатора New Function Lin. |
EA New Function Lin 2 | Эксперт | Сигналы генерируются при пересечении линий двух индикаторов New Function Lin. |
EA New Function Osc | Эксперт | Сигналы эксперта генерируются при пересечении ноля линией индикатора New Function Osc. |
EA New Function Osc 2 | Эксперт | Сигналы эксперта генерируются при пересечении линией индикатора New Function Osc заданных уровней. Значения уровней задаются во входных параметрах - LvlBuy и LvlSell. |
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования