Estratégia de cruzamento da média móvel do RSI

Autora:ChaoZhang, Data: 2023-11-07 15:35:58
Tags:

img

Resumo

A estratégia de cruzamento da média móvel do RSI é uma estratégia que é usada principalmente para negociação de criptomoedas.

Estratégia lógica

A estratégia primeiro calcula o indicador RSI. O indicador RSI reflete a força do preço com base nos movimentos ascendentes e descendentes durante um determinado período de tempo.

Em seguida, a estratégia aplica uma média móvel ao indicador RSI. A média móvel pode filtrar flutuações aleatórias e determinar a direção da tendência.

Quando o RSI cruza acima de sua média móvel, é considerado um sinal de compra. Quando o RSI cruza abaixo de sua média móvel, é considerado um sinal de venda.

No código, o indicador RSI com período de duração é calculado primeiro. Em seguida, a média móvel de 10 períodos ma do RSI é calculada. Quando ma cruza acima de rsi, ele vai comprar. Quando ma cruza abaixo de rsi, ele vai vender.

Além disso, o código traça o gráfico de linhas para rsi e ma, bem como o gráfico de colunas para rsi-ma. As linhas divisórias para rsi=70 e rsi=30 também são traçadas. As setas de sinal correspondentes são marcadas no gráfico ao comprar ou vender.

Análise das vantagens

  • O RSI pode julgar condições de sobrecompra e sobrevenda. A média móvel pode filtrar flutuações aleatórias. A combinação dos dois pode identificar pontos de reversão da tendência.

  • O crossover da média móvel do RSI é uma ideia de estratégia de negociação relativamente madura que pode filtrar alguns sinais falsos.

  • O código da estratégia é simples e claro, fácil de entender.

  • Esta estratégia funciona bem para criptomoedas com tendências relativamente óbvias.

Análise de riscos

  • Os parâmetros incorretos do RSI e da média móvel de período podem gerar muitos sinais errados.

  • A utilização exclusiva de cruzamento de indicadores não pode evitar completamente a armadilha, sendo necessário combinar a análise de tendências.

  • Os custos de negociação podem ter algum impacto nos lucros.

  • A alta volatilidade do mercado de criptomoedas.

Para abordar os riscos, os parâmetros podem ser ajustados para otimizar os indicadores, os tamanhos das posições podem ser reduzidos, o stop loss pode ser definido e a análise de tendências pode ser usada para filtrar os sinais.

Orientações de otimização

  • Pesquise a combinação ideal de RSI e média móvel sob diferentes parâmetros de período.

  • Aumentar o tamanho da posição quando a tendência for forte e reduzir quando a tendência não for clara.

  • Configure stop loss dinâmico para seguir a tendência.

  • Explorar a combinação do RSI com outros indicadores para formar novos sinais comerciais.

  • Explorar modelos de aprendizagem de máquina baseados nesta estratégia para melhorar a taxa de vitória.

Resumo

A estratégia de cruzamento da média móvel do RSI combina as vantagens dos indicadores de tendência e filtragem, relativamente maduros e confiáveis. A lógica da estratégia é simples e clara, e a implementação do código também é bastante completa. No geral, é uma estratégia de negociação de criptomoedas bastante boa. Mas toda estratégia precisa de otimização. Requer testes e ajustes constantes, combinados com análise de tendências, a fim de alcançar um melhor desempenho da estratégia.


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

//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)

//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////

src = close, len = input(27, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma

plot(diff,style= plot.style_columns,transp=50,color = colorr)

plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)

buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)

//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
    if buySignal
        strategy.close("Short", qty_percent = 100, comment = "Close Short")
        strategy.entry("Long", strategy.long, qty=.1)

    if sellSignal
        strategy.close("Long", qty_percent = 100, comment = "Close Long")
        strategy.entry("Short", strategy.short, qty=.1)

////////////////////////////////////////////////////////////////////////////////













Mais.