Стратегия, основанная на тренде RSI и EMA

Автор:Чао Чжан, Дата: 2024-01-25 12:19:32
Тэги:

img

Обзор

Эта стратегия сочетает в себе технические индикаторы Relative Strength Index (RSI) и Exponential Moving Average (EMA), чтобы реализовать количественную торговую стратегию, основанную на тренде.

Логика стратегии

Выбор показателя

  • EMA для определения текущего направления тренда. Стратегия использует 20-дневную, 50-дневную и 200-дневную EMA. Когда цена превышает эти EMA, определяется восходящий тренд.
  • Стандартный 14-периодный показатель, с порогом перекупления 70 и порогом перепродажи 30.

Правила въезда

Сигнал длинного входа:

  • RSI ниже уровня 30, указывающий на условия перепродажи, при которых цена может восстановиться
  • Цена выше 20-дневной, 50-дневной или 200-дневной EMA, показывающая тенденцию роста рынка

Когда оба критерия выполнены, вводится длинная позиция.

Управление рисками

Максимальная потеря для каждой сделки ограничена 3% от общей стоимости счета.

Размер позиции при входе: Максимальная потеря / (цена входа - цена остановки) = размер позиции

Это эффективно контролирует риск по торговле.

Правила выхода

  • РСИ поднимается выше уровня 70, цена может упасть из-за перекупленных условий.

Когда появляется один из сигналов, позиция закрывается.

Анализ преимуществ

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

Фиксированный максимальный убыток на одну сделку защищает капитал, напрямую контролируя уровень риска торговли.

Анализ рисков

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

Размещение стоп-лосса имеет решающее значение для PnL, требуя тщательного тестирования на разных рынках. Если слишком широкий, одиночный убыток может расшириться; если слишком тесный, шум может вызвать нежелательные остановки. Для постоянной оптимизации требуется живое тестирование.

Руководство по оптимизации

Проверка различных параметров RSI для адаптации к большему количеству рынков. Поиск оптимального соотношения размеров торговли. Добавление других технических индикаторов для создания более надежных систем входа / выхода. Все это варианты, которые стоит изучить.

Заключение


/*backtest
start: 2023-10-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Stratégie RSI et EMA avec Gestion du Risque", overlay=true)

// Paramètres de la stratégie
rsiLength = input(14, "Longueur du RSI")
rsiOverbought = input(70, "Niveau de Surachat RSI")
rsiOversold = input(30, "Niveau de Survente RSI")

// Calcul du RSI
rsiValue = rsi(close, rsiLength)

// Paramètres des EMA
ema20 = ema(close, 20)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

// Paramètre du risque par trade
riskPerTrade = input(0.03, "Risque par Trade (3%)")

// Distance du stop-loss en pips (à ajuster selon votre stratégie)
stopLossPips = input(1, "Distance du Stop-Loss en pips")

// Calcul de la taille de position et du stop-loss
calculatePositionSize(entryPrice, stopLossPips) =>
    stopLossPrice = entryPrice - stopLossPips * syminfo.mintick
    riskPerTradeValue = strategy.equity * riskPerTrade
    positionSize = riskPerTradeValue / (entryPrice - stopLossPrice)
    positionSize

// Conditions d'entrée
longCondition = (rsiValue < rsiOversold) and (close > ema20 or close > ema50 or close > ema200)
if longCondition
    strategy.entry("Long", strategy.long, qty=1)

// Conditions de sortie
exitCondition = (rsiValue > rsiOverbought) or (close < ema20 or close < ema50 or close < ema200)
if exitCondition
    strategy.close("Long")

// Affichage des EMA et RSI sur le graphique
plot(ema20, color=color.red)
plot(ema50, color=color.green)
plot(ema200, color=color.blue)
hline(rsiOverbought, "Niveau de Surachat RSI", color=color.red)
hline(rsiOversold, "Niveau de Survente RSI", color=color.blue)
plot(rsiValue, "RSI", color=color.purple)

Больше