Estratégia de negociação quantitativa com padrão de velas de reversão de tendência de quadro de tempo duplo

MA
Data de criação: 2025-01-10 15:47:53 última modificação: 2025-01-10 15:47:53
cópia: 1 Cliques: 385
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa com padrão de velas de reversão de tendência de quadro de tempo duplo

Visão geral

Esta estratégia é um sistema de negociação quantitativa baseado em dois padrões clássicos de velas: a linha do martelo e o homem enforcado. A estratégia funciona identificando esses padrões de reversão no mercado para prever possíveis pontos de reversão na ação do preço. O sistema combina vários indicadores técnicos para confirmar a validade do sinal, incluindo a relação proporcional entre o corpo da linha K e a sombra, a direção da tendência e outros fatores, para obter uma captura precisa dos pontos de reversão do mercado.

Princípio da estratégia

A lógica central da estratégia é identificar dois padrões principais de velas de forma programática:

  1. Martelo: aparece em tendência de baixa, sugerindo uma possível reversão para cima. É caracterizado por um corpo real pequeno, uma sombra inferior longa (pelo menos duas vezes o comprimento do corpo real) e uma sombra superior muito curta ou ausente.
  2. Enforcado: Aparece em tendência ascendente, sugerindo uma possível reversão e declínio. As características morfológicas são semelhantes às da linha do martelo, mas a aparência, posição e significado são opostos.

A estratégia quantifica esses padrões definindo parâmetros rigorosos, incluindo:

  • Multiplicador de comprimento mínimo do corpo do candle
  • A proporção entre a sombra inferior e a altura da vela
  • Período de retenção

Vantagens estratégicas

  1. Identificação sistemática: identifique com precisão os sinais de reversão do mercado por meio de métodos programáticos, evitando a subjetividade do julgamento humano.
  2. Os riscos são controláveis: um período de retenção claro é definido para evitar os riscos causados ​​por participações excessivas.
  3. Visualização de sinais: exiba intuitivamente sinais de negociação no gráfico para facilitar análise e otimização.
  4. Parâmetros flexíveis: os parâmetros podem ser ajustados de acordo com diferentes condições de mercado para melhorar a adaptabilidade da estratégia.

Risco estratégico

  1. Risco de falso rompimento: padrões de reversão podem produzir sinais falsos e precisam ser confirmados em combinação com outros indicadores técnicos.
  2. Risco de tempo: um período de retenção fixo pode não capturar todo o potencial dos movimentos de preços.
  3. Dependência do ambiente de mercado: Muitos sinais falsos podem ser gerados em um mercado volátil.

Direção de otimização da estratégia

  1. Introdução de filtros de tendências: indicadores como médias móveis podem ser adicionados para filtrar tendências e melhorar a qualidade do sinal.
  2. Período de retenção dinâmico: ajuste dinamicamente o tempo de retenção de acordo com a volatilidade do mercado.
  3. Confirmação multiperíodo: introdução de um mecanismo de confirmação de tendência para prazos maiores.
  4. Otimização de stop loss: adicione um mecanismo dinâmico de stop loss para melhorar os recursos de controle de risco.

Resumir

Essa estratégia concretiza a aplicação sistemática da teoria clássica de análise técnica por meio de métodos quantitativos e tem forte valor prático. Ao otimizar parâmetros e melhorar mecanismos de controle de risco, a estratégia pode manter um desempenho estável em diferentes ambientes de mercado. O design modular da estratégia também fornece uma boa base para otimização subsequente.

Código-fonte da estratégia
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Hammer and Hanging Man Strategy", overlay=true)

// Input parameters
length = input.int(5, title="Minimum Candle Body Length (Multiplier)", minval=1)
shadowRatio = input.float(1, title="Lower Shadow to Candle Height Ratio", minval=1.0)
holdPeriods = input.int(26, title="Hold Periods (Bars)", minval=1)  // Holding period in bars

// Function to calculate the absolute value
absValue(x) =>
    x >= 0 ? x : -x

// Function to check if it is a Hammer
isHammer() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close > open

// Function to check if it is a Hanging Man
isHangingMan() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close < open

// Detect the candles
hammer = isHammer()
hangingMan = isHangingMan()

// Trading logic: Long on Hammer, Short on Hanging Man
if hammer
    strategy.entry("Long", strategy.long)  // Long entry on Hammer

if hangingMan
    strategy.entry("Short", strategy.short)  // Short entry on Hanging Man

// Exit after X bars
if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Long")

if strategy.position_size < 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Short")

// Visualization of signals
plotshape(hammer, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(hangingMan, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging Man")