Создание индикатора из многих других взвешенных технических индикаторов.

Что, если мы создадим равновзвешенный технический индикатор из 8 различных других индикаторов? Может ли это дать нам преимущество? Может ли это улучшить качество сигналов? В этой статье мы объединим 8 различных технических индикаторов в один гигантский осциллятор. Поскольку было бы слишком долго рассказывать о каждом индикаторе отдельно, читателю рекомендуется ознакомиться с предыдущей статьей, где каждый индикатор подробно представлен отдельно вместе с кодом Python. В этой статье больше внимания уделяется тому, как объединить их вместе в то, что мы можем назвать глобальным техническим индикатором.

Я только что опубликовал новую книгу после успеха Новые технические индикаторы в Python. Он содержит более полное описание и добавление сложных торговых стратегий со страницей Github, посвященной постоянно обновляемому коду. Если вы считаете, что это вас заинтересует, не стесняйтесь перейти по приведенной ниже ссылке или если вы предпочитаете купить версию в формате PDF, вы можете связаться со мной в Linkedin.



Выбор ингредиентов

8 различных индикаторов будут иметь равный вес 12,5% внутри глобального технического индикатора, который будет ограничен значениями от 0 до 100, при этом значения, близкие к 100, сигнализируют о медвежьем развороте, а значения, близкие к 0, сигнализируют о бычьем развороте. Давайте сначала посмотрим, как он будет выглядеть, прежде чем давать интуитивное представление о том, как он устроен.

Ингредиенты для Глобального технического индекса следующие:

  • 21-периодный индекс относительной силы. RSI - это популярный противоположный индикатор, ограниченный диапазоном от 0 до 100, обычно 30 - уровень перепроданности и 70 - уровень перекупленности.
  • 21-периодный стохастический осциллятор. Стохастик - еще один популярный противоположный осциллятор, ограниченный диапазоном от 0 до 100, обычно 15 - уровень перепроданности и 85 - уровень перекупленности.
  • 21-периодный индикатор нормализованной скорости изменения: ROC - это просто возврат цены за выбранный период в прошлом. Мы увидим, как нормализовать значения позже в статье.
  • Нормализованный модифицированный индикатор преобразования Фишера с периодом 55: исходное преобразование Фишера представляет собой модификацию рыночной цены, чтобы сделать ее более нормальной. Модифицированная версия - это версия, которую я использую для включения максимумов и минимумов. Теоретически он находится в пределах от -3,80 до +3,80 с промежуточными уровнями от -2,00 до 2,00. Полную информацию об этом индикаторе можно найти в предыдущей статье.
  • 21-периодный индикатор моментума: индикатор моментума делит текущую цену закрытия на предыдущую цену закрытия за выбранный период ретроспективного анализа.
  • 21-периодный индикатор противоположного скользящего среднего. MACI - это нормализованный индикатор скользящего среднего, который пытается найти точки разворота. Полную информацию об этом индикаторе можно найти в предыдущей статье.
  • Модель астрального рынка. Это модель, которую я представил в предыдущей статье. Он основан на времени и цене и использует последовательность Фибоначчи для определения точек разворота.

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

Если вас также интересуют другие технические индикаторы и использование Python для создания стратегий, то моя книга-бестселлер по техническим индикаторам может вас заинтересовать:



Как нормализовать и взвесить значения

У нас есть 8 индикаторов, которые мы хотим превратить всего в один технический индикатор. Для простоты мы дадим каждому показателю равный вес 12,5%. Мы сделаем это таким образом, чтобы нормализовать индикаторы, которые нуждаются в нормализации, затем умножить их на 12,5% (их вес) и, наконец, сложить части вместе. Вот краткое описание того, что мы будем делать:

  • Индекс относительной силы уже нормализован, поэтому преобразование не требуется. Мы можем просто умножить его значения на 12,5%. Например, если RSI показывает значение 100, то умножение его на 12,5% даст значение 12,5, которое является максимальным значением взвешенного компонента в Глобальном техническом индексе. Это подталкивает GTI к приближению к медвежьей зоне.
my_data[:, rsi_column] = my_data[:, rsi_column] * 0.125
  • Стохастический осциллятор уже нормализован, поэтому преобразование не требуется. Мы можем просто умножить его значения на 12,5%. Например, если Stochastic показывает значение 0, то умножение его на 12,5% даст значение 0, которое является минимальным значением взвешенного компонента в Глобальном техническом индексе. Это опускает GTI, приближаясь к бычьей зоне.
my_data[:, stoch_column] = my_data[:, stoch_column] * 0.125
  • Индикатор скорости изменения необходимо нормализовать значениями от 0 до 100, а затем мы можем просто умножить его значения на 12,5%. Функция нормализации показана ниже.
  • Индикатор моментума необходимо нормализовать значениями от 0 до 100, а затем мы можем просто умножить его значения на 12,5%. Функция нормализации показана ниже.
  • Модифицированное преобразование Фишера необходимо нормализовать значениями от 0 до 100, а затем мы можем просто умножить его значения на 12,5%. Функция нормализации показана ниже.
  • MACI уже нормализован, поэтому преобразование не требуется. Мы можем просто умножить его значения на 12,5%.
  • Нормализованный индекс на самом деле является самой функцией, и его можно рассматривать как индекс максимума-минимума с выбранным периодом ретроспективного анализа, поэтому мы просто умножим его на 12,5%, чтобы получить его вес.
  • Астральный паттерн: поскольку он состоит из значений от -8 до +8, где -8 является бычьим временным сигналом, а +8 - медвежьим временным сигналом, мы можем просто создать постепенные значения от 0 до 100. с 6,25 за каждый шаг. Например, -8 становится 0, -3 становится 31,25, 0 становится 50, +7 становится 93,75, а +8 становится 100.

Давайте быстро обсудим, как мы нормализуем значения от 0 до 100, прежде чем мы перейдем к более глубокому пониманию GTI.

Этот замечательный метод позволяет нам улавливать значения от 0 до 1 (или от 0 до 100, если мы хотим умножить на 100). Концепция вращается вокруг вычитания минимального значения в определенный период ретроспективного анализа из текущего значения и деления на максимальное значение в тот же период ретроспективного анализа за вычетом минимального значения (то же самое в номинаторе).

Мы можем попробовать закодировать эту формулу на Python. Следующая функция нормализует данный временной ряд типа OHLC:

def normalizer(Data, lookback, what, where):
        
    for i in range(len(Data)):
        
        try:
            Data[i, where] = (Data[i, what] - min(Data[i - lookback + 1:i + 1, what])) / (max(Data[i - lookback + 1:i + 1, what]) - min(Data[i - lookback + 1:i + 1, what]))
        
        except ValueError:
            pass
    
    Data[:, where] = Data[:, where] * 100    
return Data
# The what variable is what to normalize and the where variable is where to print the normalized values, i.e. which colum.

Глобальный технический индекс

Глобальный технический индекс представляет собой комбинацию 8 вышеуказанных индикаторов, нормализованных по шкале от 0 до 100. Таким образом, Глобальный технический индекс - GTI будет показывать медвежьи сигналы, когда он приближается к 100, и будет показывать бычьи сигналы, когда он приближается к 0.

Мы можем создать следующие стандартные правила для GTI:

  • Когда GTI равен или меньше 10, рынок должен вскоре развернуться и стать бычьим.
  • Если GTI равен или больше 90, рынок должен вскоре развернуться и стать медвежьим.

Глобальный технический индекс, похоже, не дает ничего большего, чем то, что делают отдельные индикаторы сами по себе. Особенно с результатами тестирования на истории, которые не лучше и не хуже индивидуальных результатов. Я решил не тратить ваше время на представление неэффективных результатов, но это не означает, что в GTI нет ценности. Для его анализа можно провести дальнейшие исследования. Между тем, мы также можем использовать метод дивергенции для этого индикатора, как показано на графике ниже:

Как финансовые трейдеры или аналитики, все мы знаем о расхождениях:

  • Когда цены достигают более высоких максимумов, в то время как индикатор показывает более низкие максимумы, это называется медвежьим расхождением, и рынок может остановиться.
  • Когда цены достигают более низких минимумов, в то время как индикатор показывает более высокие минимумы, это называется бычьим расхождением, и рынок может показать некоторый потенциал роста. .

Заключение

Почему была написана эта статья? Это, конечно, не метод кормления с ложечки и не путь к прибыльной стратегии. Если вы будете следить за моими статьями, то заметите, что я уделяю больше внимания как это сделать, а не вот он, и что я также предоставляю функции, а не полный воспроизводимый код. В финансовой индустрии вам следует самостоятельно комбинировать кусочки другой экзогенной информации и данных, только тогда вы овладеете искусством исследования и торговли. Я всегда советую вам проводить надлежащие бэк-тесты и понимать любые риски, связанные с торговлей.

Чтобы лучше понять модифицированный индикатор преобразования Фишера, вы можете прочитать о нем здесь: