Estratégia de negociação de reconhecimento de padrões K-line combinados de vários períodos

JSC CP TS
Data de criação: 2024-12-11 11:04:35 última modificação: 2024-12-11 11:04:35
cópia: 0 Cliques: 480
1
focar em
1617
Seguidores

Estratégia de negociação de reconhecimento de padrões K-line combinados de vários períodos

Visão geral

A estratégia é um sistema de negociação automatizado baseado na identificação de formas K. Ele integra dez formas clássicas de K, incluindo cinco formas de otimismo ((linha de alfinete, engolir de cabeça, penetrar de linha, aurora e três soldados brancos) e cinco formas de baixa e baixa ((linha de cima, engolir de cabeça, céu nublado, aurora e três negros). A estratégia fornece aos comerciantes potenciais sinais de reversão de mercado e oportunidades de negociação através da identificação e análise em tempo real dessas formas.

Princípio da estratégia

O núcleo da estratégia é a programação para a identificação precisa de várias formas de linha K. Cada forma tem sua definição matemática única e seu julgamento condicional:

  1. Para as formas de linha K de uma única linha (como cordas de alho, cordas de suspensão), o julgamento é baseado principalmente na relação proporcional entre a entidade e a linha de sombra
  2. Para duas formas de linha K (por exemplo, linha de absorção, linha de penetração), é julgado pela comparação da relação de posição de preço de abertura e fechamento de duas linhas K adjacentes
  3. Para uma forma de três linhas K (como três soldados brancos, três piratas negros), é necessário simultaneamente satisfazer a direção de movimento e a relação de posição de três linhas K consecutivas. A política permite ao usuário a flexibilidade de ativar ou desativar a identificação de determinadas formas por meio de configuração de parâmetros.

Vantagens estratégicas

  1. Compreensão: abrange os dez tipos mais representativos de linhas K, capazes de capturar diferentes tipos de sinais de reversão de mercado
  2. Flexibilidade: os usuários podem escolher livremente o portfólio de formas que precisam ser identificadas, de acordo com o ambiente de mercado e o estilo de negociação individual
  3. Visualização: através de um sistema de marcação claro, mostra intuitivamente a localização e o tipo de ocorrência de várias formas
  4. Automação: processo de julgamento totalmente programado, evitando a subjetividade e a emocionalidade do julgamento humano
  5. Utilidade: lógica estratégica clara, fácil de usar em combinação com outros indicadores técnicos ou sistemas de negociação

Risco estratégico

  1. Risco de atraso: a confirmação da forma da linha K requer a espera do fechamento da linha K, o que pode causar um pequeno atraso no tempo de entrada
  2. Risco de falso sinal: em mercados de turbulência, o simples recurso a forma de linha K pode gerar mais falso sinal
  3. Dependência do cenário de mercado: a estratégia tem melhor desempenho em mercados de tendência clara, mas pode não ser tão eficaz em mercados horizontais
  4. Risco de configuração de parâmetros: o reconhecimento de formas excessivamente ativado pode levar ao sinal a ser muito denso, afetando o julgamento
  5. Risco de controle de prejuízos: a estratégia por si só não inclui um mecanismo de controle de prejuízos adequado e requer medidas adicionais de controle de riscos

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

  1. Introdução de filtros de tendência: em combinação com médias móveis ou indicadores de tendência, para filtrar os sinais de reversão
  2. Aumento da confirmação de volume de transação: a eficácia da forma de verificação através da mudança de volume de transação
  3. Melhor controle de risco: adição de stop loss dinâmico e função de configuração de metas de lucro
  4. Parâmetros de configuração de otimização: Ajustar parâmetros de configuração de identificação para diferentes mercados e períodos de tempo
  5. Adicionar peso de forma: configure diferentes sistemas de peso de sinal de acordo com a confiabilidade de diferentes formas

Resumir

Esta é uma estratégia de negociação de identificação de forma K linear, concebida de forma racional e lógica. Ela implementa de forma programada os julgamentos de forma K linear mais usados na análise técnica tradicional, fornecendo aos comerciantes uma ferramenta de negociação objetiva e sistematizada. Apesar de ter algumas limitações inerentes, a estratégia pode fornecer um sinal de referência valioso para decisões de negociação com a otimização adequada e em conjunto com outras ferramentas técnicas.

Código-fonte da estratégia
/*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)