Estratégia de RSI em camadas diagonais de múltiplos prazos

Autora:ChaoZhang, Data: 2023-09-28 16:12:25
Tags:

Resumo

Esta estratégia é uma estratégia de RSI multi-tempo não-repainting que vai longo apenas quando dois prazos mais altos são sobrevendidos. Eu escrevi sobre BTC/USD 1 minuto, mas a lógica deve funcionar em outros ativos também.

Princípio

A camada diagonal refere-se às condições de entrada e saída espalhadas por diferentes prazos. Normalmente, os indicadores podem se tornar não lucrativos porque, nas tendências de baixa, as zonas de sobrecompra do período atual não são alcançadas. Em vez disso, as zonas de sobrecompra dos prazos mais altos são alcançadas primeiro, seguidas por um recuo.

Assim, esta estratégia é diagonalmente em camadas. Eu posso criar um script separado que troca entre diagonal-up e diagonal-down com base na tendência geral, como em períodos de tendência de alta estendida este indicador pode não piscar com tanta frequência. Isso pode ser visualizado em um gráfico de série de tempo x timeframe como uma forma X. Algo a considerar...

Vantagens

  • Utiliza indicadores RSI em vários prazos, melhorando a confiabilidade do sinal
  • A camadação diagonal proporciona mais oportunidades em tendências de baixa
  • Os indicadores não-repeinados dão sinais fiáveis.
  • Os parâmetros do RSI configuráveis e os níveis de sobrecompra/supervenda adaptam-se aos diferentes mercados
  • Considera os custos de negociação, visa lucros constantes em relação à negociação de alta frequência

Riscos e soluções

  • RSI propenso a sinais falsos, ajustar parâmetros ou adicionar filtros
  • A camada diagonal aumenta a dificuldade de entrada, reduz os prazos em camadas
  • Só longo, exposto ao risco direcional, considerar o equilíbrio longo/curto
  • Utilize stop loss fixo para controlar a perda por transação

Orientações de otimização

  • Adicionar a detecção de tendências, usar camadas diagonais em tendências descendentes, diagonal-up em tendências ascendentes
  • Otimize os parâmetros do RSI para encontrar a melhor combinação
  • Adicionar filtros de volume, MA, etc. para melhorar a qualidade do sinal
  • Adicionar estratégia curta para que a estratégia possa lucrar em todos os mercados
  • Otimizar o stop loss para reduzir o drawdown

Resumo

Em geral, esta é uma estratégia de negociação de tendência de baixa muito eficaz. Usando RSI de vários prazos e camadas diagonais fornece oportunidades para capturar rebotes em tendências de baixa. Não repintando também melhora a confiabilidade do sinal. Com otimização de parâmetros, adicionando filtros e uma estratégia curta, pode ser transformado em uma estratégia robusta para qualquer mercado.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-06-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin

//@version=5
strategy("MTF Layered RSI - Bitcoin Bot [wbburgin]",overlay=false, pyramiding = 20, initial_capital=10000)

length = input.int(7,"RSI Length")
tf2 = input.timeframe("3",title="HT 1")
tf3 = input.timeframe("5",title="HT 2")
ob = input.int(80,"Overbought Level")
os = input.int(20,"Oversold Level")

rsi = ta.rsi(close,length)
rsi2 = request.security(syminfo.tickerid, tf2, rsi[1], barmerge.gaps_off, lookahead=barmerge.lookahead_on)
rsi3 = request.security(syminfo.tickerid, tf3, rsi[1], barmerge.gaps_off, lookahead=barmerge.lookahead_on)

plot(rsi,color=color.yellow,title="RSI Current TF")
plot(rsi2,color=color.new(color.yellow,50),title="RSI HT1")
plot(rsi3,color=color.new(color.yellow,75),title="RSI HT2")

lm=hline(os,title="Oversold")
hm=hline(ob,title="Overbought")

fill(hm,lm,color=color.new(color.blue,95))

htCross = (ta.crossover(rsi2,os) and rsi3>os and rsi>os) or (ta.crossover(rsi3,os) and rsi2>os and rsi>os)
buySig = (ta.crossover(rsi,os) and rsi2 < os and rsi3 < os) or htCross
sellSig = ta.crossunder(rsi,ob)

if buySig
    strategy.entry("Long",strategy.long)
if sellSig
    strategy.close("Long")

plotshape(buySig,title="Buysig",style=shape.triangleup,location=location.bottom,color=color.green,size=size.tiny)
plotshape(sellSig,title="Sellsig",style=shape.triangledown,location=location.top,color=color.red,size=size.tiny)

Mais.