
Esta estratégia é um sistema de negociação bidirecional que combina um índice relativamente fraco (RSI) e um índice direcional médio (ADX). A estratégia identifica sinais de sobrevenda e sobrevenda através do RSI de 8 períodos, combina a intensidade da tendência de filtragem ADX de 20 períodos, e captura oportunidades de reversão em uma tendência forte. A estratégia usa a maneira manual de calcular o ADX, mede com precisão a intensidade da tendência através do processamento suave do movimento direcional (DM) e da amplitude real (TR).
A lógica central da estratégia baseia-se na sinergia de dois indicadores técnicos. Primeiro, o uso do RSI de 8 ciclos como o principal gerador de sinais de negociação, gerando um sinal de cotação quando o RSI sobe 70 e um sinal de cotação quando desce 30. Esta lógica de operação inversa baseia-se nas características do mercado de regressão de valores extremos.
Em segundo lugar, a estratégia introduziu o ADX como um filtro de intensidade de tendência. O processo de cálculo do ADX inclui: calcular o movimento ascendente ((upMove) e o movimento descendente ((downMove), determinar o movimento direcional positivo ((+DM) e o movimento direcional negativo ((-DM), calcular o indicador direcional positivo ((+DI) e o indicador direcional negativo ((-DI) através do processamento de suavização RMA e, finalmente, calcular o valor do ADX através da padronização do diferencial do DI.
O mecanismo de saída usa o valor máximo inverso do RSI como sinal de breakout: o multihead mantém breakout quando o RSI cai abaixo de 30, e o headless mantém breakout quando o RSI ultrapassa 70. Este design garante a saída em tempo hábil quando a tendência pode ser revertida.
Mecanismo de filtragem duplaO RSI fornece um tempo de entrada preciso, enquanto o ADX garante que as transações sejam feitas apenas quando a tendência é clara, reduzindo efetivamente os falsos sinais em mercados de turbulência.
Transações bidirecionais flexíveisA estratégia permite capturar tendências de alta e baixa ao mesmo tempo, aumentando a eficiência do uso de fundos e oferecendo oportunidades de lucro em diferentes cenários de mercado.
Optimização de parâmetros razoávelO RSI de 8 ciclos é mais sensível e capaz de capturar mudanças no mercado mais rapidamente do que o tradicional de 14 ciclos; o ADX de 20 ciclos fornece um julgamento de tendência estável; o ADX de 14 ciclos é um nível eficaz comprovado pelo mercado.
Controle de risco rigorosoA definição de posições de 10% e uma regra de saída de stop loss clara controlam o risco de uma única transação.
Computação precisa e confiávelImplementar manualmente o cálculo do ADX, evitando as possíveis diferenças de versão das funções embutidas e garantindo a consistência das políticas em diferentes plataformas.
Risco de negociação inversaEm uma tendência muito forte, o RSI pode estar sobrecomprado ou sobrevendido por um longo período, causando uma entrada prematura com grandes flutuações. Recomenda-se uma segunda confirmação da força da tendência, como a quebra do preço da resistência de suporte crítico.
Problemas de atrasoO ADX, como um indicador de acompanhamento de tendências, tem um atraso inerente e pode ser confirmado apenas no final da tendência. Pode ser considerado em combinação com o comportamento do preço ou o indicador de volume de transação para julgamento auxiliar.
Performance do mercado em turbulência: Embora o ADX filtre algumas oscilações, pode haver sinais de entrada e saída frequentes quando o ADX está perto do limiar. É recomendável definir um intervalo de amortecimento do ADX, como quando a entrada exige ADX> 15 e quando a posse permite ADX> 13.
Risco de mercado extremoEm um cenário rápido e unilateral, a reversão pode ter grandes perdas. Recomenda-se aumentar o limite máximo de perda ou o mecanismo de parada de tempo.
Ajuste de parâmetros dinâmicos: Ajustar os ciclos RSI e os limites do ADX de acordo com a dinâmica da taxa de flutuação do mercado. Usar ciclos mais longos em períodos de alta flutuação reduz o ruído, e usar ciclos mais curtos em períodos de baixa flutuação aumenta a sensibilidade.
Confirmação do Multi-TemposA partir do sinal do quadro temporal atual, adicione a confirmação de tendências em quadros temporais mais elevados para garantir que a direção da negociação esteja de acordo com a tendência principal.
Otimização da gestão de posiçõesA tendência é mais forte quanto maior a posição. Além disso, pode-se considerar uma estratégia de aumento de posição em pirâmide, aumentando gradualmente a posição após a confirmação da tendência.
Optimização de Stop LossAumento do tracking stop baseado no ATR, além do stop de sinal de reversão do RSI, para dar ao posicionador espaço suficiente para flutuação enquanto protege os lucros.
Filtragem de sinais reforçadaAumento de condições auxiliares, como confirmação de volume de transação, identificação de configuração de preço e melhoria da qualidade do sinal. Por exemplo, solicite amplificação acompanhada de uma brecha ou execute uma transação perto de pontos de resistência de suporte crítico.
A estratégia de negociação de filtragem de momentum bidirecional do RSI-ADX é um sistema de negociação quantitativa cuidadosamente projetado para capturar oportunidades de mercado, assumindo que o risco é controlado, através da combinação de indicadores de momentum e indicadores de tendência. A inovação central da estratégia é o uso de sinais de momentum de intensidade de tendência, evitando as limitações de um único indicador.
/*backtest
start: 2024-08-13 00:00:00
end: 2025-08-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":5000000}]
*/
//@version=6
strategy("RSI & ADX Long/Short Strategy v6 (Manual ADX)", overlay=true,
margin_long=100, margin_short=100,
default_qty_type=strategy.percent_of_equity, default_qty_value=10)
//--------------------
// Parameters
//--------------------
rsiLength = 8
adxLength = 20
adxThreshold = 14.0
//--------------------
// RSI
//--------------------
rsiVal = ta.rsi(close, rsiLength)
//--------------------
// Manual ADX Calculation
//--------------------
upMove = high - high[1]
downMove = low[1] - low
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0
tr = ta.rma(ta.tr(true), adxLength)
plusDI = 100 * ta.rma(plusDM, adxLength) / tr
minusDI = 100 * ta.rma(minusDM, adxLength) / tr
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adxVal = ta.rma(dx, adxLength) // <-- Final ADX value
//--------------------
// Entry/Exit Conditions
//--------------------
longEntry = ta.crossover(rsiVal, 70) and adxVal > adxThreshold
shortEntry = ta.crossunder(rsiVal, 30) and adxVal > adxThreshold
longExit = ta.crossunder(rsiVal, 30)
shortExit = ta.crossover(rsiVal, 70)
//--------------------
// Orders
//--------------------
if longEntry
strategy.entry("Long", strategy.long)
if longExit
strategy.close("Long")
if shortEntry
strategy.entry("Short", strategy.short)
if shortExit
strategy.close("Short")
//--------------------
// Plots
//--------------------
plot(rsiVal, title="RSI(8)", color=color.new(color.blue, 0))
hline(70, 'RSI Overbought', color=color.red)
hline(30, 'RSI Oversold', color=color.green)
plot(adxVal, title="ADX(20)", color=color.new(color.orange, 0))
hline(adxThreshold, 'ADX Threshold', color=color.gray, linestyle=hline.style_dotted)