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

Reconhecimento de padrões múltiplos e estratégia de negociação ao nível do SR

Autora:ChaoZhang, Data: 2024-12-05 16:30:14
Tags:SRPressão arterialTPFIBOATRSMA

img

Resumo

Este é um sistema de estratégia de negociação abrangente que combina reconhecimento de padrões de análise técnica múltipla com níveis de suporte e resistência. A estratégia funciona principalmente identificando padrões de fundo duplo (baixo de Adão e Eva), integrando níveis de retração de Fibonacci e utilizando linhas de suporte e resistência para decisões de negociação.

Princípios de estratégia

A estratégia emprega um mecanismo de verificação tripla para decisões de negociação: primeiro, identifica padrões de fundo duplo por meio de algoritmos específicos, incluindo o mais nítido Adam bottom e o mais arredondado Eve bottom; segundo, usa níveis de retracementos de Fibonacci (0,618 e 1,618) para determinar zonas-alvo; finalmente, confirma sinais de negociação por meio da verificação de níveis de suporte e resistência. Os sinais de negociação são gerados apenas quando as condições de reconhecimento de padrões, níveis de Fibonacci e níveis de suporte/resistência são simultaneamente atendidas. Especificamente, um sinal longo é acionado quando o nível de suporte/resistência está acima da extensão de 1,618 Fibonacci, enquanto um sinal curto é acionado quando o nível de suporte/resistência está abaixo da retracementos de 0,618 Fibonacci.

Vantagens da estratégia

  1. Mecanismos de verificação múltiplos aumentam consideravelmente a fiabilidade dos sinais de negociação
  2. Algoritmos de reconhecimento de padrões captam com precisão os pontos de virada do mercado
  3. Os níveis de Fibonacci fornecem zonas-alvo precisas
  4. A verificação do nível de suporte/resistência aumenta a segurança das negociações
  5. Parâmetros altamente ajustáveis adaptados às diferentes condições do mercado
  6. Um elevado grau de automação reduz o viés de julgamento subjetivo

Riscos estratégicos

  1. O reconhecimento de padrões pode ter latência, afetando o tempo de entrada
  2. Podem ocorrer sinais falsos em mercados altamente voláteis
  3. A eficácia dos níveis de suporte/resistência é influenciada pelas condições do mercado
  4. Configurações incorretas dos parâmetros podem levar a excesso de negociação
  5. Requer períodos de observação mais longos, potencialmente perdendo oportunidades rápidas

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

  1. Introduzir indicadores de volatilidade para filtrar as condições de mercado
  2. Adicionar filtros de tendência para melhorar a precisão do reconhecimento de padrões
  3. Otimizar os métodos de cálculo do nível de apoio/resistência
  4. Incluir indicadores de volume como confirmação
  5. Desenvolver mecanismos mais flexíveis de stop loss e take profit
  6. Implementar algoritmos de aprendizagem de máquina para melhorar a precisão do reconhecimento de padrões

Resumo

Esta estratégia constrói um sistema de negociação relativamente completo, utilizando de forma abrangente vários métodos de análise técnica, incluindo reconhecimento de padrões, níveis de Fibonacci e linhas de suporte / resistência. Sua força reside na alta confiabilidade fornecida por vários mecanismos de verificação, enquanto sua ajustabilidade permite adaptação a diferentes condições de mercado. Embora existam alguns riscos inerentes, através da otimização e melhoria contínuas, a estratégia mostra promessa de desempenho estável na negociação real.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Double Bottom with Support/Resistance Strategy - Aynet", overlay=true)

// Inputs
lookbackPeriod = input(21, "Lookback Period")
swingLowThreshold = input(1.5, "Swing Low Threshold")
fibLevel1 = input(0.618, "Fibonacci Level 1")
fibLevel3 = input(1.618, "Fibonacci Level 2")
srPeriod = input(21, "Support/Resistance Period") 
srThreshold = input(3, "Support/Resistance Touch Points")

// Support/Resistance Function
get_sr_level(idx) =>
    var level = 0.0
    var count = 0
    
    if bar_index % srPeriod == 0
        highCount = 0
        lowCount = 0
        for i = 0 to srPeriod - 1
            if math.abs(high[i] - high) < (high * 0.001)
                highCount += 1
            if math.abs(low[i] - low) < (low * 0.001)
                lowCount += 1
                
        if highCount >= srThreshold
            level := high
            count := highCount
        if lowCount >= srThreshold
            level := low
            count := lowCount
            
    [level, count]

// Pattern Detection Functions
isSwingLow(src, left, right) =>
    isLow = true
    for i = 0 to left + right
        if src[i] < src[right]
            isLow := false
    isLow

getSpikeSharpness(index) =>
    priceRange = high[index] - low[index]
    bodyRange = math.abs(close[index] - open[index])
    sharpness = priceRange / bodyRange
    sharpness

// Pattern Variables
var float firstBottom = na
var float secondBottom = na
var bool isAdam = false
var bool isEve = false
var float level1Value = na
var float level3Value = na

// Pattern Detection
bottom = isSwingLow(low, lookbackPeriod, lookbackPeriod)
if bottom
    sharpness = getSpikeSharpness(0)
    if na(firstBottom)
        firstBottom := low
        isAdam := sharpness > swingLowThreshold
    else if low <= firstBottom * 1.02 and low >= firstBottom * 0.98
        secondBottom := low
        isEve := sharpness <= swingLowThreshold

// Calculate Fibonacci
if not na(secondBottom)
    highPoint = ta.highest(high, lookbackPeriod)
    fibDistance = highPoint - math.min(firstBottom, secondBottom)
    level1Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel1
    level3Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel3

// Get S/R Level
[srLevel, srCount] = get_sr_level(0)

// Trading Logic
longCondition = srLevel > level3Value
shortCondition = srLevel < level1Value

if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// Reset Pattern
if high > ta.highest(high[1], lookbackPeriod)
    firstBottom := na
    secondBottom := na
    isAdam := false
    isEve := false
var table logo = table.new(position.top_right, 1, 1)
table.cell(logo, 0, 0, 'Double Bottom with Support/Resistance Strategy - Aynet', text_size=size.large, text_color=color.white)
// Plots
plot(level1Value, "0.236", color=color.rgb(245, 0, 0), style=plot.style_line)
plot(level3Value, "0.618", color=color.rgb(82, 166, 255), style=plot.style_line)
plot(srLevel, "S/R Level", color=color.white)

plotshape(bottom and not na(firstBottom) and na(secondBottom), "Adam Bottom", shape.circle, location.belowbar, color.green)
plotshape(bottom and not na(secondBottom), "Eve Bottom", shape.circle, location.belowbar, color.yellow)

Relacionados

Mais.