Estrategia de trading de reversión rápida del RSI


Fecha de creación: 2024-03-01 11:55:56 Última modificación: 2024-03-01 11:55:56
Copiar: 2 Número de Visitas: 617
1
Seguir
1617
Seguidores

Estrategia de trading de reversión rápida del RSI

Descripción general

La estrategia de cambio de tendencia RSI rápida se basa en la combinación del uso de indicadores RSI rápidos, filtros de entidades de línea K, filtros de precios máximos y mínimos y filtros de línea media SMA para determinar el punto de cambio de tendencia y realizar operaciones de cambio de tendencia de bajo riesgo. La estrategia está diseñada para capturar oportunidades de cambio de tendencia a corto plazo.

Principio de estrategia

La estrategia se basa en los siguientes indicadores:

  1. Indicador RSI rápido: Calcule el RSI con la función RMA, haciéndolo más sensible para capturar señales de sobreventa más rápidas.

  2. Filtrado de entidad de línea K: Se requiere que el tamaño de la entidad de la línea K sea mayor que el 15 de la línea media de la entidad de la EMA para que el filtro no cambie mucho.

  3. Filtrado de precio máximo y mínimoEl precio de la innovación es alto o bajo para confirmar la inversión de la tendencia.

  4. Filtro de línea media SMAEl precio de las acciones en el mercado de divisas es el precio de las acciones en el mercado de divisas.

La lógica es la siguiente:

Entrada múltiple: el indicador RSI rápido está por debajo de la zona de sobreventa y las entidades de la línea K son mayores que la línea media de las entidades de la EMA 15 y tienen un mínimo de ruptura de AND en el precio y atraviesan la línea media SMA

Entrada en blanco: el indicador RSI rápido está por encima de la zona de sobreventa y las entidades de la línea K son mayores que la línea media de las entidades de la EMA 15 y tienen el valor máximo de ruptura de AND. El precio cruza por debajo de la línea media SMA

Salida de la paridad: el RSI rápido regresa a la zona normal

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. Capturar las fluctuaciones de la inversión a corto plazo
  2. El RSI rápido es muy sensible
  3. Filtración múltiple para reducir las señales falsas
  4. El riesgo es controlado, la retirada es pequeña.

Riesgo y optimización

La estrategia también tiene sus riesgos:

  1. El riesgo de la reversión
  2. Optimización de parámetros con espacio limitado

Se puede optimizar aún más:

  1. En combinación con el volumen de filtración
  2. Aumentar las estrategias de alto riesgo
  3. Combinación de parámetros de optimización

Resumir

La estrategia en general es una estrategia de inversión a corto plazo de bajo riesgo. Se trata de una estrategia de inversión de corto plazo que determina el punto de compra y venta a través de indicadores RSI rápidos y utiliza múltiples filtros para reducir las falsas señales, lo que permite una inversión de inversión de riesgo controlado y adecuada para operaciones de línea corta. La estrategia puede optimizarse aún más y tiene un gran potencial de desarrollo.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-26 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.4", shorttitle = "Fast RSI str 1.4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usesma = input(true, defval = true, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars")
showsma = input(false, defval = false, title = "Show SMA Filter")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Body
body = abs(close - open)
emabody = ema(body, 30)

//MinMax Bars
min = min(close, open)
max = max(close, open)
minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0
maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0
mins = sma(minsignal, mmbars) == 1
maxs = sma(maxsignal, mmbars) == 1

//SMA Filter
sma = sma(close, smaperiod)
colorsma = showsma ? blue : na
plot(sma, color = colorsma, linewidth = 3)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and usemm
dn2 = maxs and (close < sma or usesma == false) and usemm 
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()