
A estratégia gera um sinal de compra e venda quando o RSI supera o overbought e o MACD supera o overbought. A estratégia combina os benefícios de dois tipos diferentes de indicadores, considerando a tendência dos preços e combinando o overbought com o oversold, aumentando a eficácia da estratégia.
Esta estratégia utiliza principalmente a combinação de MACD e RSI para gerar sinais de negociação. Dentre eles, o MACD é usado para determinar a tendência e a dinâmica dos preços, e o RSI é usado para determinar a sobrevenda.
A estratégia primeiro calcula a linha média rápida e lenta do MACD e a linha de sinal. A linha rápida maior que a linha lenta gera um sinal de golden fork e a linha rápida menor que a linha lenta gera um sinal de dead fork. Isso indica que a tendência e a dinâmica dos preços estão mudando.
Ao mesmo tempo, a estratégia calcula o indicador RSI e define uma linha de sobrevenda e uma linha de sobrevenda. Quando o RSI está abaixo da linha de sobrevenda, é exagerado. Quando o RSI está acima da linha de sobrevenda, é exagerado.
No caso de um RSI superabando, a estratégia gera um sinal de compra quando o MACD é forçado e um sinal de venda quando o MACD é forçado. Ou seja, quando a tendência de preços se reverte, aproveite a sensibilidade do indicador MACD para capturar o ponto de inflexão. O papel do indicador RSI é evitar que uma transação errada ocorra sem um superabando.
Esta estratégia combina os benefícios dos dois indicadores MACD e RSI para aumentar a eficácia da estratégia.
Os indicadores MACD são sensíveis às mudanças de preços e os indicadores RSI consideram os casos de sobrecompra e sobrevenda.
A combinação dos dois indicadores pode filtrar alguns dos sinais de negociação ruidosos e reduzir as transações desnecessárias.
Os dois métodos podem ser verificados mutuamente: o valor médio da diferença de preço do MACD e o índice de variação do RSI.
O preço de reação do MACD muda rapidamente, o preço de reação do RSI é mais distante e o uso combinado é bom.
A estratégia também apresenta alguns riscos a serem observados:
Tanto o MACD quanto o RSI são suscetíveis a eventos inesperados, podendo gerar sinais errados. Os parâmetros podem ser ajustados de forma apropriada, filtrando os sinais.
As ações individuais podem não ser tão eficazes quanto os índices ou a combinação.
Os sinais necessitam de atender simultaneamente ao MACD Cross e ao RSI Overbought e OverSold, podendo perder parte da oportunidade. Pode-se reduzir adequadamente os requisitos de parâmetros do RSI.
A estratégia também pode ser melhorada nos seguintes aspectos:
Optimizar os parâmetros do MACD e do RSI para que sejam mais adequados às características de diferentes variedades.
Aumentar a estratégia de parada de perdas, em tempo hábil, quando as perdas atingem uma certa proporção.
Em combinação com outros indicadores, como o Brinband, KDJ, etc., estabelece condições de sinais de negociação mais rigorosas.
Execução de estratégias em dados de alta frequência, aproveitando as características rápidas e lentas do MACD para melhorar a eficácia das estratégias.
De acordo com os resultados da retrospectiva, ajuste a linha de sobrevenda do RSI para encontrar a melhor combinação de parâmetros.
A estratégia de cruzamento entre o MACD e o RSI, combinada com o acompanhamento de tendências e o julgamento de sobrevenda e sobrevenda, pode efetivamente obter pontos de inflexão de preços e aumentar o efeito da estratégia. No entanto, existe uma certa limitação, e ainda é necessário testar e otimizar continuamente de acordo com a situação do mercado para aproveitar o efeito 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)