O recurso está a ser carregado... Carregamento...

Estratégia de negociação combinada de reconhecimento de padrões de velas de vários prazos

Autora:ChaoZhang, Data: 2024-12-11 11:04:35
Tags:JSCCPTS

img

Resumo

Esta estratégia é um sistema de negociação automatizado baseado no reconhecimento de padrões de velas. Integra dez padrões clássicos de velas, incluindo cinco padrões de alta (Mato, Engulfamento de Alta, Linha de Piercing, Estrela da Manhã e Três Soldados Brancos) e cinco padrões de baixa (Hanging Man, Engulfamento de Baixa, Cobertura de Nuvem Escura, Estrela da Noite e Três Corvos Negros). Através da identificação e análise em tempo real desses padrões, a estratégia fornece aos traders potenciais sinais de reversão do mercado e oportunidades de negociação.

Princípio da estratégia

O núcleo da estratégia reside na implementação programática de reconhecimento preciso de padrões de velas.

  1. Para padrões de candelabro único (como Hammer, Hanging Man), o julgamento é baseado principalmente na proporção entre corpo e sombra
  2. Para dois padrões de velas (como Engulfing, Piercing Line), o julgamento é feito comparando as posições relativas de velas adjacentes preços de abertura e fechamento
  3. Para padrões de três velas (como Três Soldados Brancos, Três Corvos Negros), várias condições relativas à direção da tendência e relações de posição devem ser satisfeitas simultaneamente A estratégia permite aos utilizadores habilitar ou desactivar de forma flexível o reconhecimento de padrões específicos através de definições de parâmetros.

Vantagens da estratégia

  1. abrangência: abrange os dez padrões de candelabro mais representativos, capazes de captar diferentes tipos de sinais de reversão do mercado
  2. Flexibilidade: Os utilizadores podem escolher livremente combinações de padrões com base nas condições do mercado e no estilo pessoal de negociação
  3. Visualização: sistema de marcação clara fornece visualização intuitiva de locais e tipos de padrões
  4. Automação: Processo de julgamento totalmente programado elimina o julgamento humano subjetivo e emocional
  5. Praticidade: uma lógica de estratégia clara facilita a combinação com outros indicadores técnicos ou sistemas de negociação

Riscos estratégicos

  1. Risco de atraso: a confirmação do padrão requer esperar o fechamento da vela, potencialmente causando leves atrasos de entrada
  2. Risco de sinais falsos: Confiar apenas nos padrões de velas pode gerar numerosos sinais falsos em mercados agitados
  3. Dependência do ambiente de mercado: a estratégia tem um melhor desempenho em mercados em tendência, mas pode ter um desempenho inferior em mercados variados
  4. Risco de definição de parâmetros: permitir um número excessivo de reconhecimentos de padrões pode conduzir a sinais superlotados que afetam o julgamento
  5. Risco de controlo das perdas de paragem: a estratégia não possui mecanismos integrais de controlo das perdas de paragem, o que exige medidas adicionais de controlo dos riscos

Orientações para a otimização da estratégia

  1. Implementar filtragem de tendência: combinar com médias móveis ou indicadores de tendência para filtrar sinais de contra-tendência
  2. Adicionar confirmação de volume: Validar a eficácia do padrão através de alterações de volume
  3. Melhorar o controlo de riscos: adicionar funções dinâmicas de fixação de metas de stop-loss e lucro
  4. Otimizar os parâmetros de padrão: ajustar os parâmetros de reconhecimento de padrão para diferentes mercados e prazos
  5. Adicionar Peso de Padrão: Configure diferentes sistemas de ponderação de sinal com base na confiabilidade do padrão

Resumo

Esta é uma estratégia de negociação de reconhecimento de padrões de velas bem projetada e logicamente clara. Implementa a análise técnica tradicional e os julgamentos de padrões de velas mais comumente usados por meio de programação, fornecendo aos comerciantes uma ferramenta de negociação objetiva e sistemática. Embora tenha algumas limitações inerentes, através de otimização apropriada e combinação com outras ferramentas técnicas, esta estratégia pode fornecer sinais de referência valiosos para decisões de negociação. O design modular da estratégia também fornece uma boa base para expansão funcional e otimização de desempenho subsequentes.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Author: Raymond Ngobeni
strategy('Candlestick Pattern Strategy [Ubaton]', 'Ubaton - Candlestick Pattern Strategy', overlay = true, max_labels_count = 500, max_lines_count = 500, max_boxes_count = 500)

// User Inputs: Enable/Disable Patterns
// Bullish Patterns
enableHammer = input.bool(true, "Show Hammer")
enableBullEngulfing = input.bool(true, "Show Bullish Engulfing")
enablePiercingLine = input.bool(true, "Show Piercing Line")
enableMorningStar = input.bool(true, "Show Morning Star")
enableThreeWhiteSoldiers = input.bool(true, "Show Three White Soldiers")

// Bearish Patterns
enableHangingMan = input.bool(true, "Show Hanging Man")
enableBearEngulfing = input.bool(true, "Show Bearish Engulfing")
enableDarkCloudCover = input.bool(true, "Show Dark Cloud Cover")
enableEveningStar = input.bool(true, "Show Evening Star")
enableThreeBlackCrows = input.bool(true, "Show Three Black Crows")

// Helper Functions
isHammer() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize

isBullishEngulfing() =>
    close[1] < open[1] and close > open and open <= close[1] and close >= open[1]

isPiercingLine() =>
    close[1] < open[1] and close > close[1] + (open[1] - close[1]) * 0.5 and close < open[1]

isMorningStar() =>
    close[2] < open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close > open

isThreeWhiteSoldiers() =>
    close > open and close[1] > open[1] and close[2] > open[2] and open > close[1] and open[1] > close[2]

isHangingMan() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize and close < open

isBearishEngulfing() =>
    close[1] > open[1] and close < open and open >= close[1] and close <= open[1]

isDarkCloudCover() =>
    close[1] > open[1] and open > close[1] and close < open[1] and close < close[1] + (open[1] - close[1]) * 0.5

isEveningStar() =>
    close[2] > open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close < open

isThreeBlackCrows() =>
    close < open and close[1] < open[1] and close[2] < open[2] and open < close[1] and open[1] < close[2]

// Detect Patterns
// Bullish
hammerDetected = enableHammer and isHammer()
bullEngulfDetected = enableBullEngulfing and isBullishEngulfing()
piercingDetected = enablePiercingLine and isPiercingLine()
morningStarDetected = enableMorningStar and isMorningStar()
threeWhiteDetected = enableThreeWhiteSoldiers and isThreeWhiteSoldiers()

// Bearish
hangingManDetected = enableHangingMan and isHangingMan()
bearEngulfDetected = enableBearEngulfing and isBearishEngulfing()
darkCloudDetected = enableDarkCloudCover and isDarkCloudCover()
eveningStarDetected = enableEveningStar and isEveningStar()
threeBlackDetected = enableThreeBlackCrows and isThreeBlackCrows()

// Plot Bullish Patterns
plotshape(enableHammer and hammerDetected, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(enableBullEngulfing and bullEngulfDetected, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.labelup, text="Engulf")
plotshape(enablePiercingLine and piercingDetected, title="Piercing Line", location=location.belowbar, color=color.green, style=shape.labelup, text="Piercing")
plotshape(enableMorningStar and morningStarDetected, title="Morning Star", location=location.belowbar, color=color.green, style=shape.labelup, text="Morning")
plotshape(enableThreeWhiteSoldiers and threeWhiteDetected, title="Three White Soldiers", location=location.belowbar, color=color.green, style=shape.labelup, text="3 Soldiers")

// Plot Bearish Patterns
plotshape(enableHangingMan and hangingManDetected, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging")
plotshape(enableBearEngulfing and bearEngulfDetected, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulf")
plotshape(enableDarkCloudCover and darkCloudDetected, title="Dark Cloud Cover", location=location.abovebar, color=color.red, style=shape.labeldown, text="Dark Cloud")
plotshape(enableEveningStar and eveningStarDetected, title="Evening Star", location=location.abovebar, color=color.red, style=shape.labeldown, text="Evening")
plotshape(enableThreeBlackCrows and threeBlackDetected, title="Three Black Crows", location=location.abovebar, color=color.red, style=shape.labeldown, text="3 Crows")

// Strategy Execution
if hammerDetected or bullEngulfDetected or piercingDetected or morningStarDetected or threeWhiteDetected
    strategy.entry("Bullish Entry", strategy.long)

if hangingManDetected or bearEngulfDetected or darkCloudDetected or eveningStarDetected or threeBlackDetected
    strategy.entry("Bearish Entry", strategy.short)

Relacionados

Mais.