
A estratégia de negociação de quantificação de filtragem entre os intervalos de tendência dinâmica de nível superior é um sistema de rastreamento de tendências baseado em intervalos de flutuação dinâmica de preços, com o objetivo de identificar efetivamente as mudanças de tendência do mercado e gerar um sinal de negociação através da computação de intervalos de flutuação de preços de nível superior, construindo um mecanismo de filtragem de preços adaptável através do cálculo de intervalos de flutuação de preços de nível superior. A estratégia utiliza a média móvel do índice de períodos de tempo rápidos e lentos para calcular os intervalos de flutuação de preços e cria limites entre os intervalos de tendência por meio de um algoritmo de filtragem de intervalos de flutuação de nível superior.
O princípio central da estratégia é a construção de um filtro de tendência dinâmica através do cálculo de uma escala de flutuação de preços. Os passos para a implementação são os seguintes:
Cálculo de duplo escopoA estratégia usa dois períodos de tempo (rápido e lento) para calcular a amplitude de flutuação dos preços. Primeiro, calcula-se a variação absoluta dos preços, em seguida, é aplicada uma média móvel do índice (EMA) para suavizar o processamento e, finalmente, o tamanho da amplitude é ajustado por um multiplicador personalizado.
Aplicações de filtros de alcanceAprovado:apply_range_filterA função aplica o escopo de suavização calculado ao preço, garantindo que o novo preço de filtragem não se desvie muito do preço de filtragem anterior, reduzindo assim o falso sinal.
Identificação de tendênciasA estratégia segue o número de subidas e descidas contínuas de preços de filtros para quantificar a intensidade e a continuidade das tendências.
Construção de fronteiras intercalaresA estratégia calcula os limites superiores e inferiores de acordo com o preço de filtragem e a média de flutuação. Esses limites são ajustados de acordo com a dinâmica do comportamento histórico dos preços, formando um filtro de tendência.
Geração de sinaisQuando os preços de fechamento atravessam o filtro da faixa de tendência, geram sinais de compra e quando os preços de fechamento atravessam o filtro da faixa de tendência, geram sinais de venda. Esses sinais são usados diretamente para tomar decisões de entrada e saída para executar a estratégia de negociação.
A partir da implementação do código, a estratégia usa uma lógica condicional embutida em camadas para determinar o valor do filtro de alcance de tendência, o que permite que o filtro se adapte a diferentes condições de mercado, aumentando a confiabilidade do sinal. O filtro de alcance de tendência é essencialmente uma linha de suporte e resistência dinâmica auto-adaptável, capaz de ajustar automaticamente sua sensibilidade de acordo com a volatilidade do mercado.
Uma análise aprofundada da implementação do código da estratégia pode ser resumida com as seguintes vantagens significativas:
Forte adaptaçãoA estratégia é calculada através de dois quadros de tempo: o rápido e o lento, permitindo que o filtro se adapte automaticamente às mudanças de volatilidade em diferentes condições de mercado. Esta característica de auto-adaptação permite que a estratégia mantenha um desempenho relativamente estável em diferentes ambientes de mercado.
Capacidade de filtragem de ruídoA estratégia pode reduzir a influência do ruído do mercado sobre as decisões de negociação, reduzindo a frequência de falsos sinais, através de cálculos de escalonamento e mecanismos de filtragem de condições.
Quantificação da intensidade da tendênciaA estratégia fornece aos comerciantes um indicador quantitativo da força da tendência, ajudando a avaliar a confiabilidade da tendência atual, ao rastrear o número de vezes em que o preço do filtro subiu ou caiu em sequência.
Intuição visualA estratégia de marcar os sinais de compra e venda no gráfico e preencher as diferentes áreas de tendência com cores, aumentou significativamente a eficiência da identificação visual das oportunidades de negociação.
Ajustabilidade dos parâmetrosA estratégia fornece vários parâmetros de entrada ajustáveis (como ciclo rápido/lento, multiplicador de alcance, etc.) que permitem aos comerciantes otimizar o desempenho da estratégia para diferentes variedades de negociação e prazos de tempo.
Codificação estruturadaA estratégia utiliza um design modular para encapsular a lógica de computação central por meio de funções personalizadas, o que torna o código mais fácil de entender e manter, além de facilitar a extensão e otimização subsequentes.
Embora a estratégia tenha muitos benefícios, ela também apresenta alguns riscos e limitações:
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente da escolha dos parâmetros de entrada. Diferentes períodos de tempo e configurações de multiplicadores podem levar a resultados de negociação completamente diferentes.
Risco de atrasoComo a estratégia usa o EMA para suavizar o processamento, é inevitável que seja introduzido um certo atraso, especialmente quando o mercado está em forte flutuação ou reversa rápida, o que pode levar a um atraso no sinal de entrada ou saída.
Risco de Falso BreakoutEm mercados de correção de intervalos ou de baixa volatilidade, os preços podem atravessar frequentemente os filtros de tendência, gerando vários falsos sinais, resultando em negociações frequentes e aumentando os custos de negociação.
Falta de mecanismos de contençãoA implementação da estratégia atual não tem um mecanismo de stop loss definido, podendo haver grandes perdas em caso de uma reversão súbita da tendência. Recomenda-se que os comerciantes complementem as medidas de gestão de risco adequadas.
Fonte de sinal únicaA estratégia depende apenas do cruzamento do filtro de preço com a faixa de tendência para gerar sinais, e a falta de verificação auxiliar de outros indicadores de confirmação pode levar à falta de confiabilidade do sinal.
Para reduzir esses riscos, os comerciantes podem considerar a adição de condições de filtragem adicionais, como a confirmação de sinais em combinação com outros indicadores técnicos (como RSI, MACD, etc.), ao mesmo tempo em que implementam uma estratégia rigorosa de gestão de fundos e de parada de perdas.
Ao analisar a implementação do código em profundidade, podem ser sugeridas algumas potenciais direções de otimização:
Mecanismo de confirmação múltiplaIntrodução de indicadores ou condições técnicas adicionais como confirmação de sinal, por exemplo, em combinação com volume de negociação, indicadores de dinâmica ou análise de estrutura de mercado, para aumentar a confiabilidade do sinal. Isso reduz os falsos sinais e executa a negociação apenas quando várias condições são atendidas simultaneamente.
Ajuste de parâmetros dinâmicosImplementação de mecanismos de otimização automática dos parâmetros, permitindo que a estratégia ajuste automaticamente o ciclo rápido/lento e a multiplicação de valores de acordo com as mudanças nas condições do mercado. Por exemplo, pode-se basear-se em indicadores de volatilidade do mercado (como o ATR) para multiplicar a amplitude de ajuste dinâmico.
Melhorar a gestão de riscosA adição de mecanismos de stop loss e profit closure, como stop loss dinâmico baseado em configurações ATR, ou o uso de um reverso de cruzamento de filtros de alcance de tendência como um sinal de saída. Uma boa gestão de risco pode aumentar significativamente o risco-retorno da estratégia.
Filtro de tempoAumentar a filtragem das janelas de tempo de negociação, evitando períodos de alta volatilidade, como aberturas e fechamentos de mercados ou divulgação de dados econômicos importantes, reduzindo os falsos sinais causados por flutuações anormais.
Filtragem de intensidade de tendênciaUtilizando a contagem de tendências de alta/baixa já calculada, configure o limite mínimo de intensidade da tendência, gerando sinais de negociação somente quando a tendência é forte o suficiente, evitando o excesso de negociação em tendências fracas ou em mercados consolidados.
Otimização de aprendizagem de máquinaConsidere a introdução de algoritmos de aprendizagem de máquina para otimizar a seleção de parâmetros ou melhorar a precisão do reconhecimento de sinais por meio de modelos de treinamento de dados históricos. Por exemplo, pode-se usar florestas aleatórias ou suportar máquinas vetoriais para prever a confiabilidade do sinal.
A implementação dessas orientações de otimização pode aumentar significativamente a estabilidade e a lucratividade da estratégia, permitindo que ela mantenha um bom desempenho em diferentes cenários de mercado.
A estratégia de negociação de quantificação de filtragem de intervalos de tendências dinâmicas de nível superior é um sistema de acompanhamento de tendências baseado em intervalos dinâmicos de preços, que constrói um mecanismo de identificação de tendências flexível por meio do cálculo de intervalos de adaptação em quadros de tempo duplos. A vantagem central da estratégia reside na sua forte adaptabilidade e capacidade de filtragem de ruído, capaz de identificar efetivamente as mudanças de tendência e gerar sinais de negociação em diferentes condições de mercado.
A estratégia estabelece fronteiras entre os intervalos de tendência de forma dinâmica, através da computação de intervalos de tempo rápidos e lentos, em combinação com um algoritmo de filtragem de intervalos único. Quando os preços cruzam esses limites, o sistema gera automaticamente um sinal de compra ou venda, ajudando os comerciantes a capturar os pontos de mudança de tendência.
Apesar de ter muitos benefícios, a estratégia também enfrenta riscos, como sensibilidade de parâmetros, atraso e falsos avanços. A estabilidade e lucratividade da estratégia podem ser melhoradas com a introdução de medidas de otimização, como mecanismos de confirmação múltipla, ajuste de parâmetros dinâmicos e aumento da gestão de riscos.
Em geral, é uma estratégia de negociação quantitativa concebida de forma racional e bem implementada, adequada para os comerciantes experientes, aplicada às negociações reais após o suficiente retrocesso e otimização de parâmetros. É uma opção de estratégia a considerar para os comerciantes que buscam acompanhar tendências e se adaptar dinamicamente às mudanças no mercado.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("L3 Twin Range Filter Pro Strategy", overlay=true)
// 输入参数
price_source = input(defval=close, title='Price Source')
show_trade_signals = input(title='Show Buy/Sell Signals ?', defval=true)
fast_period = input.int(defval=9, minval=1, title='Fast period')
fast_range_multiplier = input.float(defval=1.6, minval=0.1, title='Fast range multiplier')
slow_period = input.int(defval=34, minval=1, title='Slow period')
slow_range_multiplier = input.float(defval=2, minval=0.1, title='Slow range multiplier')
// 自定义函数
calculate_smooth_range(price, period, multiplier) =>
window_period = period * 2 - 1
average_range = ta.ema(math.abs(price - price[1]), period)
smooth_range = ta.ema(average_range, window_period) * multiplier
smooth_range
apply_range_filter(price, range_value) =>
range_filtered_price = price
range_filtered_price := price > nz(range_filtered_price[1]) ? price - range_value < nz(range_filtered_price[1]) ? nz(range_filtered_price[1]) : price - range_value : price + range_value > nz(range_filtered_price[1]) ? nz(range_filtered_price[1]) : price + range_value
range_filtered_price
// 计算过程
fast_smooth_range = calculate_smooth_range(price_source, fast_period, fast_range_multiplier)
slow_smooth_range = calculate_smooth_range(price_source, slow_period, slow_range_multiplier)
average_smooth_range = (fast_smooth_range + slow_smooth_range) / 2
filtered_price = apply_range_filter(price_source, average_smooth_range)
upward_trend = 0.0
upward_trend := filtered_price > filtered_price[1] ? nz(upward_trend[1]) + 1 : filtered_price < filtered_price[1] ? 0 : nz(upward_trend[1])
downward_trend = 0.0
downward_trend := filtered_price < filtered_price[1] ? nz(downward_trend[1]) + 1 : filtered_price > filtered_price[1] ? 0 : nz(downward_trend[1])
upper_range_boundary = filtered_price + average_smooth_range
lower_range_boundary = filtered_price - average_smooth_range
upper_bound = 0.0
upper_bound := upper_range_boundary < nz(upper_bound[1]) or close[1] > nz(upper_bound[1]) ? upper_range_boundary : nz(upper_bound[1])
lower_bound = 0.0
lower_bound := lower_range_boundary > nz(lower_bound[1]) or close[1] < nz(lower_bound[1]) ? lower_range_boundary : nz(lower_bound[1])
trend_range_filter = 0.0
trend_range_filter := nz(trend_range_filter[1]) == upper_bound[1] and close <= upper_bound ? upper_bound : nz(trend_range_filter[1]) == upper_bound[1] and close >= upper_bound ? lower_bound : nz(trend_range_filter[1]) == lower_bound[1] and close >= lower_bound ? lower_bound : nz(trend_range_filter[1]) == lower_bound[1] and close <= lower_bound ? upper_bound : upper_bound
// 定义交易信号
buy_signal = ta.crossover(close, trend_range_filter)
sell_signal = ta.crossunder(close, trend_range_filter)
// 执行交易
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (sell_signal)
strategy.entry("Sell", strategy.short)
// 绘制标签
if (show_trade_signals and buy_signal)
label.new(bar_index, trend_range_filter, "BUY", color=color.new(color.green, 0), style=label.style_label_up)
if (show_trade_signals and sell_signal)
label.new(bar_index, trend_range_filter, "SELL", color=color.new(color.red, 0), style=label.style_label_down)
// 绘制图表元素
trend_range_filter_plot = plot(trend_range_filter, color=close > trend_range_filter ? color.new(color.lime, 10) : close < trend_range_filter ? color.new(color.red, 10) : na, title="Trend Range Filter")
price_plot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
up_trend_color = close > trend_range_filter ? color.new(color.lime, 80) : na
down_trend_color = close < trend_range_filter ? color.new(color.red, 80) : na
fill(price_plot, trend_range_filter_plot, title='UpTrend Highlighter', color=up_trend_color, transp=90)
fill(price_plot, trend_range_filter_plot, title='DownTrend Highlighter', color=down_trend_color, transp=90)