Negociação de Retração Avançada - Ruptura de Triângulo com Estratégia de Confirmação de Preço por Volume

SMA RSI TSL EMA 三角形突破 交易量确认 动态止损 趋势跟踪 斐波那契
Data de criação: 2025-06-03 09:57:46 última modificação: 2025-06-03 09:57:46
cópia: 0 Cliques: 314
2
focar em
319
Seguidores

Negociação de Retração Avançada - Ruptura de Triângulo com Estratégia de Confirmação de Preço por Volume Negociação de Retração Avançada - Ruptura de Triângulo com Estratégia de Confirmação de Preço por Volume

Visão geral

A estratégia de retracção de alto nível é uma estratégia de negociação quantitativa que combina a identificação da forma técnica, a confirmação do volume de negociação e o gerenciamento dinâmico do risco. A estratégia é projetada para otimização de gráficos de 1 hora e oferece duas configurações de entrada independentes, baseadas nos princípios de ruptura do triângulo e confirmação do preço.

Princípio da estratégia

A estratégia funciona com base em duas configurações de entrada-chave e um mecanismo de saída cuidadosamente projetado:

Configuração de entrada 1 - Golden Triangle Break

  • Utilize o eixo do ponto mais próximo para detectar a forma triangular
  • Confirmação de uma ruptura de tendência quando o preço fechar acima do topo do triângulo e ao mesmo tempo acima do SMA de 50 ciclos
  • A entrada foi marcada por um fechamento.
  • Esta configuração é especialmente adequada para capturar o movimento inicial de negociação após a integração

Configuração de entrada 2 - Confirmação de preços e volumes

  • O aumento do volume de transações baseado na regressão à média:
    • O preço começou a cair abaixo do 50 SMA e depois voltou a fechar acima dele
    • Requer pelo menos um “dia de fechamento” (o preço de fechamento atual é maior do que o preço de fechamento anterior)
    • O volume de negociação deve ser superior ao seu SMA de 50 ciclos e superior a cada dia dos 4 dias anteriores
  • Entrada no dia de encerramento da confirmação de transação
  • É especialmente eficaz quando o padrão do triângulo não é visível, mas acumula forte

Estratégia de saída - tracking stop loss dinâmico

  • O limite de perda inicial é 10% abaixo do preço máximo alcançado após a entrada.
  • Quando os lucros atingem 10%, o tracking stop-loss é ajustado para 5%.
  • Esse mecanismo permite que os traders mantenham a tendência enquanto mantêm os lucros.

Na implementação do código, a estratégia usa um pivot simplificado para identificar a forma do triângulo e confirmar o movimento do preço comparando o preço atual com o SMA. Para a confirmação do volume de negociação, a estratégia verifica se o volume de negociação é maior do que sua média móvel e o volume de negociação dos períodos anteriores.

Vantagens estratégicas

  1. Mecanismo de dupla entradaA estratégia é capaz de se adaptar a diferentes ambientes de mercado, aumentando a probabilidade de capturar oportunidades de negociação favoráveis, fornecendo duas configurações de entrada independentes. A configuração 1 pode capturar brechas quando o mercado está em um período de integração visível; A configuração 2 pode funcionar quando o padrão de mercado não é tão visível, mas há fortes sinais de acumulação.

  2. Integração de Gestão de RiscosO mecanismo de parada de perda de rastreamento dinâmico incorporado adapta-se automaticamente às flutuações do mercado, permitindo o crescimento dos lucros ao mesmo tempo que protege o capital. Em particular, a função de parada de perda de aperto automático quando os lucros atingem a barreira predefinida, equilibra efetivamente a contradição entre o bloqueio de lucros e a fuga de lucros.

  3. Filtragem de Falso AvançoA estratégia reduz o risco de falsas rupturas, combinando filtragem SMA e confirmação de volume de transação. Os preços devem não apenas romper a forma, mas também permanecer acima da SMA. Para a configuração 2, é necessário um suporte significativo de volume de transação, o que melhora significativamente a qualidade do sinal.

  4. Auxílio visualA estratégia oferece uma abundância de indicadores visuais, incluindo a coloração de fundo durante a negociação, painéis de instrumentos em tempo real e vários elementos gráficos, permitindo que os comerciantes monitorem facilmente o estado e os sinais da estratégia.

  5. Optimização de prazos flexíveis: Embora a estratégia tenha sido otimizada para gráficos de 1 hora, seus parâmetros podem ser ajustados para adaptar-se a diferentes quadros de tempo, aumentando o alcance da estratégia.

Risco estratégico

  1. Dependência de condições de mercadoA estratégia funciona melhor em mercados horizontais a otimistas e pode não funcionar bem em mercados de forte tendência de baixa ou de alta volatilidade. No cenário de um mercado de baixa, aumenta o risco de falsas rupturas e pode levar a perdas contínuas.

  2. Ponto de deslizamento e risco de execuçãoEm negociações reais, especialmente em mercados de baixa liquidez, os pontos de entrada e de parada podem experimentar deslizamentos que afetam o desempenho geral da estratégia. Para mitigar esse risco, pode-se considerar o uso de lista de preço limite em vez de lista de preço de mercado.

  3. Desafios de optimização de parâmetrosA estratégia depende de vários parâmetros, como o comprimento do SMA, a porcentagem de parada, etc., que precisam ser otimizados para um determinado mercado e período de tempo. A configuração inadequada dos parâmetros pode levar a um excesso de ajuste ou mau desempenho.

  4. Risco de excesso de negociaçãoEm certas condições de mercado, as estratégias podem gerar excesso de sinais, resultando em sobre-negociação e aumento de custos de transação. A implementação de filtros adicionais ou períodos de arrefecimento pode ajudar a reduzir esse risco.

  5. Optimização de equilíbrio de stop lossEmbora o mecanismo de stop loss dinâmico seja uma vantagem para a estratégia, a configuração de stop loss excessivamente apertada pode levar a saídas antecipadas de negócios lucrativos, enquanto a configuração excessivamente ampla pode levar a retornos de lucro. O parâmetro de stop loss precisa ser cuidadosamente ajustado de acordo com a volatilidade de um determinado mercado.

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

  1. Adicionar filtro de tendênciasA integração de indicadores de tendência mais amplos (como as médias móveis mais longas ou ADX) pode ajudar a estratégia a negociar apenas na direção favorável do mercado. Por exemplo, pode-se adicionar condições que permitem a entrada de peões apenas quando os SMAs longos (como o ciclo 200) estão inclinados para cima.

  2. Otimização da lógica de confirmação de volume de transação: A confirmação de volume de negócios atual exige um volume de negócios maior do que os 4 ciclos anteriores, o que pode ser demasiado ou não suficientemente rigoroso, dependendo das condições do mercado. Realizar o desvalorização de volume de negócios adaptável, que pode melhorar a eficácia da configuração 2 de acordo com a dinâmica de volatilidade do mercado.

  3. Integrar filtros de tempoAlguns períodos de negociação podem ser mais adequados para esta estratégia do que outros. Adicionar filtros de tempo, evitando a negociação em períodos desfavoráveis (como períodos de alta volatilidade antes da abertura ou do fechamento do mercado), pode melhorar o desempenho geral.

  4. Implementação de um bloqueio parcial dos lucrosA estratégia de saída atual é binária: “possuir todo ou sair todo”. Um sistema de saída por lotes, que reduz a dimensão da posição gradualmente à medida que os lucros aumentam, pode bloquear parte dos lucros enquanto mantém algum potencial ascendente.

  5. Adicionar confirmação de ativos relevantesEm alguns mercados, a confirmação de ativos relevantes pode melhorar a qualidade do sinal. Por exemplo, na negociação de ações, a força do setor ou da indústria pode servir como um filtro adicional; na divisão, o comportamento dos pares de moedas relevantes pode fornecer confirmação adicional.

  6. Inclusão de ajustamentos de volatilidade de mercadoA estratégia pode ser melhor adaptada a diferentes condições de mercado. Use um stop mais apertado em um ambiente de baixa volatilidade e um stop mais amplo em um ambiente de alta volatilidade.

Resumir

A estratégia de ruptura do triângulo de retracção superior com confirmação de quantidade de preço oferece uma abordagem de negociação abrangente, combinando a identificação da forma técnica, os princípios da dinâmica e a análise do volume de negociação. Ao fornecer duas configurações de entrada complementares, a estratégia mantém a flexibilidade em diferentes condições de mercado, enquanto seu mecanismo de parada de rastreamento dinâmico oferece gerenciamento de risco otimizado.

A principal vantagem da estratégia reside na sua variedade de critérios de entrada e na gestão integrada de riscos, o que a torna adequada para vários estilos de negociação, desde o dia a dia até o período de curto prazo. No entanto, a dependência das condições de mercado e os desafios de otimização de parâmetros são os principais riscos a serem atendidos.

Os traders podem aumentar ainda mais o desempenho da estratégia adicionando filtros de tendência, otimizando a lógica de confirmação de volume de negociação ou implementando o ajuste de volatilidade. Finalmente, a estratégia fornece uma estrutura sólida que pode ser personalizada de acordo com as preferências de risco pessoais e as características do mercado, tornando-se uma ferramenta valiosa para os traders que buscam uma abordagem de negociação orientada por tecnologia e controlada pelo risco.

Código-fonte da estratégia
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © eemani123

//@version=5
strategy("Golden Triangle Strategy (1H, Setup 1 & 2)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
smaLength = input.int(34, title="SMA Length (1H Optimized)", minval=1)
volumeSmaLength = input.int(34, title="Volume SMA Length", minval=1)
trailingStopPct = input.float(6.0, title="Initial Trailing Stop Loss (%)", minval=0.1)
tightenPct = input.float(5.0, title="Tightened TSL (%)", minval=0.1)
profitTrigger = input.float(10.0, title="Tighten TSL After Profit (%)", minval=1)
maxLookback = input.int(10, title="Max Lookback Bars for Setup 2", minval=1)
pivotStrength = input.int(2, title="Pivot Strength (Shorter for 1H)", minval=1)

// === SMA Calculations ===
smaPrice = ta.sma(close, smaLength)
smaVolume = ta.sma(volume, volumeSmaLength)

// === Setup 1: Golden Triangle (simplified with pivots) ===
pivotHigh = ta.pivothigh(high, pivotStrength, pivotStrength)
pivotLow = ta.pivotlow(low, pivotStrength, pivotStrength)

var float triangleTop = na
var float triangleBottom = na

if not na(pivotHigh)
    triangleTop := pivotHigh
if not na(pivotLow)
    triangleBottom := pivotLow

triangleBreakout = ta.crossover(close, triangleTop) and close > smaPrice
enterSetup1 = triangleBreakout

// === Setup 2: Price & Volume Confirmation ===
priceBelowSMA = ta.barssince(close < smaPrice) <= maxLookback
priceConfirm = close > smaPrice and close > close[1]
volumeConfirm = volume > smaVolume and volume > volume[1] and volume > volume[2] and volume > volume[3] and volume > volume[4]
enterSetup2 = priceConfirm and priceBelowSMA and volumeConfirm

// === Entry & TSL Tracking ===
var bool inTradeSetup1 = false
var bool inTradeSetup2 = false
var float entryPrice1 = na
var float entryPrice2 = na
var float highestSinceEntry1 = na
var float highestSinceEntry2 = na
var float trailingStop1 = na
var float trailingStop2 = na

// === Entry Conditions ===
if enterSetup1 and not inTradeSetup1
    strategy.entry("Buy Setup 1", strategy.long)
    entryPrice1 := close
    highestSinceEntry1 := close
    inTradeSetup1 := true

if enterSetup2 and not inTradeSetup2
    strategy.entry("Buy Setup 2", strategy.long)
    entryPrice2 := close
    highestSinceEntry2 := close
    inTradeSetup2 := true

// === Update Trailing Stops with Tightening ===
if inTradeSetup1
    highestSinceEntry1 := math.max(highestSinceEntry1, high)
    profit1 = (highestSinceEntry1 - entryPrice1) / entryPrice1 * 100
    activePct1 = profit1 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop1 := highestSinceEntry1 * (1 - activePct1 / 100)

if inTradeSetup2
    highestSinceEntry2 := math.max(highestSinceEntry2, high)
    profit2 = (highestSinceEntry2 - entryPrice2) / entryPrice2 * 100
    activePct2 = profit2 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop2 := highestSinceEntry2 * (1 - activePct2 / 100)

// === Exit Conditions ===
if inTradeSetup1 and close < trailingStop1
    strategy.close("Buy Setup 1", comment="TSL Hit - Setup 1")
    inTradeSetup1 := false
    entryPrice1 := na
    highestSinceEntry1 := na
    trailingStop1 := na

if inTradeSetup2 and close < trailingStop2
    strategy.close("Buy Setup 2", comment="TSL Hit - Setup 2")
    inTradeSetup2 := false
    entryPrice2 := na
    highestSinceEntry2 := na
    trailingStop2 := na

// === Plotting ===
plot(smaPrice, color=color.orange, title="SMA")
//plot(triangleTop, title="Triangle Top", color=color.red, style=plot.style_linebr, linewidth=2)
//plot(triangleBottom, title="Triangle Bottom", color=color.green, style=plot.style_linebr, linewidth=2)
plot(inTradeSetup1 ? trailingStop1 : na, color=color.red, title="Trailing Stop - Setup 1", linewidth=2,style=plot.style_linebr)
plot(inTradeSetup2 ? trailingStop2 : na, color=color.blue, title="Trailing Stop - Setup 2", linewidth=2,style=plot.style_linebr)

plotshape(enterSetup1, title="Triangle Breakout Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(enterSetup2, title="Volume Confirmed Entry", location=location.belowbar, color=color.blue, style=shape.circle, size=size.small)

// === Alerts ===
alertcondition(enterSetup1, title="Setup 1 Buy", message="Golden Triangle Breakout (Setup 1) - BUY")
alertcondition(enterSetup2, title="Setup 2 Buy", message="Volume + Price Confirmation (Setup 2) - BUY")

// === Background highlight during trades ===
bgcolor(inTradeSetup1 or inTradeSetup2 ? color.new(color.green, 85) : na, title="In-Trade Highlight")


// === Weekly Fibonacci Pivot Levels (R3 / S3) ===
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyLow = request.security(syminfo.tickerid, "W", low)
weeklyClose = request.security(syminfo.tickerid, "W", close)

weeklyPivot = (weeklyHigh + weeklyLow + weeklyClose) / 3
weeklyRange = weeklyHigh - weeklyLow
fibR3 = weeklyPivot + 1.000 * weeklyRange
fibS3 = weeklyPivot - 1.000 * weeklyRange

// === Plot R3 and S3 ===
plot(fibR3, title="Weekly Fib R3", color=color.fuchsia, linewidth=2, style=plot.style_circles)
plot(fibS3, title="Weekly Fib S3", color=color.teal, linewidth=2, style=plot.style_circles)
// === Weekly Fibonacci Pivot Levels (R3 / S3) ===