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).
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.
Como estrategia que identifica las oportunidades de sobrecompra/sobreventa a corto plazo con indicadores, las principales ventajas son:
Los principales riesgos de esta estrategia incluyen:
Para controlar los riesgos antes mencionados, se pueden realizar optimizaciones en los siguientes aspectos:
Principales aspectos para optimizar la estrategia:
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)