Estratégia de negociação de breakout de alto retorno proporcional com base na estrutura de preços

RR SL TP ATH ATL
Data de criação: 2025-02-18 15:42:01 última modificação: 2025-02-18 15:42:01
cópia: 1 Cliques: 393
1
focar em
1617
Seguidores

Estratégia de negociação de breakout de alto retorno proporcional com base na estrutura de preços

Visão geral

Trata-se de uma estratégia de negociação de ruptura baseada na ação de preços puros, projetada com um alto risco de retorno de 1: 5. A estratégia é executada através da identificação de rupturas nos níveis críticos de preços e combina a estrutura dinâmica do mercado com a definição de objetivos de parada e ganho. A estratégia não depende de nenhum indicador técnico e toma decisões de negociação exclusivamente com base na ação de preços em tempo real.

Princípio da estratégia

A lógica central da estratégia inclui as seguintes partes principais:

  1. Identificação de máximos e mínimos de preços através de um período retrospectivo, formando pontos de referência de ruptura
  2. Abrir uma posição a mais quando o preço de fechamento ultrapassa a alta anterior, abrir uma posição a zero quando a baixa anterior é ultrapassada
  3. Posições de parada dinâmica baseadas em flutuações recentes, posições de parada em pontos baixos e posições de parada em pontos altos
  4. Posicionamento do alvo de lucro com base na proporção de risco-retorno de 1:5
  5. Estabeleça um limite máximo de transações por dia para evitar transações excessivas Todo o processo de negociação é baseado no comportamento dos preços, sem usar nenhum indicador técnico como referência.

Vantagens estratégicas

  1. Negociação de comportamento de preço puro, evitando interferências causadas pelo atraso do indicador
  2. Desenho de alto risco-retorno, com um retorno potencial de 5 vezes o risco por transação
  3. Paradas dinâmicas, ajustadas de acordo com a estrutura do mercado
  4. Sinais de transação claros e marcas visuais para facilitar a execução de transações
  5. Os parâmetros são altamente ajustáveis ​​para se adaptarem a diferentes ambientes de mercado
  6. Controle de risco rigoroso, incluindo restrição de número de transações por dia

Risco estratégico

  1. Falsos sinais de ruptura podem ser frequentes em mercados em turbulência
  2. A alta taxa de retorno de risco pode levar a uma taxa de vitória relativamente baixa
  3. O retorno após a ruptura pode desencadear o stop loss
  4. Mudanças na volatilidade do mercado podem afetar a performance da estratégia
  5. Preços mais elevados são necessários para atingir os objetivos de lucro.

Medidas de mitigação:

  • Usar esta estratégia em mercados em tendência
  • Evitar transações durante notícias importantes
  • Ajuste razoável do tamanho da posição
  • Parâmetros de verificação e otimização regulares

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

  1. Adição de filtros de tendência para negociar apenas na direção da tendência principal
  2. Adição de mecanismo de confirmação de transação para aumentar a confiabilidade da brecha
  3. Taxa de risco-retorno ajustada à volatilidade
  4. Introdução de análises de múltiplos períodos de tempo para melhorar a precisão das transações
  5. Desenvolver mecanismos mais inteligentes de parada de perdas, como o rastreamento de parada de perdas
  6. Aumentar a capacidade de identificação do cenário de mercado e ajustar os parâmetros de estratégia de forma adaptativa

Resumir

Trata-se de uma estratégia de negociação de comportamento de preço rigorosamente concebida, com clareza lógica. É projetada com um alto índice de retorno de risco e busca lucros significativos ao mesmo tempo em que controla os riscos de forma eficaz.

Código-fonte da estratégia
/*backtest
start: 2024-02-19 00:00:00
end: 2024-11-14 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Filtered Price Action Breakout", overlay=true)

// === INPUTS ===
lookback = input.int(20, title="Breakout Lookback Period", minval=5)
stopLookback = input.int(10, title="Stop Loss Lookback Period", minval=3)
rrMultiplier = input.float(5.0, title="Risk-to-Reward Multiplier", step=0.1)
maxTradesPerDay = input.int(5, title="Max Trades Per Day", minval=1)

// Ensure there are enough bars for calculations
inRange = bar_index >= lookback

// === CALCULATIONS ===
// Highest high and lowest low over the 'lookback' period
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)

// Define breakout conditions (using previous bar's level)
bullBreakout = ta.crossover(close, highestHigh[1])
bearBreakout = ta.crossunder(close, lowestLow[1])

// Store breakout signals in variables to prevent inconsistencies
bullBreakoutSignal = bullBreakout
bearBreakoutSignal = bearBreakout

// Determine stop levels based on recent swing lows/highs
longStop = ta.lowest(low, stopLookback)
shortStop = ta.highest(high, stopLookback)

// Track number of trades per day (fixing boolean condition issue)
newDay = ta.change(time("D")) != 0
todayTrades = ta.barssince(newDay)
tradeCount = 0
if newDay
    tradeCount := 0
else
    tradeCount := tradeCount + 1

// === STRATEGY LOGIC: ENTRY & EXIT ===
if bullBreakoutSignal and tradeCount < maxTradesPerDay
    entryPrice = close
    stopLevel = longStop
    risk = entryPrice - stopLevel
    if risk > 0
        target = entryPrice + rrMultiplier * risk
        strategy.entry("Long", strategy.long)
        strategy.exit("Long Exit", from_entry="Long", stop=stopLevel, limit=target)
        tradeCount := tradeCount + 1
        
        // // Draw Markups
        // label.new(bar_index, entryPrice, text="Long Entry", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
        // line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.green, width=2)
        // line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.red, width=2, style=line.style_dotted)
        // line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
        // label.new(bar_index, stopLevel, text="Stop Loss", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_down)
        // label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_up)

if bearBreakoutSignal and tradeCount < maxTradesPerDay
    entryPrice = close
    stopLevel = shortStop
    risk = stopLevel - entryPrice
    if risk > 0
        target = entryPrice - rrMultiplier * risk
        strategy.entry("Short", strategy.short)
        strategy.exit("Short Exit", from_entry="Short", stop=stopLevel, limit=target)
        tradeCount := tradeCount + 1
        
        // // Draw Markups
        // label.new(bar_index, entryPrice, text="Short Entry", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
        // line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.red, width=2)
        // line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.green, width=2, style=line.style_dotted)
        // line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
        // label.new(bar_index, stopLevel, text="Stop Loss", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_up)
        // label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_down)

// === PLOTTING ===
plot(highestHigh, color=color.green, title="Highest High (Breakout Level)")
plot(lowestLow, color=color.red, title="Lowest Low (Breakout Level)")