Estrategia de negociación de Nifty basada en el indicador RSI

El autor:¿ Qué pasa?, Fecha: 2024-01-25 12:23:39
Las etiquetas:

img

Resumen general

Esta estrategia diseña una estrategia de inversión cuantitativa para la negociación del índice Nifty basada en el indicador del índice de fortaleza relativa (RSI).

Principio de la estrategia

La estrategia establece el RSI de 2 períodos como señales comerciales. Se va largo cuando el RSI cruza por encima de 20, y cierra la posición cuando el RSI cruza por debajo de 70.

La lógica es: cuando el RSI está por debajo de 20, indica el estado de sobreventa, lo que implica que el activo está subestimado y el rebote está por delante. Cuando el RSI cruza por encima de 20, vaya largo. Cuando el RSI está por encima de 70, indica el estado de sobrecompra, lo que implica que el activo está sobrevaluado y el callback está por delante. Cuando el RSI cruza por debajo de 70, cierre la posición.

Análisis de ventajas

Como estrategia que identifica las oportunidades de sobrecompra/sobreventa a corto plazo con indicadores, las principales ventajas son:

  1. El principio es simple y claro, fácil de entender y validar
  2. Pocos parámetros de indicadores, fácil de optimizar y ajustar
  3. La búsqueda de rendimientos excedentes a corto plazo, se alinea con la filosofía comercial del scalping
  4. Período de negociación personalizable, adaptable a las diferentes expectativas

Análisis de riesgos

Los principales riesgos de esta estrategia incluyen:

  1. Incapaz de captar las tendencias a largo plazo, es probable que pierda grandes movimientos
  2. Exceso de confianza en la optimización de parámetros, riesgo de sobreajuste
  3. No existe un mecanismo de stop loss para controlar eficazmente las pérdidas
  4. Las operaciones frecuentes afectan al período de retención, lo que genera mayores costes de transacción

Para controlar los riesgos antes mencionados, se pueden realizar optimizaciones en los siguientes aspectos:

  1. Incorporar indicadores de tendencia para identificar movimientos a largo plazo
  2. Adopte el análisis de marcha hacia adelante para evitar el sobreajuste
  3. Establecer puntos de parada de pérdida para una parada de pérdida oportuna
  4. Ajustar adecuadamente los parámetros de negociación para controlar la frecuencia de las operaciones

Direcciones de optimización

Principales aspectos para optimizar la estrategia:

  1. Optimizar los parámetros del RSI para encontrar las combinaciones óptimas de parámetros
  2. Se añade un mecanismo de stop loss para limitar la extracción máxima
  3. Incorporar medias móviles, etc., para juzgar la tendencia a largo plazo
  4. Añadir módulo de dimensionamiento de posición para optimizar la asignación de posición
  5. Añadir derechos de autor cuantitativos para ajustar automáticamente los parámetros

Conclusión

Esta estrategia diseña una estrategia comercial a corto plazo basada en el indicador RSI, capturando señales de sobrecompra / sobreventa para compras bajas y ventas altas. La estrategia tiene un principio simple y es fácil de implementar, pero tiene cierto grado de comercio frecuente, incapacidad para identificar tendencias a largo plazo, etc. Se pueden hacer mejoras futuras en la optimización de los parámetros del RSI, la adición de stop loss, la combinación de tendencias de juicio, etc., para hacer que la estrategia sea más estable y confiable.


/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Strategy", overlay=true,pyramiding = 1000)
rsi_period = 2
rsi_lower = 20
rsi_upper = 70

rsi_value = rsi(close, rsi_period)
buy_signal = crossover(rsi_value, rsi_lower)
sell_signal = crossunder(rsi_value, rsi_upper)
current_date1 =  input(defval=timestamp("01 Nov 2009 00:00 +0000"), title="stary Time", group="Time Settings")

current_date =  input(defval=timestamp("01 Nov 2023 00:00 +0000"), title="End Time", group="Time Settings")
investment_amount = 100000.0
start_time = input(defval=timestamp("01 Dec 2018 00:00 +0000"), title="Start Time", group="Time Settings") 
end_time = input(defval=timestamp("30 Nov 2023 00:00 +0000"), title="End Time", group="Time Settings")

in_time = time >= start_time and time <= end_time
// Variable to track accumulation.
var accumulation = 0.0
out_time = time >= end_time 

if (buy_signal )
    strategy.entry("long",strategy.long,qty= 1) 
    accumulation += 1
if (out_time)
    strategy.close(id="long")

plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown)

plot(rsi_value, title="RSI", color=color.blue)
hline(rsi_lower, title="Lower Level", color=color.red)



plot(strategy.opentrades, style=plot.style_columns, 
     color=#2300a1, title="Profit first entry")
plot(strategy.openprofit, style=plot.style_line, 
     color=#147a00, title="Profit first entry")
// plot(strategy.position_avg_price, style=plot.style_columns, 
//      color=#ca0303, title="Profit first entry")
// log.info(strategy.position_size * strategy.position_avg_price)


Más.