Индекс относительной силы (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. Применяя эти методы, трейдеры и аналитики могут получить ценную информацию о рыночных условиях и принимать обоснованные торговые решения.