DevGang
Авторизоваться

Понимание осциллятора Aroon в Python

Отслеживание тенденций также заслуживает тщательного изучения, поскольку многие известные индикаторы довольно хорошо справляются с отслеживанием тенденций. Известно, что стратегии следования тренду имеют некоторые структурные лаги из-за подтверждения нового тренда. Они больше касаются времени на рынке, чем выбора времени для рынка. В этой статье представлен и закодирован очень известный индикатор - Aroon oscillator.

Создание Aroon Oscillator

Осциллятор Aroon создан из двух субиндикаторов, называемых Aroon Up и Aroon Down. Они измеряют силу тренда, используя максимумы и минимумы уникальным способом, не похожим на другие обычные индикаторы.

Первым шагом является вычисление Aroon Up и Down, используя следующую формулу:

Давайте посмотрим на пример того, что подразумевается под Aroon Up и Aroon Down. Рассмотрим актив, в котором он достиг нового минимума за последний период времени. Для 25-периодного сокращения значение будет равно 96, потому что мы будем вычитать 1 из 25, делить его на 25 и умножать на 100. Аналогично, для 13-периодного Aroon Up, когда актив достиг нового максимума один период назад, Aroon Up покажет значение 92,30.

Понятно, что чем выше значение Aroon, тем сильнее тренд. Теперь давайте закодируем Aroon на Python, прежде чем перейти к Aroon Oscillator.

def aroon(Data, period, close, where):
    
    # Adding Columns
    Data = adder(Data, 10)
# Max Highs
    for i in range(len(Data)):
        
        try:
        
            Data[i, where] = max(Data[i - period + 1:i + 1, 1])
        
        except ValueError:
            
            pass
# Max Lows
    for i in range(len(Data)):
        
        try:
       
            Data[i, where + 1] = min(Data[i - period + 1:i + 1, 2]) 
        
        except ValueError:
            
            pass
        
    # Where the High Equals the Highest High in the period
    for i in range(len(Data)):
       
        if Data[i, 1] == Data[i, where]:
            
            Data[i, where + 2] = 1
        
    # Where the Low Equals the Lowest Low in the period
    for i in range(len(Data)):
       
        if Data[i, 2] == Data[i, where + 1]:
            
            Data[i, where + 3] = 1
# Jumping Rows
    Data = jump(Data, period)
# Calculating Aroon Up
    for i in range(len(Data)):
        
        try:
        
            try:
                
                x = max(Data[i - period:i, 1])
                y = np.where(Data[i - period:i, 1] == x)
                y = np.array(y)
                distance = period - y
            
                Data[i - 1, where + 4] = 100 *((period - distance) / period)
except ValueError:
                
                pass
            
        except IndexError:
            
            pass
# Calculating Aroon Down
    for i in range(len(Data)):
        
        try:
        
            try:
                
                x = min(Data[i - period:i, 2])
                y = np.where(Data[i - period:i, 2] == x)
                y = np.array(y)
                distance = period - y
            
                Data[i - 1, where + 5] = 100 *((period - distance) / period)
except ValueError:
                
                pass
            
        except IndexError:
            
            pass
    
    # Cleaning
    Data = deleter(Data, 5, 4)
    
    return Data
EURUSD на первой панели с 25-периодным Aroon.
EURUSD на первой панели с 25-периодным Aroon.

На приведенном выше графике показаны часовые значения EURUSD с Aroon Up синим цветом и Aroon Down оранжевым. Последним шагом является вычисление осциллятора Aroon, который представляет собой разницу между Aroon Up и Aroon Down:

my_data[:, where_aroon_osc] = my_data[:, where_aroon_up] -
                              my_data[:, where_aroon_down]
EURUSD на первой панели с 25-периодным Aroon Oscillator.
EURUSD на первой панели с 25-периодным Aroon Oscillator.

Aroon Oscillator, созданный Тушаром Чанде, является популярным индикатором следования за трендом, который рассчитывается, как показано в приведенном выше фрагменте кода. Стоит знать, что слово Арун, скорее всего, означает ранний свет рассвета на санскрите.

Торговля на Aroon Oscillator

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

  • Покупайте (длинная позиция) всякий раз, когда осциллятор Aroon становится положительным, преодолевая нулевую линию.
  • Продавайте (короткая позиция) всякий раз, когда осциллятор Aroon становится отрицательным, пробив нулевую линию.
Сигнальный график на EURUSD.
Сигнальный график на EURUSD.
def signal(Data, aroon_osc_col, buy, sell):
    
  Data = adder(Data, 10)
    
  for i in range(len(Data)):
    
   if Data[i, aroon_osc_col] > 0 and Data[i - 1, aroon_osc_col] < 0:
            
      Data[i, buy] = 1
        
   elif Data[i, aroon_osc_col] < 0 and Data[i - 1, aroon_osc_col] > 0:
        
      Data[i, sell] = -1
        
    return Data

Как видно из сигнального графика, иногда запаздывание является самым большим врагом стратегий следования за трендом. Каково решение этой проблемы? Мы можем попробовать настроить ретроспективный период, условия, добавить фильтры и даже изменить саму стратегию.

Сигнальный график на USDCHF.
Сигнальный график на USDCHF.

Стратегия V — это уникальная противоположная техника подтверждения с конфигурацией, напоминающей букву V. По сути, чтобы получить сигнал V, нам нужны следующие условия:

  1. Для бычьего сигнала (на покупку) осциллятор Aroon должен формировать V-форму, что означает, что текущее значение выше -75, предыдущее значение меньше -75, а предыдущее значение больше -75.
  2. Для бычьего сигнала (на продажу) осциллятор Aroon должен формировать перевернутую V-форму, что означает, что текущее значение меньше 75, предыдущее значение выше 75, а предыдущее значение меньше 75.
Сигнальный график на USDCAD по стратегии V.
Сигнальный график на USDCAD по стратегии V.
def signal(Data, aroon_osc_colr, buy, sell):
    
    Data = adder(Data, 10)
    
    for i in range(len(Data)): 
        if Data[i, aroon_osc_colr] > -75 and Data[i - 1, aroon_osc_colr] < -75 and Data[i - 2, aroon_osc_colr] > -75 :
            
            Data[i, buy] = 1 
            
        elif Data[i, aroon_osc_colr] < 75 and Data[i - 1, aroon_osc_colr] > 75  and Data[i - 2, aroon_osc_colr] < 75:
Data[i, sell] = -1    
            
    return Data

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

Резюме

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

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

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

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

#Python #Data Science
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу