Crossover de média móvel dupla e sistema de filtragem de negociação composto RSI/ATR baseado em ajuste de volatilidade dinâmica

MA RSI ATR RR SL TP SMA
Data de criação: 2025-02-21 11:58:43 última modificação: 2025-02-21 11:58:43
cópia: 1 Cliques: 390
2
focar em
319
Seguidores

Crossover de média móvel dupla e sistema de filtragem de negociação composto RSI/ATR baseado em ajuste de volatilidade dinâmica Crossover de média móvel dupla e sistema de filtragem de negociação composto RSI/ATR baseado em ajuste de volatilidade dinâmica

Visão geral da estratégia

A estratégia é um sistema de negociação complexo que combina binário equilíbrio, RSI overbought e oversold e filtragem de taxa de flutuação ATR. O sistema utiliza médias móveis de curto e longo prazo para gerar sinais de negociação, filtrar o estado do mercado com o RSI, usar o ATR para julgar a volatilidade e gerenciar posições e controlar o risco com o percentual de stop loss e o risco de ganho. A estratégia tem uma forte adaptabilidade e pode ajustar os parâmetros de forma flexível de acordo com o ambiente de mercado.

Princípio da estratégia

A lógica central da estratégia baseia-se nos seguintes aspectos:

  1. Geração de sinais: utiliza o cruzamento das médias móveis simples dos dias 9 e 21 para capturar a mudança de tendência. Quando a média de curto prazo atravessa a média de longo prazo, um sinal de duplicado é gerado, e quando a média de curto prazo atravessa a média de longo prazo, um sinal de vazio é gerado.
  2. Filtragem condicional: O RSI filtra o overbought e o oversold, evitando a entrada em condições extremas de mercado. Ao mesmo tempo, o ATR garante que a volatilidade do mercado atenda às condições de negociação.
  3. Gerenciamento de risco: utiliza a percentagem de stop loss baseada no valor líquido da conta, determina a posição de parada através da definição da relação de risco-benefício e obtém um lucro razoável ao mesmo tempo em que realiza o risco de cobertura.

Vantagens estratégicas

  1. Adaptabilidade do sistema: a estratégia pode ser adaptada de forma flexível a diferentes condições de mercado, com filtros RSI e ATR ativados/desativados.
  2. Controle de risco perfeito: Percentagem de stop loss e gerenciamento de posições dinâmicas para controlar efetivamente a abertura de risco de cada transação.
  3. Alta confiabilidade do sinal: redução do impacto de sinais falsos através de múltiplos mecanismos de filtragem, aumentando a taxa de sucesso das transações.
  4. Parâmetros ajustáveis: Os parâmetros podem ser ajustados de acordo com as características específicas do mercado.

Risco estratégico

  1. Risco de mercado de choque: em mercados de choque horizontal, o cruzamento de equilíbrio pode produzir frequentes falsos sinais.
  2. Risco de atraso: A média móvel tem um certo atraso, podendo perder o melhor momento de entrada.
  3. Risco de otimização de parâmetros: O otimização excessiva de parâmetros pode levar a uma estratégia de sobreajuste, afetando o desempenho do disco.
  4. Dependência do cenário de mercado: a estratégia tem melhor desempenho em mercados com tendências evidentes, enquanto pode ser menos eficaz em outros cenários.

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

  1. Ajuste de parâmetros dinâmicos: pode-se ajustar automaticamente o período médio e o limiar do RSI de acordo com a volatilidade do mercado.
  2. Aumentar o filtro de intensidade da tendência: introduzir indicadores como DMI ou ADX para avaliar a intensidade da tendência.
  3. Optimizar o Stop Loss: Considere o uso de Stop Loss de rastreamento ou Stop Loss dinâmico baseado em ATR.
  4. Melhoria da gestão de posições: introdução de um sistema de gestão de posições dinâmico baseado na volatilidade.

Resumir

A estratégia, por meio da combinação de vários indicadores técnicos, constrói um sistema de negociação relativamente completo. A estratégia tem excelente desempenho em mercados de tendência e possui uma boa capacidade de controle de risco. A estratégia pode se adaptar a diferentes ambientes de mercado, configurando razoavelmente os parâmetros e adicionando as condições de filtragem necessárias.

Código-fonte da estratégia
/*backtest
start: 2025-01-21 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Simplified MA Crossover Strategy with Disable Options", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Inputs
shortLength = input.int(9, title="Short MA Length", minval=1)
longLength = input.int(21, title="Long MA Length", minval=1)

// RSI Filter
enableRSI = input.bool(true, title="Enable RSI Filter")
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)

// ATR Filter
enableATR = input.bool(true, title="Enable ATR Filter")
atrLength = input.int(14, title="ATR Length", minval=1)
minATR = input.float(0.005, title="Minimum ATR Threshold", minval=0)

// Risk Management
stopLossPerc = input.float(0.5, title="Stop Loss (%)", minval=0.1) / 100
riskRewardRatio = input.float(2, title="Risk-Reward Ratio", minval=1)
riskPercentage = input.float(2, title="Risk Percentage", minval=0.1) / 100

// Indicators
shortMA = ta.sma(close, shortLength)
longMA = ta.sma(close, longLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)

// Conditions
longCondition = ta.crossover(shortMA, longMA)
shortCondition = ta.crossunder(shortMA, longMA)

// Apply RSI Filter (if enabled)
if (enableRSI)
    longCondition := longCondition and rsi < rsiOverbought
    shortCondition := shortCondition and rsi > rsiOversold

// Apply ATR Filter (if enabled)
if (enableATR)
    longCondition := longCondition and atr > minATR
    shortCondition := shortCondition and atr > minATR

// Risk Management
positionSize = strategy.equity * riskPercentage / (stopLossPerc * close)
takeProfitLevel = strategy.position_avg_price * (1 + stopLossPerc * riskRewardRatio)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPerc)

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=takeProfitLevel, stop=stopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Short", limit=strategy.position_avg_price * (1 - stopLossPerc * riskRewardRatio), stop=strategy.position_avg_price * (1 + stopLossPerc))

// Plotting
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(atr, color=color.orange, title="ATR")
plotshape(series=longCondition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")