
A estratégia de negociação VWAP de bandas de desvio com filtragem de volatilidade é um sistema de negociação diária baseado na média ponderada de volume de transação (VWAP) e no canal de desvio padrão. A estratégia usa o VWAP como ponto central de referência para os preços, combina a forma de reversão H1/H2 e L1/L2 de Al Brooks e filtra o ambiente de baixa volatilidade através do filtro de volatilidade ATR, formando uma estrutura de decisão de negociação estruturada.
A estratégia baseia-se nos seguintes componentes:
Calculação do VWAP para cada dia de transação: Refazer o cálculo do VWAP no início de cada dia de negociação, garantindo que os pontos de referência de preços estejam intimamente relacionados com a atividade de negociação do dia. A estratégia usa a diferença padrão para criar uma faixa de flutuação acima e abaixo do VWAP, definida por padrão como 2 vezes a diferença padrão.
Entradas de sinal de disparo:
Filtro de flutuação:
Configurações de parada:
Estratégias para ganhar dinheiro:
Mecanismo de saída segura:
A estratégia implementa um conjunto completo de mecanismos de cálculo de intensidade de sinal, avaliando a qualidade de cada sinal, calculando a posição relativa do preço de fechamento na faixa de pontos altos e baixos. O sinal de entrada só é considerado válido quando a intensidade do sinal atinge o mínimo de limiar (default 0.7).
Depois de analisar o código em profundidade, a estratégia tem as seguintes vantagens significativas:
Entrada baseada na estrutura do mercadoA estratégia não é simplesmente seguir a oscilação dos preços, mas sim procurar uma reversão específica dos preços perto da zona de desvio, o que significa que a negociação é feita seguindo a vantagem estatística de um regresso ao valor médio.
Mecanismo de filtragem múltiplaFiltragem de sinais de negociação em vários níveis através de filtros de volatilidade, exigências de intensidade de sinal e configurações de preços específicas, reduzindo significativamente os sinais de erro.
Gestão de Riscos FlexívelA estratégia oferece uma variedade de ferramentas de controle de risco, incluindo um stop loss apertado baseado em um pilar de sinais, um objetivo de lucro ajustável e um mecanismo de saída segura, permitindo que os comerciantes ajusten os parâmetros de risco de acordo com diferentes condições de mercado.
Configuração multi-espaço independenteA estratégia permite que os traders configurarem independentemente as condições de entrada e saída de negociações multihead e no headless, o que é muito valioso para otimizar o desempenho em mercados com preferência direcional.
Auxílio visualA estratégia inclui opções de visualização abundantes, como VWAP, Display de Banda de Desvios e Alto brilho em Áreas de Baixa Volatilidade, para ajudar os comerciantes a entender melhor o estado do mercado e os sinais potenciais.
Sessão marcada para VWAP: O VWAP é recalculado a cada dia de negociação, garantindo que os pontos de referência de preços estejam sempre relacionados com a atividade atual do mercado, evitando o problema de usar pontos de referência desatualizados.
Enfatizando a qualidade do sinalA estratégia foca em sinais de inversão de alta qualidade, não apenas em cruzamentos mecânicos de preços com bandas de desvio, através da computação da intensidade do sinal.
Apesar da estratégia ser bem concebida, existem os seguintes riscos potenciais:
Risco de reversão no mercado de tendênciasComo uma estratégia baseada em regressão de média, pode frequentemente desencadear sinais de contra-corrente em mercados de forte tendência, resultando em interrupções contínuas. Método de Solução: Em ambientes de forte tendência, pode desativar a negociação na direção contrária ou aumentar as condições de filtragem.
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente de vários parâmetros-chave, como o múltiplo da diferença padrão, o tamanho do stop loss e o limiar de intensidade do sinal. O método de solução: realizar uma otimização completa dos parâmetros e análise de sensibilidade para encontrar um conjunto de parâmetros robusto em diferentes condições de mercado.
Falta de tempo para filtrarA estratégia não leva em consideração as características do período de negociação, podendo gerar sinais enganosos em períodos de alta volatilidade, como aberturas e fechamentos de mercados. Solução: Adicionar filtros de tempo para evitar negociações em períodos de mercado específicos.
Risco de perda fixaO método de solução: Considere o uso de stop loss dinâmico baseado no ATR para adaptar o stop loss à volatilidade do mercado atual.
Falta de filtragem de volumeEstratégia: Apesar de usar o VWAP, não há filtragem direta de ambientes de baixo volume de transações, o que pode levar a sinais não confiáveis em situações de falta de liquidez. Solução: Adicionar condições de depreciação de volume de transações para garantir que as transações sejam feitas apenas em ambientes de liquidez suficiente.
A questão do tempo para uma saída seguraA solução: Considere um mecanismo de saída de segurança dinâmico, combinando a amplitude de flutuação dos preços com a quantidade de colunas.
Com base na análise do código, as seguintes são as possíveis direções de otimização:
Diferenças dinâmicas multiplicadasA estratégia atual usa um padrão de diferença de 2x fixo como condição de entrada. Pode-se considerar o ajuste deste padrão de acordo com a dinâmica de volatilidade do mercado, usando um padrão maior em mercados de alta volatilidade e um padrão menor em mercados de baixa volatilidade, para se adaptar a diferentes condições de mercado.
Adicionando um filtro de tempoFiltragem de transações em períodos específicos, evitando períodos de volatilidade como aberturas, fechamentos e horários de almoço, ou concentrando-se em períodos de negociação eficientes.
Análise de estrutura de mercado integradaA análise de tendências em quadros de tempo mais elevados é adotada para negociar apenas em direções que coincidem com tendências maiores ou para usar condições de filtragem mais rigorosas em sinais de contra-trend.
Otimizar o mecanismo de saída seguraA saída segura atual é baseada em um número fixo de colunas invertidas. Pode ser considerada em combinação com a amplitude do movimento do preço, como quando a retirada do preço excede a porcentagem específica do movimento mais vantajoso após a entrada.
Confirmação de volume de transaçãoA introdução de condições de confirmação de volume de transação no momento da formação de um sinal de entrada, assegurando que o sinal seja acompanhado de uma participação de mercado suficiente para aumentar a confiabilidade do sinal.
Implementação de gestão de stop loss dinâmicaO sistema de paradas de pontos fixos pode ser substituído por paradas dinâmicas baseadas em ATR, ou pode ser implementado com paradas móveis para proteger os lucros já obtidos.
Adicionar filtro de lucro-perdaA taxa de meta potencial para o stop loss é calculada antes da entrada e só é executada em operações com um lucro ou perda suficiente.
Integração de efeitos sazonais e de calendário: Analisar e aproveitar os padrões sazonais e os efeitos do calendário de um determinado mercado, aumentando a transação em períodos estatisticamente mais favoráveis ou reduzindo a transação em períodos desfavoráveis.
Essas otimizações podem melhorar a robustez e a rentabilidade das estratégias, especialmente a adaptabilidade em diferentes cenários de mercado.
A estratégia de negociação de bandas de desvio VWAP com filtragem de volatilidade é um sistema de negociação diária bem projetado, que combina vários conceitos-chave da análise técnica. Utiliza o VWAP como ponto de referência central do preço, calcula as bandas de desvio através do desvio padrão e captura oportunidades de negociação quando o preço rebota a partir dessas bandas. O principal benefício da estratégia reside em seu mecanismo de filtragem em vários níveis e no sistema de gerenciamento de risco flexível, que a permite adaptar-se a diferentes ambientes de mercado.
Apesar de existirem alguns riscos potenciais, como o risco de reversão em mercados de forte tendência e a sensibilidade de parâmetros, estes podem ser mitigados por meio de uma otimização adicional. As direções de otimização incluem o ajuste dinâmico do múltiplo da banda de desvios, a adição de filtros de tempo, a integração de uma análise de maior período de tempo e a melhoria do gerenciamento de prejuízos.
Em geral, trata-se de uma estrutura estratégica sólida, adequada para a customização e melhoria de operadores experientes. Com a otimização para mercados específicos e estilos de negociação, tem potencial para ser uma ferramenta de negociação diária confiável, especialmente em ambientes de mercado onde a volatilidade é moderada e há uma tendência de retorno de valor.
/*backtest
start: 2025-03-30 00:00:00
end: 2025-03-31 20:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("VWAP Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=2000)
// === Inputs ===
src = input.source(hlc3, "Source")
stopPoints = input.float(20.0, "Stop Buffer (Points from Signal Bar High/Low)", step=0.25)
exitModeLong = input.string("VWAP", "Long Exit Rule", options=["VWAP", "Deviation Band", "None"])
exitModeShort = input.string("VWAP", "Short Exit Rule", options=["VWAP", "Deviation Band", "None"])
targetLongDeviation = input.float(2.0, "Long Target Deviation", step=0.1)
targetShortDeviation = input.float(2.0, "Short Target Deviation", step=0.1)
enableSafetyExit = input.bool(true, "Enable Safety Exit")
numOpposingBars = input.int(3, "Opposing Bars for Safety Exit", minval=1)
allowLongs = input.bool(true, "Allow Long Trades")
allowShorts = input.bool(true, "Allow Short Trades")
minStrength = input.float(0.7, "Minimum Signal Strength (0-1)", step=0.05)
showVWAP = input.bool(true, "Show VWAP")
showBands = input.bool(true, "Show Entry Bands")
showLowVolZones = input.bool(true, "Highlight Low Vol Zones")
// === VWAP Session Logic ===
var float sumSrc = na
var float sumVol = na
var float sumSrcSqVol = na
newSession = ta.change(time("D"))
if newSession or na(sumSrc)
sumSrc := 0.0
sumVol := 0.0
sumSrcSqVol := 0.0
sumSrc += src * volume
sumVol += volume
sumSrcSqVol += math.pow(src, 2) * volume
vwap = sumSrc / sumVol
variance = (sumSrcSqVol / sumVol) - math.pow(vwap, 2)
stdev = math.sqrt(variance)
// === Deviation Bands ===
bandEntryMult = 2.0
entryUpper = vwap + stdev * bandEntryMult
entryLower = vwap - stdev * bandEntryMult
targetUpperLong = vwap + stdev * targetLongDeviation
targetLowerShort = vwap - stdev * targetShortDeviation
// === ATR-Based Volatility Filter ===
atrVal = ta.atr(14)
isVolTooLow = stdev * 2 < atrVal * 3
bgcolor(showLowVolZones and isVolTooLow ? color.new(color.orange, 85) : na, title="Low Volatility Zone")
// === Signal Strength Calculations ===
barRange = high - low
bullStrength = barRange > 0 ? (close - low) / barRange : 0
bearStrength = barRange > 0 ? (high - close) / barRange : 0
// === Entry Triggers with Strength Filter ===
isH1H2 = open < entryLower and close > entryLower and bullStrength >= minStrength
isL1L2 = open > entryUpper and close < entryUpper and bearStrength >= minStrength
plotshape(isH1H2, title="H1/H2", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.tiny)
plotshape(isL1L2, title="L1/L2", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)
// === Signal Bar Stop Tracking ===
var float signalLow = na
var float signalHigh = na
// === Entry Logic ===
longCondition = allowLongs and isH1H2 and strategy.position_size == 0 and not isVolTooLow
shortCondition = allowShorts and isL1L2 and strategy.position_size == 0 and not isVolTooLow
if longCondition
strategy.entry("Long", strategy.long)
signalLow := low
if shortCondition
strategy.entry("Short", strategy.short)
signalHigh := high
// === Reset Signal Bar Info
if strategy.position_size == 0
signalLow := na
signalHigh := na
// === Apply Signal-Bar-Based Stop
if strategy.opentrades > 0
if strategy.position_size > 0 and not na(signalLow)
strategy.exit("Long SL", from_entry="Long", stop=signalLow - stopPoints)
if strategy.position_size < 0 and not na(signalHigh)
strategy.exit("Short SL", from_entry="Short", stop=signalHigh + stopPoints)
// === Target Exits (Independent per side)
exitLongVWAP = strategy.position_size > 0 and exitModeLong == "VWAP" and high >= vwap
exitLongDev = strategy.position_size > 0 and exitModeLong == "Deviation Band" and high >= targetUpperLong
exitShortVWAP = strategy.position_size < 0 and exitModeShort == "VWAP" and low <= vwap
exitShortDev = strategy.position_size < 0 and exitModeShort == "Deviation Band" and low <= targetLowerShort
if exitModeLong != "None" and (exitLongVWAP or exitLongDev)
strategy.close("Long", comment="Target Exit")
if exitModeShort != "None" and (exitShortVWAP or exitShortDev)
strategy.close("Short", comment="Target Exit")
// === Safety Exit
bullishBar(i) => close[i] > open[i]
bearishBar(i) => close[i] < open[i]
bullCount = 0
bearCount = 0
for i = 0 to numOpposingBars - 1
bullCount += bullishBar(i) ? 1 : 0
bearCount += bearishBar(i) ? 1 : 0
exitSafetyLong = enableSafetyExit and strategy.position_size > 0 and bearCount == numOpposingBars
exitSafetyShort = enableSafetyExit and strategy.position_size < 0 and bullCount == numOpposingBars
if exitSafetyLong
strategy.close("Long", comment="Safety Exit")
if exitSafetyShort
strategy.close("Short", comment="Safety Exit")
// === Plotting ===
plot(showVWAP ? vwap : na, color=color.blue, title="VWAP")
pUpper = plot(showBands ? entryUpper : na, color=color.green, title="Upper Entry Band")
pLower = plot(showBands ? entryLower : na, color=color.red, title="Lower Entry Band")
fill(pUpper, pLower, color=color.new(color.gray, 85))