
A estratégia de negociação quantitativa de zona de deslocamento de nível superior é um sistema de negociação automatizado baseado na análise técnica de filtragem, cuja ideia central é identificar as formas de linhas de deslocamento específicas e os sinais de negociação gerados quando os preços entram nessas zonas de deslocamento. A estratégia analisa a relação entre as entidades de linhas de deslocamento e as linhas de sombra, combinando o comportamento de preços, para procurar potenciais oportunidades de compra e venda no mercado. A estratégia define um ponto de parada fixo (pontos 12) e um ponto de parada (pontos 1) para controlar o risco e bloquear os lucros.
O princípio central da estratégia é identificar e negociar em uma zona de preço especial chamada “zona de deslocamento”.
Identificação de linha de deslocamentoA estratégia passa primeiro:isBullishDisplacement()eisBearishDisplacement()A função identifica linhas de arbitragem de alta e baixa. Essas linhas de arbitragem são caracterizadas por um número específico de vezes maior que a linha de sombra (controlada por um parâmetro de sensibilidade).
Excluindo a cruzAprovado:isDoji()A função filtra linhas de estrelas cruzadas de maior incerteza, focando apenas em sinais de tendência claros. O critério de determinação de estrelas cruzadas é a proporção de entidade para o escopo total menor do que o limite definido (default 10%).
Construção de áreas de deslocamentoA estratégia registra os pontos altos e baixos das duas linhas de tendência de alta ou baixa mais recentes e, com isso, constrói a fronteira superior e inferior da zona de deslocamento.
Acompanhamento de status regionalVariável de estado de uso:inBearZoneeinBullZoneO preço do petróleo está dentro de uma zona de deslocamento.
Geração de sinal de entradaGeração de sinais de negociação quando o preço entra em uma área de deslocamento de uma determinada direção:
Execução automática de transaçõesA estratégia executa automaticamente a operação e define uma posição fixa de stop (a 12 pontos) e stop (a 1 ponto) após o sinal ser disparado.
Ao analisarmos o código da estratégia, podemos concluir que há algumas vantagens significativas:
Claridade de lógica baseada na estrutura de preçosA estratégia é baseada no conceito de mapeamento e deslocamento de áreas, a lógica de negociação é intuitiva, clara e fácil de entender e aplicar.
Flexibilidade de parametrizaçãoA estratégia pode ser adaptada a diferentes cenários de mercado e preferências de risco pessoais através de dois parâmetros ajustáveis: o múltiplo de sensibilidade e o limiar de estrela cruzada.
Gerenciamento automático de riscosO mecanismo de stop-loss fixo embutido, com uma relação de risco/retorno de cada transação de 12: 1, contribui para uma gestão de fundos estável a longo prazo.
Sinais de negociação visuaisA estratégia permite aos traders compreender o estado do mercado através de sinais gráficos que mostram claramente os limites dos sinais de compra e venda e as zonas de deslocamento.
Combinação de estratégias de alta e baixaA análise técnica, combinada com o conceito de retroceder após a ruptura do preço, melhorou a qualidade do sinal.
Evite o barulho do mercadoO sistema de filtragem de estrelas cruzadas reduz os sinais errados em um mercado incerto.
Apesar do bom desenho da estratégia, existem os seguintes riscos potenciais:
Pequenos riscosA estratégia é de apenas 1 ponto de stop loss, que pode ser muito apertado em mercados de alta volatilidade, facilmente desencadeado pelo ruído do mercado, resultando em frequentes stop loss. Solução: ajuste o múltiplo de stop loss de acordo com as características de flutuação da variedade de negociação.
Sensibilidade do parâmetroSolução: Encontrar a melhor combinação de parâmetros em um determinado cenário de mercado através do feedback de parâmetros de otimização.
Risco de perdas contínuas: Em mercados turbulentos, zonas de deslocamento podem se formar com frequência, mas não podem se desenvolver de forma sustentada como tendências, resultando em perdas contínuas. Solução: adicionar condições de filtragem do ambiente de mercado, como a confirmação de indicadores de tendência.
Falta de perda dinâmicaA solução: Implementar um mecanismo de parada dinâmico baseado no ATR ou na volatilidade.
Excessiva dependência de deslocamentos históricosSolução: Considere a extensão do intervalo de tempo de registro dos deslocamentos.
Com base na análise do código, a estratégia tem algumas melhorias:
Gestão de Riscos DinâmicosA mudança de um ponto de parada fixo para um ponto de parada dinâmico baseado no ATR (amplitude de flutuação real) para adaptar-se a diferentes ambientes de flutuação do mercado. O benefício de fazer isso é reduzir o stop loss prematuro durante a baixa flutuação e oferecer proteção suficiente durante a alta flutuação.
Aumentar o tempo de filtragemIncluir a verificação de eficácia do tempo na estratégia. Se a zona de deslocamento for formada por um tempo excessivo e não tiver disparado o sinal, deve ser reposta ou reduzida a sua importância. Isso pode evitar decisões de negociação baseadas em informações desatualizadas.
Introdução de confirmação de entregaO volume de transação é usado como um indicador auxiliar para a confirmação de sinais, sendo aceito apenas quando o volume de transação aumenta, melhorando a qualidade da transação. O volume de transação pode verificar a eficácia da ação do preço.
Análise de Multi-Framas de TempoA combinação de sinais do período de tempo atual com a direção da tendência do período de tempo mais avançado, apenas para negociar quando a direção coincide, aumenta a taxa de vitória.
Sistema de parâmetros adaptativosImplementação de mecanismos para ajustar automaticamente os parâmetros de sensibilidade com base no comportamento recente do mercado, permitindo que a estratégia se adapte à mudança de mercado. Isso ocorre porque diferentes estágios do mercado (trend, oscilação intermédia) requerem diferentes configurações de parâmetros.
Aumentar a proteção contra perdas contínuasDesenhar um mecanismo para suspender a negociação por um período de tempo ou ajustar os parâmetros após um determinado número de paradas consecutivas para evitar perdas contínuas em condições de mercado desfavoráveis.
A estratégia de negociação quantitativa de zona de deslocamento de alto nível é uma metodologia de negociação sistematizada baseada na estrutura de preços e na morfologia do gráfico de deslocamento, que gera sinais de negociação através da identificação de linhas de deslocamento específicas e padrões de comportamento de preços. A estratégia controla o risco por meio de mecanismos fixos de stop-loss e auxilia a decisão de negociação por meio de ferramentas visuais.
As principais vantagens da estratégia são a clareza lógica, a flexibilidade dos parâmetros e a automação do gerenciamento de riscos, mas também existem riscos potenciais, como configurações de parada de perda muito pequenas e sensibilidade de parâmetros. A robustez e a lucratividade da estratégia podem ser significativamente aumentadas pela introdução de medidas de otimização, como gerenciamento de risco dinâmico, filtragem de tempo, confirmação de volume de transação, análise de múltiplos quadros temporais e sistemas de parâmetros adaptáveis.
Para os investidores que buscam transações sistematizadas baseadas em análise técnica, a estratégia de área de deslocamento superior oferece um quadro a considerar, especialmente quando combinada com as correspondentes otimizações, com maior probabilidade de manter um desempenho estável em diferentes ambientes de mercado.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-05-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("Advanced Displacement Zone Strategy", overlay=true)
// === PARAMETERS ===
sensitivity = input.float(1.2, title="Displacement Strength Multiplier")
dojiThreshold = input.float(0.1, title="Doji Body-to-Range Threshold (e.g., 0.1 = 10%)")
// === FUNCTIONS ===
isDoji() =>
candleRange = high - low
body = math.abs(close - open)
candleRange > 0 and (body / candleRange) <= dojiThreshold
isBullishDisplacement() =>
body = close - open
wick = (high - low) - math.abs(body)
not isDoji() and body > 0 and body > wick * sensitivity
isBearishDisplacement() =>
body = open - close
wick = (high - low) - math.abs(body)
not isDoji() and body > 0 and body > wick * sensitivity
// === STATE TRACKING ===
var float lastBullWick = na
var float secondLastBullWick = na
var float lastBearWick = na
var float secondLastBearWick = na
var bool inBearZone = false
var bool inBullZone = false
// === DETECT DISPLACEMENT CANDLES ===
if isBullishDisplacement()
secondLastBullWick := lastBullWick
lastBullWick := high
inBullZone := true
inBearZone := false
if isBearishDisplacement()
secondLastBearWick := lastBearWick
lastBearWick := low
inBearZone := true
inBullZone := false
// === WAITING ZONE BOUNDARIES ===
bullZoneHigh = math.max(lastBullWick, secondLastBullWick)
bullZoneLow = math.min(lastBullWick, secondLastBullWick)
bearZoneHigh = math.max(lastBearWick, secondLastBearWick)
bearZoneLow = math.min(lastBearWick, secondLastBearWick)
// === ZONE LOGIC ===
inBullZoneNow = close > bullZoneLow and close < bullZoneHigh
inBearZoneNow = close > bearZoneLow and close < bearZoneHigh
wasBelowBearZone = close[1] < bearZoneLow and close > bearZoneLow and not inBearZoneNow
wasAboveBullZone = close[1] > bullZoneHigh and close < bullZoneHigh and not inBullZoneNow
// === SIGNAL CONDITIONS ===
sellSignal = inBearZone and wasBelowBearZone
buySignal = inBullZone and wasAboveBullZone
// === STRATEGY EXECUTION ===
if buySignal
strategy.entry("Buy", strategy.long)
strategy.exit("Sell", from_entry="Buy", stop=close - 1, limit=close + 12) // Fixed Stop Loss at 5 points, Take Profit at 12 points
if sellSignal
strategy.entry("Sell", strategy.short)
strategy.exit("Buy", from_entry="Sell", stop=close + 1, limit=close - 12) // Fixed Stop Loss at 5 points, Take Profit at 12 points
// === PLOTS ===
plotshape(buySignal, title="Buy", location=location.belowbar, style=shape.arrowup, color=color.green, size=size.small, text="BUY")
plotshape(sellSignal, title="Sell", location=location.abovebar, style=shape.arrowdown, color=color.red, size=size.small, text="SELL")
plot(inBullZone ? bullZoneHigh : na, title="Bull Zone High", color=color.green, linewidth=1)
plot(inBullZone ? bullZoneLow : na, title="Bull Zone Low", color=color.green, linewidth=1)
plot(inBearZone ? bearZoneHigh : na, title="Bear Zone High", color=color.red, linewidth=1)
plot(inBearZone ? bearZoneLow : na, title="Bear Zone Low", color=color.red, linewidth=1)