A estratégia de cruzamento da média móvel do RSI é uma estratégia que é usada principalmente para negociação de criptomoedas.
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.
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.
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.
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.
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) ////////////////////////////////////////////////////////////////////////////////