Esta estratégia projeta um sistema de negociação automatizado para posições longas e curtas baseado no indicador RSI. Ele entra em negociações quando o RSI mostra níveis de sobrecompra ou sobrevenda e sai com stop losses desencadeados por condições específicas.
A estratégia utiliza o indicador RSI para identificar condições de mercado de sobrecompra/supervenda. Especificamente, quando o RSI cai abaixo da linha de sobrevenda, entra em posições longas; quando o RSI excede a linha de supercompra, entra em posições curtas.
Além disso, as regras de saída são estabelecidas na estratégia. Após a abertura de posições longas, se o RSI cruzar acima da linha de sobrecompra novamente, ele irá desencadear stop losses para fechar longs; da mesma forma, após a abertura de curto, se o RSI cruzar abaixo da linha de sobrevenda novamente, ele vai fechar curto.
A maior vantagem desta estratégia é o uso do indicador RSI para julgar cenários de sobrecompra / sobrevenda, que é um método de análise técnica relativamente maduro e confiável na negociação quantitativa.
Além disso, o mecanismo de stop loss controla efetivamente o risco de queda durante fortes tendências unidirecionais, o que contrasta fortemente com as estratégias tradicionais de seguir tendências, onde os corredores podem facilmente entrar em problemas.
O maior risco é que o indicador RSI pode dar sinais de negociação errados ocasionalmente. Nenhum indicador técnico pode ser 100% preciso na previsão dos movimentos do mercado, incluindo o RSI. Quando o RSI faz julgamentos errados sobre o estado de sobrecompra / sobrevenda, isso levará a entradas erradas para a estratégia.
Para mitigar esse risco, as perdas de parada são implementadas na estratégia. Mas as chances de gatilhos de perda de parada ainda podem ser altas durante tendências fortes, e intervenção manual seria necessária para fechar as posições erradas.
Ainda há espaço para novas otimizações:
Incorporar outros indicadores para confirmar os sinais de entrada e evitar entradas erradas apenas a partir do RSI.
Otimizar os parâmetros do RSI para encontrar melhores valores de comprimento para detecções mais precisas de sobrecompra/supervenda.
Ajuste fino da colocação de stop loss para equilibrar a prevenção de perdas e evitar saídas prematuras.
Em geral, esta estratégia de negociação automatizada baseada em RSI tem a vantagem de identificar efetivamente as condições de mercado de sobrecompra e sobrevenda. Ao entrar em posições longas e curtas durante níveis extremos de RSI, visa lucrar com reversões de mercado. O mecanismo de stop loss também ajuda a limitar perdas durante fortes tendências unidirecionais. No entanto, o risco de sinais de RSI mal avaliados permanece.
/*backtest start: 2023-02-22 00:00:00 end: 2024-02-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Soran Strategy 2 - LONG SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false) // ----------------- Inputs ----------------- // reso = input(title="Resolution", type=input.resolution, defval="") length = input(20, title="RSI Length", type=input.integer) ovrsld = input(30, "RSI Oversold level", type=input.float) ovrbgt = input(85, "RSI Overbought level", type=input.float) lateleave = input(28, "Number of candles", type=input.integer) // lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition). // best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28 stratbull = input(title="Enter longs ?", type = input.bool, defval=true) stratbear = input(title="Enter shorts ?", type = input.bool, defval=true) stratyear = input(2020, title = "Strategy Start Year") stratmonth = input(1, title = "Strategy Start Month") stratday = input(1, title = "Strategy Start Day") stratstart = timestamp(stratyear,stratmonth,stratday,0,0) // --------------- Laguerre ----------------- // laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false) gamma = input(0.06, title="Laguerre Gamma") laguerre_cal(s,g) => l0 = 0.0 l1 = 0.0 l2 = 0.0 l3 = 0.0 l0 := (1 - g)*s+g*nz(l0[1]) l1 := -g*l0+nz(l0[1])+g*nz(l1[1]) l2 := -g*l1+nz(l1[1])+g*nz(l2[1]) l3 := -g*l2+nz(l2[1])+g*nz(l3[1]) (l0 + 2*l1 + 2*l2 + l3)/6 // ---------------- Rsi VWAP ---------------- // rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length)) rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV // ------------------ Plots ----------------- // prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line) hline = plot(ovrbgt, color = color.gray, style=plot.style_line) lline = plot(ovrsld, color = color.gray, style=plot.style_line) fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30) fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30) // ---------------- Positions: only shows Buy and close Buy positions --------------- // timebull = stratbull timebear = stratbear strategy.entry("Long", true, when = timebull and crossover(rsiVWAP, ovrsld), comment="") strategy.close("Long", when = timebull and crossover(rsiVWAP, ovrbgt)[lateleave] or crossunder(rsiVWAP, ovrbgt), comment="")