
A estratégia é um sistema de negociação de adaptação avançada que, por meio da tecnologia de identificação da estrutura do mercado, automaticamente alterna o modelo de negociação entre o mercado de turbulência e o mercado de tendência. A estratégia usa o indicador ADX para avaliar o estado do mercado, a estratégia de retorno do valor médio RSI em mercados de turbulência (ADX ≤ 25) e a estratégia de ruptura de preço em mercados de tendência (ADX > 25). O sistema verifica o filtro de tendência EMA de 200 ciclos antes da negociação para garantir a consistência com a direção da grande tendência, ao mesmo tempo em que usa o sistema de gerenciamento de risco baseado em ATR para definir a estratégia de parada de perda apropriada para negociações em diferentes ambientes de mercado.
O núcleo desta estratégia é o mecanismo de adaptação da estrutura do mercado, que funciona através dos seguintes passos-chave:
Identificação do estado do mercado: Use o ADX (Índice de Direção Média) para determinar se o mercado está em um estado de turbulência ou de tendência. ADX > 25 significa mercado de tendência, ADX ≤ 25 significa mercado de turbulência.
Filtragem de direção de tendênciaO preço acima do EMA é considerado um pessimista, e o preço abaixo do EMA é considerado um pessimista.
Estratégias de mercado de choque:
Estratégias de mercado de tendência:
Gestão de RiscosO capital de risco de cada transação é de 10% da participação da conta e tem uma estratégia de stop loss diferente de acordo com o tipo de transação.
A estratégia passa por um filtro de tempo para transações apenas após 1o de janeiro de 2020, para garantir o funcionamento do mercado de criptomoedas em um estágio mais maduro.
Adaptabilidade do mercadoA maior vantagem da estratégia reside na capacidade de alternar automaticamente o modelo de negociação de acordo com o estado do mercado, usando a regressão de média em mercados de turbulência e estratégias de ruptura em mercados de tendência, permitindo-lhe manter-se competitivo em vários ambientes de mercado.
Consistência de tendênciasO filtro de tendências 200 EMA garante que a direção da negociação esteja em consonância com as principais tendências, evitando o alto risco de negociação contracorrente.
Controle de risco personalizadoEstratégia: diferentes métodos de gerenciamento de risco para diferentes tipos de negociação, uso de stop loss de multiplicadores ATR fixos para negociações RSI, uso de stop loss de rastreamento para negociações de ruptura, otimização das características de risco/retorno de cada modelo de negociação.
Comentários em tempo realCom um painel de instrumentos integrado, os traders podem monitorar em tempo real o estado do mercado, a tendência e os sinais de negociação mais recentes, facilitando a tomada de decisões rápidas e o ajuste de estratégias.
Ajustabilidade dos parâmetrosA estratégia oferece vários parâmetros personalizáveis, incluindo os limites do RSI, o comprimento e o limiar do ADX, o período de retorno de ruptura, etc., permitindo que os comerciantes otimizem de acordo com suas próprias preferências de risco e visão de mercado.
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente dos parâmetros escolhidos, como os níveis de ADX e RSI. A escolha inadequada de parâmetros pode levar a frequentes trocas de padrões de mercado ou sinais de negociação errados, aumentando custos de negociação desnecessários e perdas potenciais. A solução é fazer um rigoroso retorno aos dados históricos e escolher parâmetros robustos que se adequam às condições atuais do mercado.
Risco de Falsa InvasãoEm um modelo de tendência, a estratégia é vulnerável a falsas rupturas, especialmente em mercados com alta volatilidade. Essas falsas sinais podem levar a que o stop loss seja acionado, reduzindo a capacidade de lucro geral. Recomenda-se o aumento de indicadores de confirmação adicionais ou a criação de condições de ruptura mais conservadoras para reduzir esse risco.
Risco de excesso de negociaçãoA solução é ajustar a depreciação do RSI ou adicionar filtros de negociação adicionais, reduzindo a frequência de negociação.
Percentagem fixa de riscoA estratégia usa um juro fixo de 10% como risco por transação, o que pode levar a um retorno maior da conta em caso de perdas contínuas. Recomenda-se a implementação de um mecanismo de ajuste de escala de posição dinâmico para ajustar a abertura de risco com base no desempenho de transações recentes ou na volatilidade do mercado.
Falso julgamento da situação do mercado:O indicador ADX pode não refletir com precisão o estado do mercado em certas condições de mercado, levando a estratégias para escolher o padrão de negociação errado. Recomenda-se a combinação de outros indicadores de estrutura de mercado para aumentar a precisão do julgamento de estado.
Integração de análise de multi-quadros temporaisA estratégia pode reforçar a decisão de negociação por meio da integração de análises de múltiplos períodos de tempo, como o uso da direção da tendência em períodos de tempo mais elevados para filtrar os sinais de negociação em períodos de tempo mais baixos, aumentando a taxa de sucesso geral. A implementação específica pode adicionar filtros de tendência, como H4 ou Sunline, para orientar as negociações em H1.
Optimização de parâmetros dinâmicosA estratégia atual usa parâmetros fixos, que podem ser melhorados para ajustar os parâmetros-chave automaticamente de acordo com a volatilidade do mercado ou o comportamento recente dos preços. Por exemplo, é possível ajustar os limites do RSI de acordo com a volatilidade do mercado, usando um alcance mais estreito do RSI em ambientes de baixa volatilidade e um alcance mais amplo em ambientes de alta volatilidade.
Confirmação de entrada de nível superiorAdição de indicadores técnicos adicionais como confirmação de transação, como análise de volume de transação, identificação de padrões de gráficos ou indicadores de sentimento de mercado. Isso pode reduzir os falsos sinais e melhorar a qualidade de entrada.
Gestão de riscos mais complexaImplementação de estratégias de gestão de posições dinâmicas e de stop loss adaptáveis, que ajustam o tamanho e os níveis de stop loss com base na volatilidade do mercado e na profundidade de recentes perdas ou retrações.
Otimização de aprendizagem de máquina: Usar algoritmos de aprendizado de máquina para prever dinamicamente os melhores limiares de mercado (como os pontos de troca ADX) ou identificar quais modelos de negociação podem funcionar melhor em determinadas condições de mercado, aumentando assim a adaptabilidade e o desempenho da estratégia.
O sistema de negociação de adaptação de dois modos cria um sistema de negociação abrangente que se adapta automaticamente a diferentes condições de mercado, combinando a regressão da média RSI com a estratégia de ruptura de preço. A singularidade da estratégia consiste em dividir o mercado em dois estados de turbulência e tendência usando o indicador ADX e aplicar o método de negociação mais adequado para cada estado.
/*backtest
start: 2024-05-14 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("Improved Hybrid: RSI + Breakout + Dashboard", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === INPUTS ===
stopMult = input.float(1.2, "Stop-Loss ATR Multiplier", minval=0.5, step=0.1)
rsiBuy = input.int(35, "RSI Buy Threshold")
rsiSell = input.int(70, "RSI Sell Threshold")
adxLen = input.int(14, "ADX Length")
adxSmooth = input.int(14, "ADX Smoothing")
adxThreshold = input.float(25, "ADX Threshold")
emaLen = input.int(200, "EMA Trend Filter")
rsiLen = input.int(14, "RSI Length")
exitRSI = input.int(50, "RSI Exit Threshold")
breakoutLen = input.int(20, "Breakout Lookback")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Trailing Multiplier")
// === TIME FILTER ===
startDate = timestamp(2020, 1, 1, 0, 0)
isLive = time >= startDate
// === ADX REGIME DETECTION ===
[plusDI, minusDI, adx] = ta.dmi(adxLen, adxSmooth)
isTrending = adx > adxThreshold
isRanging = not isTrending
regimeLabel = isTrending ? "TRENDING" : "RANGING"
// === EMA TREND FILTER ===
ema = ta.ema(close, emaLen)
bullish = close > ema
bearish = close < ema
biasLabel = bullish ? "Bullish" : "Bearish"
// === RSI MEAN REVERSION ===
rsi = ta.rsi(close, rsiLen)
rsiLong = isLive and isRanging and rsi < rsiBuy and bullish
rsiShort = isLive and isRanging and rsi > rsiSell and bearish
rsiLongExit = rsi > exitRSI
rsiShortExit = rsi < exitRSI
// === BREAKOUT ENTRIES ===
atr = ta.atr(atrLen)
highestBreak = ta.highest(close[1], breakoutLen)
lowestBreak = ta.lowest(close[1], breakoutLen)
longBreak = isLive and isTrending and bullish and close > highestBreak
shortBreak = isLive and isTrending and bearish and close < lowestBreak
// === ENTRIES ===
if rsiLong
strategy.entry("RSI Long", strategy.long)
if rsiShort
strategy.entry("RSI Short", strategy.short)
if longBreak
strategy.entry("Breakout Long", strategy.long)
if shortBreak
strategy.entry("Breakout Short", strategy.short)
// === EXITS ===
if rsiLongExit
strategy.close("RSI Long")
if rsiShortExit
strategy.close("RSI Short")
strategy.exit("RSI Long Exit", from_entry="RSI Long", stop=close - atr * stopMult)
strategy.exit("RSI Short Exit", from_entry="RSI Short", stop=close + atr * stopMult)
strategy.exit("BO Long Exit", from_entry="Breakout Long", trail_points=atr * atrMult, trail_offset=atr * atrMult)
strategy.exit("BO Short Exit", from_entry="Breakout Short", trail_points=atr * atrMult, trail_offset=atr * atrMult)
// === DEBUG PLOTS ===
plotshape(rsiLong, title="RSI Long", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(rsiShort, title="RSI Short", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(longBreak, title="Breakout Long", location=location.belowbar, color=color.blue, style=shape.triangleup, size=size.small)
plotshape(shortBreak, title="Breakout Short", location=location.abovebar, color=color.purple, style=shape.triangledown, size=size.small)
plot(rsi, "RSI", color=color.blue)
plot(ema, "200 EMA", color=color.orange)
// === DASHBOARD ===
var label dash = na
if bar_index % 5 == 0
label.delete(dash)
dash := label.new(bar_index, high,
"Regime: " + regimeLabel + " | Bias: " + biasLabel + " | Last: None",
xloc=xloc.bar_index, yloc=yloc.price,
style=label.style_label_left, size=size.small,
textcolor=color.white, color=color.black)