Este artículo explica en detalle una estrategia de trading cuantitativa que utiliza indicadores de RSI de varios períodos para identificar puntos de reversión.
I. Lógica de la estrategia
La estrategia emplea 3 grupos de indicadores RSI con diferentes parámetros:
Se calcularán los valores del RSI para los períodos 2, 7 y 14, respectivamente.
Cuando el RSI-2 está por debajo de 10, el RSI-7 por debajo de 20 y el RSI-14 por debajo de 30, se identifica un fondo.
Cuando el RSI-2 está por encima de 90, el RSI-7 por encima de 80 y el RSI-14 por encima de 70, se identifica una cima.
Generar señales de compra/venta basadas en la unanimidad del RSI.
Parámetros ajustables preestablecidos para el consenso del indicador, control de la frecuencia de la señal.
Al analizar los indicadores RSI en todos los períodos en conjunto, se puede mejorar la precisión del punto de inversión.
II. Ventajas de la Estrategia
La mayor ventaja es que el uso de análisis de RSI de marcos de tiempo múltiples mejora la identificación de puntos clave y filtra señales falsas.
Otra ventaja es la flexibilidad para ajustar los parámetros de consenso y adaptarse a los diferentes entornos de mercado.
Por último, las combinaciones del RSI también proporcionan más opciones de ajuste.
III. Riesgos potenciales
Sin embargo, existen los siguientes riesgos:
En primer lugar, el propio RSI tiene un retraso inherente en la identificación de las reversiones.
En segundo lugar, los múltiples indicadores introducen una ambigüedad de señales que requiere normas claras.
Por último, las operaciones de reversión tienen una tasa de fracaso que requiere preparación psicológica.
IV. Resumen
En resumen, este artículo ha explicado una estrategia cuantitativa de identificación de reversiones basada en el análisis del RSI de varios períodos. Mejora el reconocimiento de los puntos de inflexión del mercado al juzgar la unanimidad del RSI. Pero los riesgos como el retraso y las señales incorrectas deben ser manejados. En general, proporciona un enfoque flexible de optimización de la estrategia del RSI.
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Triple RSI Top/Bottom v1.1", shorttitle = "3RSI Top/Bottom 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage") indi = input(3, defval = 3, minval = 1, maxval = 3, title = "Indicators") accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy") fromyear = input(1900, defval = 1900, 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") //RSI-2 fastup = rma(max(change(close), 0), 2) fastdown = rma(-min(change(close), 0), 2) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //RSI-7 middleup = rma(max(change(close), 0), 7) middledown = rma(-min(change(close), 0), 7) middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown)) //RSI-14 slowup = rma(max(change(close), 0), 14) slowdown = rma(-min(change(close), 0), 14) slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown)) //Body body = abs(close - open) abody = sma(body, 10) //Signals acc = 10 - accuracy signalup1 = fastrsi < (5 + acc) ? 1 : 0 signalup2 = middlersi < (10 + acc * 2) ? 1 : 0 signalup3 = slowrsi < (15 + acc * 3) ? 1 : 0 signaldn1 = fastrsi > (95 - acc) ? 1 : 0 signaldn2 = middlersi > (90 - acc * 2) ? 1 : 0 signaldn3 = slowrsi > (85 - acc * 3) ? 1 : 0 up = signalup1 + signalup2 + signalup3 >= indi dn = signaldn1 + signaldn2 + signaldn3 >= indi exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3 //Trading lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Top", strategy.short, needshort == false ? 0 : lot) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()