Estrutura de fuga e estratégia de negociação inteligente multicondicional de confirmação de volume

BOS SMA ATR TP SL
Data de criação: 2024-12-20 16:15:43 última modificação: 2024-12-20 16:15:43
cópia: 3 Cliques: 523
1
focar em
1664
Seguidores

Estrutura de fuga e estratégia de negociação inteligente multicondicional de confirmação de volume

Visão geral

Trata-se de uma estratégia de negociação inteligente baseada na estrutura de breakout (BOS) e na confirmação de volume de transação. A estratégia é baseada na monitorização de preços que ultrapassam altos ou baixos prévios e combina a confirmação de amplificação de volume de transação para formar um sinal de negociação. A estratégia usa um mecanismo de verificação de condições múltiplas, incluindo requisitos de número de confirmações consecutivas e configurações de stop loss dinâmicas, para aumentar a confiabilidade da negociação e a capacidade de controle de risco.

Princípio da estratégia

A lógica central da estratégia inclui os seguintes elementos-chave:

  1. Identificação de altos e baixos estruturais através do cálculo de máximos e mínimos de preços em um determinado período
  2. Base de transação calculada com a média móvel para determinar se a transação atual aumentou significativamente
  3. Número acumulado de confirmações múltiplas quando o preço ultrapassa os picos anteriores e o volume de transação aumenta
  4. Número acumulado de confirmações em branco quando o preço cai de uma baixa anterior e o volume de transação aumenta
  5. O sinal de transação só é acionado quando o número de confirmações especificado é atingido
  6. Preço de stop-loss baseado em percentagem após a construção do depósito

Vantagens estratégicas

  1. Mecanismos de verificação de múltiplos termos aumentam a confiabilidade dos sinais de transação
  2. Combinação de indicadores de volume de transação para evitar erros de julgamento causados por brechas falsas
  3. Utilização de mecanismos de confirmação contínua, redução da frequência de operações e melhoria da taxa de vitória
  4. Atividade de stop-loss com ajuste automático de saída de acordo com o preço de entrada
  5. A lógica da estratégia é clara, os parâmetros são ajustáveis e adaptáveis

Risco estratégico

  1. Mercados em turbulência podem ter brechas falsas frequentes, resultando em perdas contínuas
  2. A paralisação pode não ser oportuna em um cenário de forte volatilidade
  3. Mecanismos de confirmação podem atrasar a entrada e fazer com que percam o melhor preço
  4. Os critérios de avaliação do volume de transações são fixos e não se adaptam muito bem às mudanças no mercado Solução:
  • Introdução de indicadores de volatilidade de mercado, parâmetros de ajuste dinâmico
  • Aumentar os filtros de tendência e reduzir os falsos sinais de mercado
  • Otimização da lógica de stop loss e flexibilidade de stop loss
  • Conceber métodos de cálculo de barreiras de transação adaptáveis

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

  1. Aumentar os indicadores de tendência, como o sistema de médias móveis, para negociar apenas na direção da tendência
  2. Introdução de indicadores ATR para ajustar dinamicamente a distância de parada e aumentar a flexibilidade do controle de vento
  3. Mecanismo de avaliação de depreciação do volume de transação adaptado à volatilidade do projeto
  4. Adicione o filtro de tempo para evitar períodos de alto risco
  5. Otimização do mecanismo de confirmação para aumentar a eficiência da admissão, garantindo a confiabilidade

Resumir

Trata-se de um sistema de estratégias que combina a teoria clássica da análise técnica com métodos modernos de negociação quantitativa. Com a verificação de múltiplos termos e o controle rigoroso do risco, a estratégia tem uma boa estabilidade e confiabilidade.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BOS and Volume Strategy with Confirmation", overlay=true)

// Parameters
swingLength = input.int(20, title="Swing Length", minval=1)
volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1)
volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1)
takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01)
stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01)  // New parameter for stop loss
atrLength = input.int(14, title="ATR Length")
confirmationBars = input.int(2, title="Confirmation Bars", minval=1)

// Calculate Swing Highs and Lows
swingHigh = ta.highest(high, swingLength)[1]
swingLow = ta.lowest(low, swingLength)[1]

// Calculate Volume Moving Average
volumeSMA = ta.sma(volume, volumeSMA_length)
highVolume = volume > (volumeSMA * volumeMultiplier)

// Break of Structure Detection with Confirmation
var int bullishCount = 0
var int bearishCount = 0

if (close > swingHigh and highVolume)
    bullishCount := bullishCount + 1
    bearishCount := 0
else if (close < swingLow and highVolume)
    bearishCount := bearishCount + 1
    bullishCount := 0
else
    bullishCount := 0
    bearishCount := 0

bullishBOSConfirmed = (bullishCount >= confirmationBars)
bearishBOSConfirmed = (bearishCount >= confirmationBars)

// Entry and Exit Conditions
var float entryPrice = na  // Declare entryPrice as a variable

if (bullishBOSConfirmed and strategy.position_size <= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Long", strategy.long)

if (strategy.position_size > 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 - stopLossPercentage)
    strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice)

if (bearishBOSConfirmed and strategy.position_size >= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Short", strategy.short)

if (strategy.position_size < 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 + stopLossPercentage)
    strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice)

// Plot Swing Highs and Lows for Visualization
plot(swingHigh, title="Swing High", color=color.green, linewidth=1)
plot(swingLow, title="Swing Low", color=color.red, linewidth=1)