Почему чутьё — плохой советчик
Сидел я как-то ночью перед графиком, кофе остыл, а я пытался понять, почему мои «интуитивные» сделки раз за разом уходят в минус. Читал умные статьи про «следуй за трендом», но на глаз определить этот тренд не получалось — цена дёргалась, выбивала стопы, и я чувствовал себя как новичок в тёмной комнате. Стало очевидно: нужна система, которая отсекает шум и показывает реальное движение.
Так я добрался до технического анализа — скользящих средних (moving averages) и индекса относительной силы (RSI). Если вы тоже устали гадать — давайте разбираться.
Что такое скользящие средние и RSI
Цена сама по себе — болтливый рассказчик. Скользящие средние сглаживают эту болтовню, показывая усреднённую цену за период. Представьте, что вы смотрите на дорогу не через подпрыгивающий объектив, а через стабилизатор — сразу видно направление.
- Простая скользящая средняя (SMA) — сумма цен за N дней, делённая на N. Надёжно, но отстаёт, потому что каждый день имеет одинаковый вес.
- Экспоненциальная скользящая средняя (EMA) — придаёт больший вес свежим ценам, реагирует быстрее. Это как переключиться с тяжёлого молота на лёгкий скальпель.
RSI — осциллятор, который измеряет скорость изменения цены по шкале от 0 до 100. Традиционно считают: выше 70 — рынок перекуплен (скоро коррекция), ниже 30 — перепродан (возможен отскок). Сам по себе RSI — не хрустальный шар, но в паре со скользящими средними он даёт мощный фильтр.
Моё озарение случилось, когда я заметил: бычий кроссовер EMA (короткая пересекает длинную снизу вверх) вместе с RSI, выходящим из зоны перепроданности, часто предшествует росту. А медвежий кроссовер с RSI, падающим из перекупленности, сигналит о продажах. График перестал быть абстракцией.
Практика: код и примеры
Давайте напишем простой скрипт на Python, который загружает данные, считает индикаторы и отмечает сигналы. Это спасение для тех, кто устал вручную считать в Excel.
Сначала импорты и загрузка данных (через yfinance):
import yfinance as fin import pandas as pd import numpy as np import matplotlib.pyplot as plt df = fin.download("AAPL", period="6mo", interval="1d") df = df[["Close"]].copy() df.rename(columns={"Close": "price"}, inplace=True) df.head()1. Скользящие средние
# 20-дневная SMA и 50-дневная SMA df['SMA_20'] = df['price'].rolling(window=20).mean() df['SMA_50'] = df['price'].rolling(window=50).mean() # 20-дневная EMA и 50-дневная EMA df['EMA_20'] = df['price'].ewm(span=20, adjust=False).mean() df['EMA_50'] = df['price'].ewm(span=50, adjust=False).mean()Ловушка №1: Не забывайте удалять NaN, которые появляются в начале расчёта. Если торговать по этим строкам — получите ложные сигналы. Всегда делайте df.dropna().
2. Расчёт RSI
Классический 14-периодный RSI по Уайлдеру:
def compute_rsi(series, period=14): delta = series.diff() up = delta.clip(lower=0) down = -delta.clip(upper=0) ma_up = up.ewm(com=period-1, adjust=False).mean() ma_down = down.ewm(com=period-1, adjust=False).mean() rs = ma_up / ma_down rsi = 100 - (100 / (1 + rs)) return rsi df['RSI'] = compute_rsi(df['price'])Ловушка №2: Использовать SMA для сглаживания изменений, а не EMA. Оригинальный RSI Уайлдера использует экспоненциальное сглаживание. Если взять SMA, индикатор станет слишком пилообразным и будет давать ложные экстремумы.
3. Генерация сигналов
# Бычий сигнал: EMA20 пересекает EMA50 вверх И RSI выходит из зоны ниже 30 df['signal'] = np.where( (df['EMA_20'] > df['EMA_50']) & (df['EMA_20'].shift(1) <= df['EMA_50'].shift(1)) & (df['RSI'] > 30) & (df['RSI'].shift(1) <= 30), 1, # buy np.where( (df['EMA_20'] < df['EMA_50']) & (df['EMA_20'].shift(1) >= df['EMA_50'].shift(1)) & (df['RSI'] < 70) & (df['RSI'].shift(1) >= 70), -1, # sell 0 # hold ) ) # Визуализация plt.plot(df.index, df['price'], label='Price') plt.plot(df.index, df['EMA_20'], label='EMA 20') plt.plot(df.index, df['EMA_50'], label='EMA 50') plt.scatter(df[df['signal']==1].index, df[df['signal']==1]['price'], marker='^', color='g', label='Buy') plt.scatter(df[df['signal']==-1].index, df[df['signal']==-1]['price'], marker='v', color='r', label='Sell') plt.legend() plt.show()Конечно, ни один индикатор не даёт 100% гарантии. Но когда вы видите, что EMA и RSI говорят одно и то же — это уже не гадание, а система. Пробуйте, тестируйте на истории и помните: даже джедаи иногда ошибаются.
Комментарии (0)
Войдите, чтобы комментировать.
Пока нет комментариев. Будьте первым.