
La estrategia RSI de seguimiento de tendencias es una estrategia de negociación automática de acciones que utiliza al mismo tiempo el análisis de tendencias y el indicador de sobreventa y sobreventa. La estrategia utiliza una media móvil simple para determinar la dirección de la tendencia del mercado y, en combinación con un indicador RSI relativamente fuerte, emite una señal de negociación para determinar y seguir la tendencia.
La estrategia tiene tres partes principales:
Determinación de la tendencia: Calcula el promedio móvil simple de 200 días de la tendencia a largo plazo, calcula el promedio móvil simple de 30 y 50 días de la tendencia a corto plazo. Cuando el promedio móvil a corto plazo cruza el promedio móvil a largo plazo como señal de alza, y baja como señal de baja, determina la tendencia a largo plazo del mercado.
Juízo de sobreventa: Calcula el RSI de 14 días, el RSI superior a 80 es el área de sobreventa y el inferior a 20 es el área de sobreventa. Se emite una señal de negociación cuando el RSI cae desde el área de sobreventa o sube desde el área de sobreventa.
Entradas y salidas: cuando se juzgan las señales de sobreventa y sobreventa, la entrada es más / vacía si coincide con la dirección de la señal de juicio de tendencia. Cuando se produce un cruce de oro entre el promedio móvil a corto plazo y el largo plazo, se juzga la reversión de la tendencia, en este momento la salida de la posición.
Con esta estrategia, se puede ingresar a tiempo en el momento en que el precio de las acciones se invierte, al tiempo que se filtra parte de las operaciones de ruido combinadas con el juicio de tendencias, y es relativamente bueno en el control de retiros.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
La estrategia también puede ser optimizada en los siguientes aspectos:
La estrategia RSI de seguimiento de tendencias es una estrategia muy práctica en general, y al mismo tiempo combina el análisis de tendencias y el indicador de sobrecompra y sobreventa para filtrar el ruido del mercado hasta cierto punto y hacer que las señales de negociación sean más precisas y efectivas. Mediante la optimización continua de los medios y parámetros, la estrategia puede convertirse en un sistema de negociación de largo plazo que sea constantemente rentable.
/*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)