Esta estratégia gera sinais de negociação através do cálculo do cruzamento dos indicadores MACD e RSI. Produz sinais de compra e venda quando o RSI está sobrecomprado ou sobrevendido e ocorre cruzamento do MACD. A estratégia combina as vantagens de dois tipos diferentes de indicadores, considerando tanto a tendência dos preços quanto as situações de sobrecompra/supervenda, melhorando assim a eficácia da estratégia.
A estratégia usa principalmente a combinação de indicadores MACD e RSI para gerar sinais de negociação.
A estratégia primeiro calcula a linha rápida, linha lenta e linha de sinal do MACD. Quando a linha rápida é maior que a linha lenta, um sinal de cruz de ouro é gerado. Quando a linha rápida é menor que a linha lenta, um sinal de cruz de morte é gerado. Isso indica que a tendência e o impulso do preço estão mudando.
Ao mesmo tempo, a estratégia calcula o indicador RSI e define linhas de sobrecompra e sobrevenda. Quando o RSI é inferior à linha de sobrevenda, ele indica sobrevenda. Quando o RSI é superior à linha de sobrecompra, ele indica sobrecompra.
Quando ocorre uma sobrecompra/supervenda do RSI, a estratégia gera sinais de compra quando ocorre uma cruz de ouro do MACD e gera sinais de venda quando ocorre uma cruz de morte do MACD.
A estratégia combina as vantagens dos indicadores MACD e RSI para melhorar a sua eficácia:
O MACD pode capturar de forma sensível as alterações de preços, enquanto o RSI considera situações de sobrecompra/supervenda, complementando-se mutuamente.
A combinação dos dois indicadores pode filtrar alguns sinais de negociação ruidosos e reduzir as negociações desnecessárias.
O MACD mede a diferença entre as médias móveis, enquanto o RSI mede a proporção de mudanças de preço, os dois métodos podem se verificar.
O MACD reage rapidamente às alterações de preços, enquanto as divergências RSI sobrecomprado/supervendido são óbvias, bom efeito de combinação.
Esta estratégia apresenta também certos riscos:
Tanto o MACD quanto o RSI são vulneráveis a eventos repentinos, que podem gerar sinais errados.
O efeito sobre as acções individuais pode não ser ideal, podem ser considerados índices ou carteiras.
Satisfazer tanto o cruzamento do MACD quanto o RSI sobrecomprado/supervendido pode perder algumas oportunidades.
A estratégia pode também ser otimizada nos seguintes aspectos:
Otimizar os parâmetros MACD e RSI para se adequarem às diferentes variedades de negociação.
Adicionar estratégia de stop loss para parar a perda no tempo quando as perdas atingirem uma certa porcentagem.
Combinar com outros indicadores, como as bandas de Bollinger e o KDJ, para estabelecer condições de sinalização de negociação mais rigorosas.
Execute a estratégia em dados de alta frequência para utilizar as propriedades rápido / lento do MACD e melhorar o desempenho da estratégia.
De acordo com os resultados do backtest, ajustar as linhas de RSI sobrecompradas/supervendidas para encontrar as melhores combinações de parâmetros.
A estratégia de cruzamento do MACD e do RSI combina a tendência e o julgamento de sobrecompra/supervenda, o que pode efetivamente capturar pontos de reversão de preços e melhorar o desempenho da estratégia.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // © sabirt strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI') //MACD Settings fastMA = input.int(title='Fast moving average', defval=12, minval=1) slowMA = input.int(title='Slow moving average', defval=26, minval=1) signalLength = input.int(9, minval=1) //RSI settings RSIOverSold = input.int(35, minval=1) RSIOverBought = input.int(80, minval=1) src = close len = input.int(14, minval=1, title='Length') up = ta.rma(math.max(ta.change(src), 0), len) down = ta.rma(-math.min(ta.change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought [currMacd, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength) [prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength) signal = ta.ema(currMacd, signalLength) avg_1 = math.avg(currMacd, signal) crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na avg_2 = math.avg(currMacd, signal) crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold) strategy.close('buy', when=crossoverBear and wasOverbought)