Esta estratégia projeta uma estratégia de investimento quantitativo para a negociação do índice Nifty com base no indicador Relative Strength Index (RSI).
A estratégia define o RSI de 2 períodos como sinais de negociação. Vai longo quando o RSI cruza acima de 20 e fecha a posição quando o RSI cruza abaixo de 70. Isso capta as oportunidades de ajuste de curto prazo do índice.
A lógica é: quando o RSI está abaixo de 20, indica estado de sobrevenda, implicando que o ativo está subestimado e o rebote está à frente. Quando o RSI cruza acima de 20, vá longo. Quando o RSI está acima de 70, indica estado de sobrecompra, implicando que o ativo está sobrevalorizado e o callback está à frente. Quando o RSI cruza abaixo de 70, feche a posição.
Como estratégia que identifica oportunidades de sobrecompra/supervenda a curto prazo com indicadores, as principais vantagens são:
Os principais riscos desta estratégia incluem:
Para controlar os riscos acima referidos, podem ser realizadas otimizações nos seguintes aspectos:
Principais aspectos para a otimização da estratégia:
Esta estratégia projeta uma estratégia de negociação de curto prazo baseada no indicador RSI, capturando sinais de sobrecompra / sobrevenda para compras baixas e vendas altas. A estratégia tem um princípio simples e é fácil de implementar, mas tem certo grau de negociação frequente, incapacidade de identificar tendências de longo prazo, etc. Melhorias futuras podem ser feitas na otimização dos parâmetros do RSI, adicionando stop loss, combinando tendência de julgamento, etc., para tornar a estratégia mais estável e confiável.
/*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)