
Visão geral
Esta estratégia é um sistema de negociação de baixa retração quantitativa que combina um filtro de alcance (Range Filter) e um amplitude de onda real média (ATR). Identifica a direção da tendência através do filtro de alcance, enquanto usa o ATR para ajustar dinamicamente o tamanho da posição e definir o stop loss para controlar o risco. A estratégia requer que o preço atravesse dois períodos consecutivos de um filtro de alcance para confirmar a tendência. Este mecanismo de dupla confirmação reduz efetivamente a falsa ruptura.
Princípio da estratégia
O princípio central da estratégia é a combinação da identificação de tendências do filtro de alcance com o sistema de gerenciamento de risco ATR:
Cálculo do filtro de alcance:
- Primeiro, calcule a média móvel simples (SMA) do preço como linha central.
- Em seguida, calcula-se a média móvel do valor absoluto do preço em relação a esse desvio da linha central, como uma faixa de flutuação
- Trajectória superior = linha central + amplitude de oscilação
- Baixa rotação = linha central - amplitude de flutuação
Condições de confirmação de tendência:
- Tendência ascendente: preços terminaram acima dos trilhos em dois ciclos consecutivos
- Tendência de queda: preços fecharam abaixo do limite em dois ciclos consecutivos
- Este mecanismo de dupla confirmação reduz os sinais falsos.
ATR posições dinâmicas:
- ATR para medir a volatilidade do mercado atual
- Fórmula de cálculo da posição: (capital da conta * percentual de risco) / (ATR * valor do ponto)
- Quanto maior a volatilidade do mercado, menor a posição; quanto menor a volatilidade, maior a posição
Cessação da tração ATR:
- O Stop Loss Multihead é definido como: Preço atual - (ATR * múltiplo)
- O Stop Loss em um balão é definido como: preço atual + (ATR * multiplicado por)
- Quando o preço se move na direção de um ganho, a linha de parada também se move, bloqueando o lucro.
Vantagens estratégicas
Forte adaptação:
- O filtro de alcance adapta-se automaticamente às características de flutuação de diferentes ciclos de mercado
- O mecanismo de ajuste de posição do ATR permite que a estratégia se adapte automaticamente a diferentes ambientes de flutuação
Excelente controlo de riscos:
- Percentagem de risco fixo por transação (default 1%)
- Dimensão da posição de acordo com a dinâmica de flutuação do mercado
- O mecanismo de parada de seguimento bloqueia os lucros e limita os prejuízos
Qualidade de sinal:
- Mecanismo de dupla confirmação ((dois ciclos consecutivos de ruptura) reduz o sinal falso
- Os filtros de alcance são eficazes para filtrar o ruído do mercado e identificar as verdadeiras tendências
Propriedades de baixa retração:
- O trailing stop limitou a perda máxima de uma única transação
- A configuração de parâmetros de risco conservadora (risco de 1%) reduziu a retirada geral
- Posições dinâmicas diminuem automaticamente durante a alta volatilidade, reduzindo o risco
Transparente e personalizável:
- Parâmetros de estratégia claros e lógica clara
- Parâmetros ajustáveis a diferentes mercados e preferências de risco individuais
Risco estratégico
Mercado horizontal não está indo bem:
- Em mercados de liquidação sem tendência, pode haver frequentes falsos sinais de ruptura
- Solução: adicionar filtros de tendência adicionais ou aumentar o número de confirmações
Risco de uma rápida reversão:
- A paralisação de cola pode não ser executada em tempo hábil quando a tendência de força se reverte de repente.
- Solução: pode ser combinado com o aumento da taxa de flutuação do indicador ou reduzir a distância de parada de cauda
Sensibilidade do parâmetro:
- O ciclo do filtro de alcance e a escolha do múltiplo ATR têm maior impacto na performance da estratégia
- Solução: Fazer um histórico completo para encontrar uma combinação robusta de parâmetros
Risco de perdas contínuas:
- Mesmo com o risco de cada transação bem controlado, uma sequência de transações perdedoras pode levar a um retorno maior
- Solução: definir um limite de perda máxima contínua ou adicionar um filtro de mercado
Ponto de deslizamento e efeitos da taxa:
- Nas negociações em disco, os pontos de deslizamento e as comissões podem afetar significativamente o desempenho da estratégia
- Solução: Incluir taxas razoáveis e estimativas de deslizamento no feedback, mantendo espaço para lucro
Direção de otimização da estratégia
Adição de filtros de mercado:
- Pode-se introduzir indicadores de volatilidade (como a banda de Bollinger) para identificar o estado do mercado
- Suspensão de negociação ou ajuste de parâmetros em mercados de baixa volatilidade ou de liquidação
- Isso pode reduzir os sinais falsos nos mercados horizontais e aumentar a taxa de vitória geral.
Ciclo de filtro de alcance otimizado:
- Considere usar um ciclo adaptativo em vez de um ciclo fixo
- Ciclo de filtro de alcance que pode ser ajustado automaticamente com base na volatilidade do mercado
- Isso permitirá que a estratégia se adapte melhor às diferentes fases do mercado.
Introdução de confirmação de múltiplos quadros temporais:
- Aumento da condição de confirmação de tendência em um período de tempo mais longo
- Negociar apenas na direção da tendência principal, evitando negociação contracorrente
- Isso aumentará significativamente a qualidade do sinal e a taxa de vitórias.
Ajuste dinâmico do múltiplo ATR:
- ATR multiplicado por um stop loss ajustado de forma dinâmica com base na volatilidade do mercado
- Usar múltiplos menores em mercados de baixa volatilidade e maiores em mercados de alta volatilidade
- Isso aumentará a eficácia e a flexibilidade da parada de danos.
Adição de um mecanismo de saída baseado em tempo:
- Configurar um limite máximo de tempo de posse
- Se o preço não se desenvolve na direção esperada durante um período de tempo, forçar uma posição de liquidação
- Isso evita que o dinheiro fique preso em transações inválidas por muito tempo.
Resumir
A estratégia de filtro de dupla confirmação de escopo combinada com o sistema de posições ATR dinâmicas e trailing stop é uma estratégia de negociação quantitativa com foco no controle de risco. Identifica a direção da tendência através do filtro de escopo, requer dois ciclos consecutivos de ruptura para confirmar o sinal, usa o ATR para ajustar dinamicamente o tamanho da posição e definir o trailing stop, controlando efetivamente o risco de cada transação dentro de uma porcentagem predefinida. A principal vantagem da estratégia reside na forte adaptabilidade e na excelente capacidade de controle de risco, especialmente adequada para mercados com grande volatilidade, mas com tendências evidentes.
Código-fonte da estratégia
/*backtest
start: 2025-02-01 00:00:00
end: 2025-05-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Range Filter + ATR Strategy (Low Drawdown)", overlay=true,
pyramiding=0, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, commission_type=strategy.commission.percent,
commission_value=0.1, initial_capital=10000)
// Input parameters
rangePeriod = input.int(14, title="Range Filter Period")
atrPeriod = input.int(14, title="ATR Period")
riskPercent = input.float(1.0, title="Risk % per Trade", minval=0.1, maxval=5)
useATRSizing = input(true, title="Use ATR Position Sizing")
trailATR = input(1.5, title="Trailing Stop ATR Multiple")
// Calculate Range Filter
src = close
smooth = ta.sma(src, rangePeriod)
filter = ta.sma(math.abs(src - smooth), rangePeriod)
upper = smooth + filter
lower = smooth - filter
// Calculate ATR
atr = ta.atr(atrPeriod)
// Trend direction
upTrend = src > upper and src[1] > upper[1]
downTrend = src < lower and src[1] < lower[1]
// Position sizing based on ATR
atrPositionSize = (strategy.equity * riskPercent/100) / (atr * syminfo.pointvalue)
// Strategy logic
if (upTrend)
strategy.entry("Long", strategy.long, qty=useATRSizing ? atrPositionSize : na)
if (downTrend)
strategy.entry("Short", strategy.short, qty=useATRSizing ? atrPositionSize : na)
// Corrected trailing stop using trail_offset instead of trail_points
if (strategy.position_size > 0)
strategy.exit("Long Exit", "Long", trail_price=na, trail_offset=trailATR * atr)
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", trail_price=na, trail_offset=trailATR * atr)
// Plotting
plot(upper, color=color.green, title="Upper Range")
plot(lower, color=color.red, title="Lower Range")
plot(smooth, color=color.blue, title="Smooth Line")