Стратегия RSI на основе скользящей средней, следующей за трендом


Дата создания: 2023-11-23 17:13:06 Последнее изменение: 2023-11-23 17:13:06
Копировать: 0 Количество просмотров: 626
1
Подписаться
1617
Подписчики

Стратегия RSI на основе скользящей средней, следующей за трендом

Обзор

Тренд-следящая средняя RSI стратегия - это стратегия автоматической торговли акциями, которая одновременно использует анализ тренда и индикатор перепродажи. Эта стратегия использует простую среднюю среднюю для определения направления рыночной тенденции и в сочетании с относительно сильным индикатором RSI посылает торговый сигнал для определения и отслеживания тенденции.

Стратегический принцип

Стратегия состоит из трех основных частей:

  1. Определение тренда: вычисление 200-дневных простых скользящих средних долгосрочных тенденций, вычисление 30-дневных и 50-дневных простых скользящих средних краткосрочных тенденций. Когда краткосрочные скользящие средние пересекают долгосрочные скользящие средние как позитивные сигналы, а низкие - как нисходящие сигналы, выясняется долгосрочная краткосрочная тенденция рынка.

  2. Суждение о перекупке: рассчитывается 14-дневный RSI, RSI выше 80 - это зона перекупа, а ниже 20 - зона перепродажи. Когда индикатор RSI падает из зоны перекупа или поднимается из зоны перепродажи, подается торговый сигнал.

  3. Вход и выход: при определении сигналов перекупа и перепродажи, если они совпадают с направлением сигналов, определяемого трендом, вход делается сверх/ниже. Когда происходит золотой пересечение краткосрочной и долгосрочной подвижной средней, определяется обратный тренд, в этот момент выходит из позиции.

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

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

Эта стратегия имеет следующие преимущества:

  1. В сочетании с оценкой тенденций и индикаторами перепродажи и перекупа, фильтр шума, чтобы определить переломные моменты.
  2. При этом следует учитывать направление тенденций в течение двух периодов времени, чтобы быть более точным.
  3. Используя движущуюся среднюю как метод остановки, можно установить точку остановки в зависимости от степени волатильности рынка.
  4. Строгие условия для въезда позволяют эффективно предотвратить ложные проникновения.

Риски и решения

Однако эта стратегия также несет в себе некоторые риски:

  1. Если рынок будет долго колебаться, то будет открыто множество недействительных сделок. Решение заключается в добавлении дополнительных фильтров, чтобы избежать бесполезных сделок.
  2. Существует определенный риск задержки времени. Решение - это соответствующее сокращение циклических параметров движущейся средней.
  3. Сигналы RSI влияют на акции и рынки. Решение заключается в объединении дополнительных факторов, таких как форма K-линии, для оценки эффективности.

Направление оптимизации

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

  1. Добавление дополнительных условий для фильтрации, таких как объем передачи, форма K-линий и т. д., способствует дальнейшему повышению эффективности сигнала.
  2. Оптимизация цикла параметров движущихся средних и RSI, чтобы они были более соответствующими характеристикам различных акций.
  3. Создание динамических скользящих средних, которые автоматически корректируют параметры в зависимости от волатильности рынка и предпочтений риска.
  4. Применение более продвинутых технологий, таких как машинное обучение, для определения тенденций и повышения точности оценки.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mattehalen

// INPUT per TIMEFRAME
// 5min     = Legnth = 9, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 4, LongMA = 10
// 30min    = Legnth = 7, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 10, LongMA = 20

strategy("Mathias & Christer Timeframe RSI", shorttitle="M&C_RSI",overlay=true, process_orders_on_close = true, default_qty_type =  strategy.percent_of_equity, default_qty_value = 100)
len = input(9, title="Length", type=input.integer)
src = input(ohlc4, title="Source", type=input.source)
//show4h = input(true, title="show 4h", type=input.bool)
maxLoss = input(3000)

rsiCurrent = rsi(src, len)
//rsi4h = security(syminfo.ticker, "240", rsi(src, len))
rsi4h   = rsi(src, len)

//--------------------------------------------------
//MA
trendMAInput = input(200, title="trendMA", type=input.integer)
shortMAInput = input(30, title="shortMA", type=input.integer)
longMAInput = input(50, title="longMA", type=input.integer)

trendMA = ema(close,trendMAInput)
shortMA = ema(close,shortMAInput)
longMA  = ema(close,longMAInput)
plot(trendMA, color=color.black, linewidth=5)
plot(shortMA, color=color.red, linewidth=2)
plot(longMA, color=color.green, linewidth=2)
bgcolor(crossunder(shortMA,longMA) ? color.black : na, transp=10)

//--------------------------------------------------
//RSI
BuySignalBarssince = barssince(rsi4h[1]<rsi4h[0] and rsi4h[1]<20)
BuySignal       = (rsi4h[1]<rsi4h[0] and rsi4h[1]<20 and BuySignalBarssince[1]>10)
BuySignalOut   = crossunder(longMA[1],shortMA[1])
bgcolor(BuySignal ? color.green : na, transp=70)
bgcolor(BuySignalOut ? color.green : na, transp=10)



SellSignalBarssince = barssince(rsi4h[1]>rsi4h[0] and rsi4h[1]>80)
SellSignal      = (rsi4h[1]>rsi4h[0] and rsi4h[1]>80 and SellSignalBarssince[1]>10)
SellSignalOut   = crossunder(shortMA[1],longMA[1])
bgcolor(SellSignal ? color.red : na, transp=70)
bgcolor(SellSignalOut ? color.red : na, transp=10)


if BuySignal
    strategy.close("short", comment = "Exit short")
    strategy.entry("long", true)
    strategy.exit("Max Loss", "long", loss = maxLoss)

if BuySignalOut
    strategy.close("long", comment = "Exit Long")
if SellSignal
    // Enter trade and issue exit order on max loss.
    strategy.close("long", comment = "Exit Long")
    strategy.entry("short", false)
    strategy.exit("Max Loss", "short", loss = maxLoss)
if SellSignalOut
    // Force trade exit.
    strategy.close("short", comment = "Exit short")
    
//--------------------------------------------------
//ATR
MyAtr = atr(10)
AtrFactor = 10
mySLBuy  = close[BuySignalBarssince]
mySLSell = close[SellSignalBarssince]

plotchar(BuySignal, "BuySignal", "⬆", location.belowbar, color.lime,size =size.huge )
plotchar(BuySignalOut, "BuySignalOut", "█", location.belowbar, color.lime,size =size.small)
plotchar(SellSignal, "SellSignal", "⬇", location.abovebar ,color.red,size =size.huge)
plotchar(SellSignalOut, "SellSignalOut", "█", location.abovebar, color.red,size =size.small)