Estratégia de negociação colaborativa com indicador Dual Momentum: sistema de rompimento de RSI e MACD

RSI MACD EMA TAKE PROFIT STOP LOSS
Data de criação: 2025-08-11 09:27:51 última modificação: 2025-08-11 09:27:51
cópia: 0 Cliques: 282
2
focar em
319
Seguidores

Estratégia de negociação colaborativa com indicador Dual Momentum: sistema de rompimento de RSI e MACD Estratégia de negociação colaborativa com indicador Dual Momentum: sistema de rompimento de RSI e MACD

Visão geral

A estratégia de negociação sincronizada de dois indicadores dinâmicos é um sistema de negociação quantitativa baseado em análise técnica, que combina habilmente as vantagens de indicadores relativamente fracos (RSI) e indicadores de dispersação de conclusão de média móvel (MACD), com foco na captura de fortes tendências ascendentes no mercado. A estratégia executa apenas negociações em múltiplos eixos, identificando sinais de ruptura dinâmica e combinando mecanismos de gerenciamento de risco, permitindo um processo de decisão de negociação sistematizado.

Princípio da estratégia

O funcionamento da estratégia baseia-se na sinergia de dois indicadores técnicos-chave. Primeiro, a estratégia usa o indicador RSI para medir a velocidade e a amplitude da mudança de preços, para determinar se o mercado está em um estado de sobrecompra ou sobrevenda; segundo, usa o indicador MACD para identificar as mudanças e a intensidade da dinâmica da tendência do mercado.

Condições de entrada:

  1. O RSI tem uma ruptura abaixo da linha média (default 50), enquanto o MACD está em baixa (a linha MACD está acima da linha de sinal, com opção de exigir que o MACD seja maior que 0); ou
  2. A linha MACD quebra a linha de sinal de baixo, enquanto o RSI está na posição da linha média ou acima.

Condições adicionais de filtragem:

  1. Filtragem de tendências da EMA: o preço deve estar acima da média da EMA do período especificado;
  2. Filtragem de contexto sobre o oversold: apenas entrada dentro de N linhas K após o RSI cair acima do limiar de oversold.

Condições de partida:

  1. O RSI se move para baixo da linha média; ou
  2. A linha MACD quebra a linha de sinal de cima, e o MACD é menor que 0; ou
  3. Alcançar a meta de stop loss (default 3.0%) ou stop loss (default 1.5%)

A estratégia projetou um mecanismo de rastreamento de status para garantir que você possa entrar quando estiver em posição livre e sair quando estiver em posição, evitando o problema da repetição de sinais. Esse design faz com que cada entrada tenha apenas uma saída, mantendo a clareza e a consistência da lógica de negociação.

Vantagens estratégicas

  1. Efeito de sinergia dos indicadoresA combinação dos dois indicadores, RSI e MACD, permite ao RSI reagir rapidamente às mudanças de preços, enquanto o MACD permite a confirmação de tendências de médio e longo prazo, o que aumenta a confiabilidade do sinal.

  2. Mecanismo de filtragem flexívelA estratégia oferece dois mecanismos opcionais de filtragem de tendências EMA e filtragem de contextualização de sobrevenda, permitindo que os comerciantes ajustem a adaptabilidade da estratégia de acordo com as diferentes condições de mercado.

  3. Uma boa gestão de riscosO mecanismo de parada de parada de perda incorporado permite que o comerciante configure os parâmetros percentuais de acordo com suas preferências de risco, controlando efetivamente a barreira de risco de uma única transação.

  4. Gestão de estado clara: Monitorar o posicionamento através de variáveis de estado, para garantir a consistência e a lógica dos sinais de negociação, evitando o problema de entrada ou saída repetida.

  5. Alta personalizaçãoA estratégia oferece vários parâmetros ajustáveis, incluindo a duração do RSI, os parâmetros MACD, as condições de filtragem e os parâmetros de gerenciamento de risco, permitindo que os comerciantes otimizem de acordo com diferentes condições de mercado e variedades de negociação.

  6. Ajuda visualA estratégia oferece funcionalidades visuais, como marcadores de entrada/saída, coloração de linha K e visualização de fundo de acionamento, para facilitar a compreensão e o ajuste da estratégia do comerciante.

Risco estratégico

  1. Risco de Falso Breakout: Em mercados de turbulência, o RSI e o MACD podem produzir frequentes falsos sinais de ruptura, resultando em negociações perdedoras consecutivas. Para mitigar esse risco, filtros de ambiente de mercado adicionais podem ser adicionados, como indicadores de volatilidade ou de intensidade de tendência.

  2. Limitação de transações unidirecionaisA estratégia executa apenas operações em vários níveis, perdendo uma oportunidade potencial de shorting em uma tendência descendente. Em um sistema de negociação abrangente, pode-se considerar adicionar uma estratégia de shorting correspondente ou suspender a negociação em uma tendência descendente clara.

  3. Sensibilidade do parâmetro: A performance da estratégia é sensível à configuração de parâmetros, e diferentes mercados e prazos de tempo podem exigir diferentes combinações de parâmetros. Recomenda-se a otimização de parâmetros por retrospecção em várias condições de mercado e considerar o uso de métodos de parâmetros adaptativos.

  4. Configuração de risco de stop lossO excesso de perda pode levar a um atraso frequente, enquanto o excesso de perda pode levar a uma perda excessiva. O percentual de perda deve ser ajustado de acordo com as características flutuantes do mercado alvo, ou considerar o uso de métodos de perda dinâmica, como o ATR.

  5. Atraso de sinalComo indicadores de atraso, os sinais do RSI e do MACD podem surgir depois que o preço já mudou significativamente, afetando o preço de entrada e a taxa de retorno. Pode-se considerar a combinação de indicadores de antecedência mais sensíveis para otimizar o tempo de entrada.

Direção de otimização da estratégia

  1. Sistema de parâmetros adaptativosDesenvolver mecanismos de ajuste de parâmetros de adaptação baseados na volatilidade do mercado ou na força da tendência, permitindo que os parâmetros do RSI e do MACD sejam automaticamente otimizados de acordo com as condições atuais do mercado, aumentando a adaptabilidade da estratégia em diferentes ambientes de mercado.

  2. Análise de Multi-Framas de TempoIntrodução de mecanismos de confirmação em vários períodos de tempo, como a confirmação da direção da tendência em períodos de tempo maiores, e depois a execução de transações específicas em períodos de tempo menores, para reduzir os falsos sinais e aumentar a taxa de vitória.

  3. Mecanismo de parada dinâmicaA mudança do stop-loss por percentual fixo para o stop-loss dinâmico baseado no ATR (Average True Range), para melhor se adaptar às mudanças na volatilidade do mercado, dando ao preço espaço de respiração suficiente enquanto protege o capital.

  4. Otimização da gestão de fundosIntrodução de algoritmos de gerenciamento de posições baseados no valor líquido, volatilidade e taxa de ganho da conta, como a fórmula de Kelly ou o modelo de risco de proporção fixa, para que a abertura de risco de cada transação coincida com o estado atual da conta e as condições de mercado.

  5. Filtro de ambiente de mercado integradoAdicionar filtros capazes de identificar o ambiente do mercado (trend, oscilação ou reversão), como o ADX (índice de direção média), indicadores de volatilidade ou ferramentas de análise periódica, para executar negociações em condições de mercado adequadas à estratégia.

  6. Aumentar a lógica de negociação em branco: Estratégia de expansão para incluir regras de negociação aéreas, para que elas sejam igualmente eficazes em tendências de baixa, construindo assim um sistema de negociação abrangente.

Resumir

A estratégia de negociação sincronizada de dois indicadores dinâmicos combina os benefícios de dois indicadores técnicos clássicos, o RSI e o MACD, para criar um sistema de negociação quantitativa com clareza lógica e controle de risco. A estratégia se concentra em capturar oportunidades de volume em tendências ascendentes, aumentando a qualidade de negociação por meio de múltiplos mecanismos de filtragem e ferramentas de gerenciamento de risco.

Código-fonte da estratégia
/*backtest
start: 2025-02-28 00:00:00
end: 2025-08-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
// Vibe coded by Andrew Grothe 2025-08-08. Adjust the TP/SL on lines 28 & 29 to fine tune the strategy
strategy("RSI + MACD Long-Only Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.0)

// Inputs — RSI
rsiLen  = input.int(14, "RSI Length", minval=1, group="RSI")
rsiOB   = input.int(70, "RSI Overbought", minval=50, maxval=100, group="RSI")
rsiOS   = input.int(30, "RSI Oversold", minval=0,  maxval=50, group="RSI")
rsiMid  = input.int(50, "RSI Midline", minval=0,   maxval=100, group="RSI")

// Inputs — MACD
fastLen = input.int(12, "MACD Fast Length",   minval=1, group="MACD")
slowLen = input.int(26, "MACD Slow Length",   minval=1, group="MACD")
sigLen  = input.int(9,  "MACD Signal Length", minval=1, group="MACD")
requireAboveZero = input.bool(false, "Require MACD > 0 (trend filter)", group="MACD")

// Inputs — Filters & Visuals
useOversoldContext  = input.bool(false, "Entry must be within N bars after RSI < Oversold", group="Signals")
oversoldWindowBars  = input.int(10, "N bars after oversold", minval=1, group="Signals")
useEMATrend         = input.bool(false, "Only Long if price > EMA", group="Signals")
emaLen              = input.int(200, "EMA Length", minval=1, group="Signals")
showMarkers         = input.bool(true, "Plot Entry/Exit Markers", group="Visuals")
colorBars           = input.bool(false, "Color Bars on Signals", group="Visuals")

// Inputs — Risk
// 1 hour = 2.0/1.0, 2 hour = 10.5/2.5
useTPSL             = input.bool(true,  "Use Take Profit / Stop Loss", group="Risk")
tpPerc              = input.float(11.5,  "Take Profit %", minval=0.0, step=0.1, group="Risk")
slPerc              = input.float(2.5,  "Stop Loss %",  minval=0.0, step=0.1, group="Risk")

// Core calculations
rsi = ta.rsi(close, rsiLen)
[macd, macdSignal, macdHist] = ta.macd(close, fastLen, slowLen, sigLen)
emaTrend = ta.ema(close, emaLen)

// Conditions
macdBull = macd > macdSignal and (not requireAboveZero or macd > 0)
rsiBull  = rsi > rsiMid
recentlyOversold = ta.barssince(rsi < rsiOS) <= oversoldWindowBars
trendOk = not useEMATrend or close > emaTrend

// Precompute cross events to avoid conditional execution warnings
rsiCrossUpMid     = ta.crossover(rsi, rsiMid)
macdCrossUp       = ta.crossover(macd, macdSignal)
rsiCrossDownMid   = ta.crossunder(rsi, rsiMid)
macdCrossDown     = ta.crossunder(macd, macdSignal)

// Signals (long-only)
longTrigger = (rsiCrossUpMid and macdBull) or (macdCrossUp and rsi >= rsiMid)
longEntry   = longTrigger and (not useOversoldContext or recentlyOversold) and trendOk
exitSignal  = rsiCrossDownMid or (macdCrossDown and macdHist <= 0)

// Stateful gating so we only get one exit per entry
var bool inLong = false
inLongPrev = barstate.isfirst ? false : inLong[1]
finalLongEntry = longEntry and not inLongPrev
finalExit      = exitSignal and inLongPrev
inLong := (inLongPrev or finalLongEntry) and not finalExit

// Plots
plot(useEMATrend ? emaTrend : na, title="EMA", color=color.orange, linewidth=2)
plotshape(showMarkers and finalLongEntry,  title="Long Entry", style=shape.triangleup,   location=location.belowbar, color=color.lime, size=size.tiny, text="Long")
plotshape(showMarkers and finalExit,       title="Exit",       style=shape.triangledown, location=location.abovebar, color=color.red,  size=size.tiny, text="Exit")
barcolor(colorBars ? (finalLongEntry ? color.lime : finalExit ? color.red : na) : na)

// Debug background to visualize when raw long trigger occurs
bgcolor(longTrigger ? color.new(color.lime, 90) : na)

// Alerts
//alertcondition(finalLongEntry,  title="RSI+MACD Long Entry", message="RSI+MACD Long Entry on {{ticker}} {{interval}} at {{close}}")
//alertcondition(finalExit,       title="RSI+MACD Exit",       message="RSI+MACD Exit on {{ticker}} {{interval}} at {{close}}")

// Strategy Orders — Long only
if finalLongEntry
    strategy.entry("Long", strategy.long)

// Protective exits (TP/SL) while in position
if useTPSL and strategy.position_size > 0
    longSL = strategy.position_avg_price * (1 - slPerc / 100.0)
    longTP = strategy.position_avg_price * (1 + tpPerc / 100.0)
    strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP)

// Signal-based exit
if finalExit and strategy.position_size > 0
    strategy.close("Long", comment="Signal Exit")