En este artículo se detalla una estrategia de trading cuantitativa que utiliza el indicador RSI de varios períodos para determinar el punto de inflexión. La estrategia analiza simultáneamente varios indicadores RSI para identificar la formación de puntos de inflexión en el mercado.
El principio de la estrategia
La estrategia utiliza 3 grupos de indicadores RSI con diferentes parámetros, y su lógica es la siguiente:
Calcular el RSI para el ciclo 2, el ciclo 7 y el ciclo 14.
Cuando el RSI-2 es menor que 10, el RSI-7 es menor que 20 y el RSI-14 es menor que 30, se considera que se ha formado un fondo;
Cuando el RSI-2 es mayor que 90, el RSI-7 es mayor que 80 y el RSI-14 es mayor que 70, se considera que se ha formado una cima.
El indicador RSI es consistente y genera una señal de compra y venta.
Los parámetros para los requisitos de coherencia de indicadores se pueden predecir para controlar la frecuencia de la señal.
De esta manera, el análisis conjunto de indicadores RSI de varios períodos puede mejorar la precisión de los puntos de inflexión.
Dos, las ventajas estratégicas
La mayor ventaja de esta estrategia es el uso de indicadores RSI de varios períodos para el análisis de conjuntos, lo que puede mejorar la precisión de los juicios en los puntos clave y eliminar las falsas señales.
Otra ventaja es que se puede ajustar el parámetro de consistencia, controlar la frecuencia de las transacciones y adaptarse a diferentes entornos de mercado.
Finalmente, la combinación de RSI de diferentes períodos también ofrece más espacio para la optimización de los parámetros.
Tercero, el riesgo potencial.
Sin embargo, la estrategia también tiene los siguientes riesgos:
En primer lugar, el criterio del RSI sobre la reversión de los precios tiene problemas de retraso.
En segundo lugar, las combinaciones de indicadores son difíciles de evaluar, por lo que es necesario establecer reglas de filtración claras.
Por último, la inversión en inversiones en sí misma conlleva una cierta tasa de fracaso, lo que requiere preparación psicológica.
Cuatro contenido, resumen
Este artículo detalla una estrategia de comercio cuantitativa basada en el indicador RSI de varios períodos para identificar los puntos de inflexión. Mejora la capacidad de identificación de los puntos de inflexión en el mercado al juzgar la consistencia de los indicadores RSI. Pero también necesita evitar problemas de retraso y errores de juicio de señales. En general, ofrece una estrategia de optimización de RSI flexible en los parámetros.
/*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()