
A estratégia de acompanhamento de tendências do índice de volatilidade e volume de transação é um sistema de negociação quantitativa baseado na relação entre volume de transação e oscilação de preços. A estratégia capta as mudanças na dinâmica do mercado através do cálculo da interrelação entre volume de transação e oscilação de preços, criando índices complexos e combinando a direção da tendência com a confirmação de linhas médias de curto e longo prazo.
A lógica computacional central da estratégia inclui os seguintes passos-chave:
Análise de volume de transações: Use uma média móvel simples (SMA) para calcular o volume médio de transações (vol_ma) e compare o volume de transações atual com o valor médio, obtendo um índice percentual (vol_percent = volume / vol_ma * 100) [2].
Cálculo da taxa de variaçãoA taxa de volatilidade é calculada calculando a relação entre a amplitude da linha K e o preço de fechamento.
Construção de índices compostosO índice de volatilidade = volume * volatilidade, que reflete simultaneamente a dupla anomalia de volume de transação e oscilação de preços.
Sistema homogêneo: Calcule a média móvel de curto prazo e longo prazo para o índice composto, e aplique o multiplicador de aumento de sensibilidade para aumentar a sensibilidade do sinal.
Dinâmica de desvalorização: Construção de um filtro dinâmico para filtrar o ruído do mercado por meio de uma média de longo prazo multiplicada pelo fator de amplificação do limiar (index_threshold_magnification).
Identificação de forma: Análise de padrões específicos de reversão através da análise da linha K da raiz lookback_bars, por exemplo, quando o índice de taxa de flutuação apresenta uma tendência de mudança específica e o padrão de preço corresponde a condições de reversão.
Geração de sinais:
Gestão de RiscosA taxa de Fibonacci define automaticamente os níveis de take_profit e stop_loss, com base na amplitude de forma bearish, garantindo que o risco-receita seja razoavelmente ajustado.
Vantagens do indicador integradoAo combinar volume de transações com a volatilidade, a estratégia permite capturar de forma mais abrangente os pontos de atividade anormal do mercado, evitando a confusão que um único indicador pode trazer.
Adaptabilidade dinâmicaA estratégia é baseada em um mecanismo de diminuição dinâmica do limiar (index_threshold_magnification_auto), que permite que a estratégia se adapte às características de flutuação em diferentes condições de mercado, reduzindo os sinais errados.
Mecanismo de confirmação de forma: Análise retrospectiva da forma de linha K através do parâmetro lookback_bars, aumentando a confiabilidade do sinal, não apenas dependendo do cruzamento do indicador, mas também exigindo a combinação da forma de preço, reduzindo significativamente o risco de falsa ruptura.
Modelo de estratégia flexível: O parâmetro reversal_s permite alternar entre o acompanhamento de tendências e a reversão de estratégias, permitindo que o sistema se adapte a diferentes ambientes de mercado e necessidades de negociação.
Gestão de riscos sistemáticaO mecanismo de stop-loss baseado nos níveis de Fibonacci pode ajustar automaticamente os parâmetros de risco com base na amplitude real de oscilação do mercado, evitando a inadimplência que os pontos fixos podem trazer.
Visualização intuitivaA estratégia fornece uma visualização de gráficos em forma de coluna de volume de transação e curva de indicadores, e os sinais de negociação são claros e intuitivos, facilitando a compreensão do estado do mercado e a base de decisão dos comerciantes.
Parâmetros ajustáveisApresenta vários parâmetros ajustáveis (vol_length, index_short_length, index_long_length, etc.), permitindo que os comerciantes façam configurações personalizadas de acordo com diferentes características do mercado e preferências de risco pessoais.
Risco de sensibilidade de parâmetrosA estratégia depende de várias configurações de parâmetros, como comprimento médio do volume de transação (vol_length), comprimento médio do índice (index_short_length, index_long_length) e outros. A escolha incorreta dos parâmetros pode causar excesso de ajuste ou atraso no sinal. Solução: Fazer a otimização do histórico de retrospectiva, encontrar uma combinação de parâmetros que tenham desempenho estável em diferentes cenários de mercado, evitando a otimização excessiva de dados de períodos específicos.
Risco de Falso BreakoutEmbora a estratégia tenha um mecanismo de filtragem de queda dinâmica, é possível que o índice volte rapidamente após uma breve quebra de queda em mercados altamente voláteis. Solução: aumentar o ciclo de confirmação do sinal, ou em combinação com outros indicadores técnicos (como RSI, MACD) para confirmação múltipla, aumentando a confiabilidade do sinal.
Risco de estenção indevidoO setor de investimentos de capital aberto, como o Banco do Brasil e o Banco do Brasil, tem uma forte presença no mercado de ações, com a maior parte dos investidores a investir em ações de capital aberto. Solução: aumentar o limite máximo de stop loss ratio ou ajustar dinamicamente o parâmetro stopLossFib de acordo com a volatilidade histórica para garantir que o risco seja controlado dentro de limites aceitáveis.
Risco de erros de avaliação de tendênciasA tendência é para que os mercados se ajustem ou oscilações ocorram com frequência, o que pode levar a um excesso de negociação. Solução: introdução de indicadores de intensidade de tendência (como o ADX) para filtrar os sinais de mercados de tendência fraca, ou aumento de restrições de frequência de negociação.
Risco de liquidezA estratégia é sensível a mudanças no volume de transações, podendo gerar sinais errados ou problemas de deslizamento em mercados com baixa liquidez. Solução: adicionar um mínimo de volume de negociação para evitar a depreciação, para evitar a negociação em um ambiente de baixa liquidez, ou ajustar a sensibilidade do índice (index_magnification) para reduzir a resposta a pequenas flutuações.
Risco de desempenho fora do período de avaliaçãoA estratégia tem tido um bom desempenho em dados históricos, mas mudanças nas condições de mercado no futuro podem levar a um declínio no desempenho. Solução: Reavaliação e ajuste dos parâmetros da estratégia regularmente, usando métodos de teste fora da amostra e testes para a frente, mantendo a adaptabilidade da estratégia.
Mecanismo de confirmação de períodos de tempo múltiplosA estratégia atual funciona apenas em um único período de tempo, mas pode ser introduzida em um quadro de análise de períodos de tempo múltiplos, exigindo que a direção da tendência em períodos de tempo mais altos esteja de acordo com o sinal de negociação, aumentando a taxa de vitória. Isso evita a operação de reversão de grandes tendências e reduz o risco de ser “apresentado”.
Classificação do estado do mercadoAumentar o mecanismo de classificação do estado do mercado (mercado de tendência / mercado de turbulência), ajustando automaticamente os parâmetros da estratégia ou as regras de negociação de acordo com diferentes estados do mercado. Por exemplo, o estado do mercado pode ser avaliado por ATR ou indicador de volatilidade, aumentando os requisitos de margem em ambientes de alta volatilidade e relaxando as condições em ambientes de baixa volatilidade.
Parâmetros de otimização de aprendizado de máquinaIntrodução de algoritmos de aprendizagem de máquina para otimizar dinamicamente os parâmetros da estratégia, como o uso de algoritmos genéticos ou métodos de aprendizagem por reforço para encontrar a combinação de parâmetros mais ótima, permitindo que a estratégia se adapte às mudanças no mercado.
Integração dos indicadores emocionais: integrar indicadores de sentimento de mercado (como VIX, fluxo de capital, etc.) na lógica de geração de sinais, melhorar a capacidade de previsão de pontos de inflexão de mercado. O sentimento de mercado tende a ser a primeira mudança de preço, em combinação com o indicador de sentimento pode capturar sinais de mudança de mercado com antecedência.
Otimização da estratégia de suspensãoImplementação de um mecanismo de parada por lotes, que permite obter lucros por lotes de acordo com a sequência de Fibonacci, bloqueando parte dos lucros e permitindo que as posições restantes desfrutem plenamente dos lucros da tendência. Por exemplo, pode ser configurado um nível de 0.382, 0.618, 1.0 e 1.618 de posições em que uma certa proporção de posições são eliminadas.
Considerações de custos de transaçãoA estratégia atual não leva em conta os custos de transação, mas pode ser adicionada à lógica de cálculo dos custos de transação, garantindo que os lucros esperados gerados pelos sinais excedam os custos de transação e evitando a erosão de custos causada por transações frequentes e pequenas.
Gestão de posições de riscoA adição de um módulo de gestão de posições dinâmicas para calcular automaticamente o tamanho da posição ideal com base na volatilidade histórica, intensidade de sinal atual e capacidade de tolerância ao risco da conta, permitindo uma gestão de fundos mais científica.
Filtragem por relevânciaEm cenários de negociação de múltiplos ativos, adicionar módulos de análise de correlação, evitar a criação de posições simultâneas em vários ativos altamente correlacionados e reduzir o risco sistemático.
A estratégia de rastreamento de tendências do índice de volatilidade e volume de transação combinou de forma inovadora indicadores de volume de transação e volatilidade de preços para construir um sistema de negociação quantitativa capaz de capturar mudanças na dinâmica do mercado. A estratégia se destacou em identificar possíveis pontos de inflexão e confirmação de tendências, além de fornecer um mecanismo de execução de negociação flexível por meio de gestão de stop loss e opção de reversão do Fibonacci.
A principal vantagem da estratégia reside no seu sistema de indicadores integrados e adaptabilidade dinâmica, permitindo identificar oportunidades de negociação de alta qualidade em diferentes cenários de mercado. No entanto, os usuários precisam estar atentos aos riscos potenciais, como sensibilidade de parâmetros, falsas rupturas e erros de julgamento de tendências, e podem aumentar ainda mais a estabilidade e adaptabilidade da estratégia por meio de confirmação de vários períodos de tempo, classificação do estado do mercado e otimização de aprendizado de máquina.
Com parâmetros razoavelmente configurados e otimização contínua, a estratégia pode ser uma arma poderosa na caixa de ferramentas dos comerciantes, especialmente para a busca de pontos de inflexão de mercado em que o volume de transações está em sincronia com a flutuação de preços, ajudando os comerciantes a aproveitar as oportunidades de negociação chave em mercados complexos e variáveis.
/*backtest
start: 2024-05-26 00:00:00
end: 2025-05-25 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Volume and Volatility Ratio Indicator-WODI", overlay=false)
// === 用户自定义参数 ===
vol_length = input(48, title="交易量均线长度") // 交易量均线长度
index_short_length = input(13, title="指数短均线长度") // 交易量均线长度
index_long_length = input(26, title="指数均线长度") // 交易量均线长度
index_magnification = input(2, title="指数均线敏感度") // 调整指数倍率
index_threshold_magnification = input(200, title="指数阈值百分比") // 交易量/波动率指数阈值
lookback_bars = input(3, title="K线形态检测长度") // 形态检测 K 线数量
reversal_s = input.bool(title = "反转策略", defval = false, group="Position")
stopLossFib = input.float(title="止损斐波那契", defval=0, options=[0, 0.127, 0.236, 0.382, 0.5, 0.618, 0.692, 0.786, 1, 1.272, 1.414, 1.618, 2.272, 2.414, 2.618, 3, 3.414, 3.618, 4, 4.236, 4.272, 4.414, 5], group="Position")
takeProfitFib = input.float(title="止盈斐波那契", defval=1.618, options=[0, 0.127, 0.236, 0.382, 0.5, 0.618, 0.692, 0.786, 1, 1.272, 1.414, 1.618, 2.272, 2.414, 2.618, 3, 3.414, 3.618, 4, 4.236, 4.272, 4.414, 5], group="Position")
// === 计算交易量均线 ===
vol_ma = ta.sma(volume, vol_length)
// === 计算当前交易量为平均交易量的百分比 ===
vol_percent = volume / vol_ma * 100
// === 计算波动率(当前 K 线振幅) ===
volatility = (high - low) / close * 100
// === 计算交易量/波动率指数 ===
new_module = ((volume*volume)/volatility) //新算法,不好用
volatility_index = volume*volatility //
// === 计算指数平均值,用平均值做触发阈值 ===
index_short_ma = ta.sma(volatility_index, index_short_length)
index_long_ma = ta.sma(volatility_index, index_long_length)
index_threshold_magnification_auto = index_long_ma * index_threshold_magnification /100
// === 计算前 lookback_bars 根 K 线的指数趋势 ===
is_reversal_pattern = false
is_reversal_pattern_s = false
for i = 1 to lookback_bars
if volatility_index[1] > volatility_index[2] and (volatility_index[1] > volatility_index[0] or volume[1] > volume[0])and close[i+1] > close[i] and close[1] < close[0] and volume > vol_ma and volatility_index > index_threshold_magnification_auto and ((open[1] - close[1] < close[1] - low[1]) or (open[0] - close[0] < close[0] - low[0]))
if i >= lookback_bars
is_reversal_pattern := true
else if i < lookback_bars
break
for i = 1 to lookback_bars
if volatility_index[1] > volatility_index[2] and (volatility_index[1] > volatility_index[0] or volume[1] > volume[0])and close[i+1] < close[i] and close[1] > close[0] and volume > vol_ma and volatility_index > index_threshold_magnification_auto and ((close[1] - open[1] < high[1] - close[1]) or (close[0] - open[0] < high[0] - close[0]))
if i >= lookback_bars
is_reversal_pattern_s := true
else if i < lookback_bars
break
// === 绘制指标 ===
//plot(vol_ma, color=color.rgb(158, 161, 170), linewidth = 1, title="交易量均线")
//plot(index_short_ma * index_magnification, color=color.gray, linewidth = 1, title="指数短均线")
//plot(index_long_ma * index_magnification, color=#2ad7f6, linewidth = 1, title="指数长均线")
plot(index_threshold_magnification_auto, color=color.rgb(238, 66, 193), linewidth = 1, title="波动率阈值")
// === 交易量柱状图(高亮大于均值的交易量) ===
bar_color = volume > vol_ma ? (is_reversal_pattern? #bc2af6 : (is_reversal_pattern_s? #f22a2a : color.rgb(77, 231, 255, 37))) : color.rgb(120, 123, 134, 70)
plot(volatility_index*2, style=plot.style_columns, color=bar_color, title="交易量柱状图")
plot(volume, style=plot.style_stepline, color=#00000055, title="交易量")
// === 反转做多策略 ===
var float stop_loss = na
var float take_profit = na
if is_reversal_pattern and (reversal_s ? strategy.position_size >= 0 : strategy.position_size <= 0)
bearish_low = low[1] < low[0]? low[1] : low [0]// 形态最低点
bearish_high = high[lookback_bars] > high[0] ? high[lookback_bars] : high[0]// 形态最高点
bearish_range = bearish_high - bearish_low // 形态振幅
// === 计算止损 (SL) 和止盈 (TP) ===
stop_loss := reversal_s ? bearish_high + (bearish_range * stopLossFib) : bearish_low - (bearish_range * stopLossFib) //止损斐波那契
take_profit := reversal_s ? bearish_high - (bearish_range * takeProfitFib) : bearish_low + (bearish_range * takeProfitFib) //止盈斐波那契
is_reversal_pattern := false
strategy.entry(reversal_s ? "short" : "Long", reversal_s ? strategy.short : strategy.long)
if is_reversal_pattern_s and (reversal_s ? strategy.position_size <= 0 : strategy.position_size >= 0)
bearish_low = low[lookback_bars] < low[0] ? low[lookback_bars] : low[0]// 形态低点
bearish_high = high[1] > high[0]? high[1] : high [0]// 形态高点
bearish_range = bearish_high - bearish_low // 形态振幅
// === 计算止损 (SL) 和止盈 (TP) ===
stop_loss := reversal_s ? bearish_low - (bearish_range * stopLossFib) : bearish_high + (bearish_range * stopLossFib) //止损斐波那契
take_profit := reversal_s ? bearish_low + (bearish_range * takeProfitFib) : bearish_high - (bearish_range * takeProfitFib) //止盈斐波那契
is_reversal_pattern_s := false
strategy.entry(reversal_s ? "Long" : "short", reversal_s ? strategy.long : strategy.short)
// === 止损 (SL) 和止盈 (TP) ===
if low[0] < stop_loss and strategy.position_size >= 0
strategy.close("Long", qty_percent = 100)
if high[0] > take_profit and strategy.position_size >= 0
strategy.close("Long", qty_percent = 100)
if high[0] > stop_loss and strategy.position_size <= 0
strategy.close("short", qty_percent = 100)
if low[0] < take_profit and strategy.position_size <= 0
strategy.close("short", qty_percent = 100)