Стратегия отслеживания тенденций RSI и MA

Автор:Чао Чжан, Дата: 2024-02-20 15:31:15
Тэги:

img

Обзор

Эта стратегия определяет рыночные тенденции и сигналы входа путем скрещивания индикатора RSI и двух скользящих средних (MA) разных периодов.

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

Стратегия использует два MAs 12 и 26 периодов. Когда 12-периодный быстрый MA пересекает 26-периодный медленный MA, это сигнализирует о восходящей тенденции, и наоборот. Стратегия длится на золотом кроссовере и коротка на смертном кроссовере двух MAs.

Индикатор RSI также используется для определения зон перекупа/перепродажи. Только когда RSI выше своей 26-периодической MA, стратегия откроет длинные позиции на золотом кроссовере. И только когда RSI ниже, она откроет короткие позиции на кроссовере смерти. Это избегает принудительных входов против ситуаций перекупа/перепродажи и, следовательно, контролирует риски.

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

Сочетая MAs и RSI для анализа тренда и сроков, эта стратегия может эффективно отслеживать тенденции. Фильтр RSI уменьшает частоту торговли и избегает сбоев на рыночных рынках. Неиспользование стоп-лосса позволяет полностью следовать тренду для более высокой доходности.

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

Без стоп-лосса, потери могут усиливаться на неправильных сигналах. Большие движения разрыва также могут привести к большим потерям. Кроме того, неправильно настроенные фильтры RSI могут вызвать отсутствие хороших сигналов входа.

Подумайте о использовании стоп-лосса для контроля максимальных потерь. Медленно настройте параметры RSI для лучших фильтров. Для волатильных рынков используйте более медленные MAs для оценки тренда.

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

Стратегия может быть улучшена в следующих аспектах:

  1. Испытать комбинации MA различных периодов, чтобы найти параметры, наилучшим образом соответствующие текущим рыночным условиям.

  2. Оптимизируйте периоды RSI и логику фильтрации для лучшего времени входа.

  3. Добавьте другие показатели, такие как объем, для лучшей стабильности системы.

  4. Оптимизировать стратегии стоп-лосса для сбалансированного следования тренду и контроля риска, например, стоп-поток, стоп-процент, динамический стоп и т.д.

Заключение

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


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)

window() => true

stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")

maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)

fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)

//if (rsi1 < ema(rsi1,7))
//rsiLong = false

//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26)))  //RSI ema values optimal from 19 to 35
    strategy.entry("LongId", strategy.long, when=window())

//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong) 

//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Больше