Reconhecimento de múltiplos padrões e estratégia de negociação de percentil SR

SR BP TP FIBO ATR SMA
Data de criação: 2024-12-05 16:30:14 última modificação: 2024-12-05 16:30:14
cópia: 0 Cliques: 400
1
focar em
1617
Seguidores

Reconhecimento de múltiplos padrões e estratégia de negociação de percentil SR

Visão geral

Trata-se de um sistema de estratégias que combina a identificação de formas de análise técnica múltipla e níveis de resistência de suporte. A estratégia baseia-se principalmente na identificação de formas de fundo duplo (a forma de fundo de Adão e Eva), em combinação com níveis de regressão de Fibonacci e linhas de resistência de suporte para a tomada de decisões de negociação. O núcleo da estratégia está na verificação de indicadores técnicos multidimensionais para aumentar a confiabilidade dos sinais de negociação, ao mesmo tempo em que usa níveis de resistência de suporte como uma referência importante para o controle de risco.

Princípio da estratégia

A estratégia utiliza um mecanismo de tripla verificação para a tomada de decisões de negociação: primeiro, através de um algoritmo específico para identificar formas de duplo fundo, incluindo o “fundo de Adão” mais afiado e o “fundo de Eva” mais arredondado; em seguida, usando os níveis de regressão de Fibonacci ((0.618 e 1.618) para determinar a área de destino; e, finalmente, através da verificação dos níveis de resistência de suporte para confirmar a negociação. A geração de sinais de negociação requer simultaneamente a identificação da forma, o nível de Fibonacci e o nível de resistência de suporte.

Vantagens estratégicas

  1. Mecanismos de verificação múltipla aumentam a confiabilidade dos sinais de transação
  2. Algoritmos de reconhecimento de forma para capturar pontos de inflexão de mercado com precisão
  3. Combinado com níveis de Fibonacci, fornece uma área de alvo precisa
  4. Verificação de níveis de resistência de suporte aumenta a segurança das transações
  5. Os parâmetros de estratégia são altamente ajustáveis ​​e podem se adaptar a diferentes ambientes de mercado
  6. Nível elevado de automação, reduzindo a distorção de julgamentos subjetivos

Risco estratégico

  1. Identificação de formas pode ser atrasada e afetar o tempo de entrada
  2. Falso sinal em mercados de alta volatilidade
  3. A eficácia dos níveis de resistência de suporte é influenciada pelo ambiente de mercado
  4. Parâmetros mal definidos podem levar a transações excessivas
  5. A maior parte das observações são feitas em intervalos mais longos, podendo perder algumas oportunidades rápidas.

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

  1. Introdução de indicadores de volatilidade para filtrar o cenário de mercado
  2. Adição de filtros de tendência para melhorar a precisão do reconhecimento de formas
  3. Método de cálculo para otimizar os níveis de resistência de suporte
  4. Adição de indicadores de volume de transação como confirmação auxiliar
  5. Desenvolvimento de mecanismos mais flexíveis de prevenção de danos
  6. Introdução de algoritmos de aprendizagem de máquina para melhorar a precisão da identificação de formas

Resumir

A estratégia, através da aplicação integrada de métodos de análise técnica múltiplos, como a identificação de formas, níveis de Fibonacci e linhas de resistência de suporte, constrói um sistema de negociação relativamente completo. A vantagem da estratégia é que seu mecanismo de verificação múltipla oferece alta confiabilidade, e sua ajustabilidade também permite que ela se adapte a diferentes ambientes de mercado.

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