Uma estratégia combinada de RSI com média móvel e MACD

Autora:ChaoZhang, Data: 2024-02-20 14:28:59
Tags:

img

Resumo

Esta estratégia identifica tendências de preços e toma decisões de compra baixa e venda alta combinando médias móveis, o indicador MACD e o indicador RSI. Gerar sinais de compra quando o curto período média móvel cruza acima do longo período média móvel e o preço de fechamento está acima da média móvel de 50 dias. Gerar sinais de venda quando o contrário acontece. Além disso, a estratégia usa o indicador RSI para evitar zonas de sobrecompra e sobrevenda, e o histograma MACD para determinar a tendência de médio a longo prazo.

Estratégia lógica

O núcleo desta estratégia baseia-se no sistema duplo de cruzamento da média móvel, que gera sinais de compra e venda quando um curto período EMA (3 dias) cruza um longo período EMA (30 dias).

Além disso, a estratégia incorpora uma linha média móvel de 50 dias para evitar negociações frequentes, usando-a como um filtro para sinais comerciais.

Além disso, o indicador RSI identifica cenários de sobrecompra (acima de 70) e sobrevenda (abaixo de 30).

Por fim, o histograma MACD é usado para determinar a tendência de médio a longo prazo do mercado. Com o histograma MACD > 0, o fundo é uma tendência de alta para que os sinais de compra sejam mais confiáveis. Quando o histograma MACD < 0, o fundo é uma tendência de queda para que os sinais de compra possam enfrentar correções em breve.

Vantagens

A maior vantagem desta estratégia é o uso combinado de múltiplos indicadores, o que torna cada decisão de negociação altamente confiável e confiável.

Outra vantagem é que combina a negociação de tendência e a negociação de reversão média. Seguir a tendência é fundamental para os traders de tendência, mas estratégias avançadas não serão rígidas sobre isso.

Riscos

Os principais riscos provêm de choques repentinos de preços devido a eventos noticiosos significativos, que podem penetrar pontos de stop loss e incorrer em grandes perdas.

Outro risco é o de ser interrompido durante retrações temporárias num mercado de alta de médio a longo prazo.

Melhorias

A estratégia pode ser otimizada nas seguintes dimensões:

  1. Optimização de parâmetros para encontrar as combinações ideais.

  2. Incorporar mais indicadores como Bollinger Bands e KDJ para enriquecer o modelo.

  3. Teste mecanismos de stop loss mais avançados como trailing stop loss e volatility stop loss.

  4. Otimizar partes da estratégia para se adaptarem a mais tipos de mercados.

Conclusão

Em conclusão, ao combinar médias móveis, RSI e MACD, esta estratégia consegue gerar sinais de alta qualidade e evitar limitações de indicadores individuais. Faz cada negociação com confiança, confirmando a tendência. Além disso, a estratégia equilibra a negociação de tendência e a negociação contrária, excelendo tanto na busca do impulso quanto na tomada de posições anticíclicas quando apropriado.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('sachin 3.30 ', overlay=true)

// Input parameters
length = input.int(14, title='RSI Length', minval=1)
overbought = input.int(70, title='RSI Overbought Level', minval=0, maxval=100)
oversold = input.int(30, title='RSI Oversold Level', minval=0, maxval=100)
ema3_length = input(3, title='EMA 3 Length')
ema30_length = input(30, title='EMA 30 Length')
ema50_length = input(50, title='EMA 50 Length')

// Calculate EMAs
ema3 = ta.ema(close, ema3_length)
ema30 = ta.ema(close, ema30_length)
ema50 = ta.ema(close, ema50_length)

// Calculate RSI
rsiValue = ta.rsi(close, length)

// Calculate MACD
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

var float buyPrice = na

// Buy condition: EMA 3 crosses above EMA 30 and price is above EMA 50
buyCondition = ta.crossover(ema3, ema30) and close > ema50
if (buyCondition)
    buyPrice := close
    strategy.entry('Buy', strategy.long)

// Exit long position when close is below EMA30 and below the low of the previous 3 candles after the buy entry
exitLongCondition = close < ema30 and close < ta.lowest(low, 3) and close < buyPrice
if (exitLongCondition)
    strategy.close('BuyExit')

// Sell condition: EMA 3 crosses below EMA 30 and price is below EMA 50
sellCondition = ta.crossunder(ema3, ema30) and close < ema50
if (sellCondition)
    strategy.entry('Sell', strategy.short)

// Exit short position when close is above EMA30 and above the high of the previous 3 candles after the sell entry
exitShortCondition = close > ema30 and close > ta.highest(high, 3)
if (exitShortCondition)
    strategy.close('SellExit')

// Plot EMAs on the chart
plot(ema3, color=color.new(color.blue, 0), title='EMA 3')
plot(ema30, color=color.new(color.red, 0), title='EMA 30')

// Change color of EMA 50 based on MACD histogram
ema50Color = hist > 0 ? color.new(color.blue, 0) : hist < 0 ? color.new(color.black, 0) : color.new(color.blue, 0)
plot(ema50, color=ema50Color, title='EMA 50 Colored')

// Change color of EMA 30 based on RSI trend
ema30Color = rsiValue > oversold ? color.new(color.green, 0) : rsiValue < overbought ? color.new(color.red, 0) : color.new(color.blue, 0)
plot(ema30, color=ema30Color, title='EMA 30 Colored')

// Highlight Buy and Sell signals on the chart
bgcolor(buyCondition ? color.new(color.green, 90) : na)
bgcolor(sellCondition ? color.new(color.red, 90) : na)

// Plotting Buy and Sell Signals on the Chart until strategy exit
barcolor(strategy.position_size > 0 and rsiValue > overbought ? color.new(color.yellow, 0) : strategy.position_size < 0 and rsiValue < oversold ? color.new(color.black, 0) : na)


Mais.