Изучение нескольких методов оценки значений RSI с использованием примеров кода

Индекс относительной силы (RSI) – популярный индикатор технического анализа, используемый для измерения силы и импульса финансового инструмента. Его обычно используют трейдеры и аналитики для определения условий перекупленности или перепроданности на рынке. В этой статье мы рассмотрим различные методы оценки значений RSI на примерах кода на Python.

Метод 1: простой расчет RSI
Самый простой метод расчета RSI включает в себя получение среднего дохода и среднего убытка за определенный период и использование этих значений для расчета RSI. Вот пример кода:

def calculate_rsi(data, period):
    delta = data.diff()
    gain = delta.where(delta > 0, 0)
    loss = -delta.where(delta < 0, 0)
    avg_gain = gain.rolling(window=period).mean()
    avg_loss = loss.rolling(window=period).mean()
    rs = avg_gain / avg_loss
    rsi = 100 - (100 / (1 + rs))
    return rsi

Метод 2: Метод сглаживания Уайлдера
Метод сглаживания Уайлдера придает больший вес недавним изменениям цен, что приводит к более чувствительному RSI. Фрагмент кода ниже демонстрирует этот подход:

def calculate_rsi_wilder(data, period):
    delta = data.diff().dropna()
    gain = delta.where(delta > 0, 0)
    loss = -delta.where(delta < 0, 0)
    avg_gain = gain.ewm(alpha=1 / period).mean()
    avg_loss = loss.ewm(alpha=1 / period).mean()
    rs = avg_gain / avg_loss
    rsi = 100 - (100 / (1 + rs))
    return rsi

Метод 3: сглаженный RSI с использованием экспоненциальной скользящей средней
Этот метод включает в себя сглаживание самого RSI с использованием экспоненциальной скользящей средней (EMA). Вот пример того, как реализовать это на Python:

def calculate_smoothed_rsi(data, period, smoothing_period):
    rsi = calculate_rsi(data, period)
    smoothed_rsi = rsi.ewm(span=smoothing_period).mean()
    return smoothed_rsi

Метод 4: обнаружение дивергенции RSI
Дивергенция RSI возникает, когда цена и индикатор RSI движутся в противоположных направлениях. Обнаружение дивергенции может помочь выявить потенциальные развороты тренда. Вот фрагмент кода для обнаружения расхождения RSI:

def detect_rsi_divergence(data, period):
    rsi = calculate_rsi(data, period)
    price = data['Close']
    rsi_divergence = np.where(
        (price.diff() > 0) & (rsi.diff() < 0) |
        (price.diff() < 0) & (rsi.diff() > 0),
        1, 0
    )
    return rsi_divergence

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