Estratégia de stop loss de rastreamento dinâmico inteligente multinível com base em Bandas de Bollinger e ATR

BB ATR MA SMA EMA SMMA WMA VWMA SD
Data de criação: 2024-12-11 14:52:24 última modificação: 2024-12-11 14:52:24
cópia: 2 Cliques: 363
1
focar em
1617
Seguidores

Estratégia de stop loss de rastreamento dinâmico inteligente multinível com base em Bandas de Bollinger e ATR

Visão geral

A estratégia é um sistema de negociação inteligente baseado nos indicadores Brin Belt e ATR, combinado com um mecanismo de stop-loss em vários níveis. A estratégia gerencia o risco principalmente através da identificação de sinais de reversão perto do trajeto do Brin Belt, e usa um método de stop-loss de rastreamento dinâmico. O sistema foi projetado para atingir um objetivo de ganho de 20% e um ponto de parada de 12%, ao mesmo tempo em que realiza um stop-loss de rastreamento dinâmico em combinação com o indicador ATR, que pode dar espaço suficiente para a tendência enquanto protege os lucros.

Princípio da estratégia

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

  1. Condições de entrada: requerem que o pára-quedas vermelho toque o pára-quedas verde após a descida da faixa de Brin, uma forma que geralmente indica um possível sinal de reversão.
  2. Opções de média móvel: Suporte a vários tipos de média móvel (SMA, EMA, SMMA, WMA, VWMA), usando por padrão 20 ciclos SMA.
  3. Parâmetros de banda de Brin: Usando 1,5 vezes o desvio padrão como largura de banda, esta configuração é mais conservadora do que o tradicional desvio padrão de 2 vezes.
  4. Mecanismos de suspensão: estabeleça uma meta de lucro inicial de 20%.
  5. Mecanismo de Stop Loss: Configurar um limite de proteção de stop loss de 12%
  6. Perda de rastreamento dinâmico:
    • Ativar o tracking de stop loss do ATR quando o preço atingir o nível de ganho alvo
    • Ativar o ATR após tocar na correia de Brin
    • Ajuste dinâmico do ATR para rastrear a distância de parada

Vantagens estratégicas

  1. Controle de riscos em vários níveis:
    • Capital de proteção de stop loss fixo
    • Dinâmico rastreamento de stop loss para bloquear lucros
    • A parada dinâmica desencadeada pela correia de Brin oferece proteção adicional
  2. Opções de média móvel flexível permitem que a estratégia se adapte a diferentes cenários de mercado
  3. O stop loss de tracking dinâmico combinado com o indicador ATR pode ser automaticamente ajustado de acordo com a volatilidade do mercado, evitando saídas prematuras
  4. O sinal de entrada, combinado com a morfologia do preço e os indicadores técnicos, aumenta a confiabilidade do sinal
  5. Suporte a gestão de posições e configuração de custos de transação, mais próximo do ambiente de negociação real

Risco estratégico

  1. Mercados de alta volatilidade podem levar a transações frequentes e aumentar os custos de transação
  2. O limiar fixo de 12% pode ser pequeno em alguns mercados altamente voláteis
  3. Os sinais de correia podem gerar falsos sinais em mercados de tendência
  4. A paralisação do ATR pode levar a uma maior retirada em situações de forte volatilidade Medidas de mitigação:
  • Recomenda-se o uso em períodos de tempo maiores (de 30 minutos a 1 hora)
  • A proporção de perda pode ser ajustada de acordo com as características específicas da variedade
  • Considere aumentar os filtros de tendência e reduzir os sinais falsos
  • Ajuste dinâmico do ATR para diferentes cenários de mercado

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

  1. Optimização de entrada:
  • Adicionar mecanismo de confirmação de volume de transação
  • Adição de sinais de filtragem de indicadores de intensidade de tendência
  • Considerar a inclusão de critérios auxiliares
  1. Optimização de Stop Loss:
  • Alteração do Stop Fix para Stop Dinâmico Baseado no ATR
  • Desenvolvimento de algoritmos de parada de perdas adaptativos
  • Ajuste a distância de parada de acordo com a flutuação da taxa
  1. Optimização da média móvel:
  • Testar diferentes combinações de ciclos
  • Estudo do ciclo de adaptação
  • Considere usar o comportamento de preços como uma alternativa à média móvel
  1. Optimização da gestão de posições:
  • Desenvolvimento de um sistema de gestão de posições baseado na volatilidade
  • Implementar um mecanismo para construir e reduzir posições em lotes
  • Adicionar controle de aberturas de risco

Resumir

A estratégia é construída através de um sistema de negociação de vários níveis através de indicadores de Brin e ATR, com uma abordagem de gestão dinâmica de entrada, parada de perdas e fechamento de lucros. A vantagem da estratégia reside no seu sistema de controle de risco completo e capacidade de adaptação às flutuações do mercado.

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

//@version=5
strategy("Demo GPT - Bollinger Bands Strategy with Tightened Trailing Stops", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

// Input settings
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = 1.5 // Standard deviation multiplier set to 1.5
offset = input.int(0, "Offset", minval=-500, maxval=500)
atrMultiplier = input.float(1.0, title="ATR Multiplier for Trailing Stop", minval=0.1) // ATR multiplier for trailing stop

// Time range filters
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")
in_date_range = true

// Moving average function
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// ATR Calculation
atr = ta.atr(length) // Use ATR for trailing stop adjustments

// Plotting
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))

// Candle color detection
isGreen = close > open
isRed = close < open

// Flags for entry and exit conditions
var bool redTouchedLower = false
var float targetPrice = na
var float stopLossPrice = na
var float trailingStopPrice = na

if in_date_range
    // Entry Logic: First green candle after a red candle touches the lower band
    if close < lower and isRed
        redTouchedLower := true
    if redTouchedLower and isGreen
        strategy.entry("Long", strategy.long)
        targetPrice := close * 1.2       // Set the target price to 20% above the entry price
        stopLossPrice := close * 0.88   // Set the stop loss to 12% below the entry price
        trailingStopPrice := na         // Reset trailing stop on entry
        redTouchedLower := false

    // Exit Logic: Trailing stop after 20% price increase
    if strategy.position_size > 0 and not na(targetPrice) and close >= targetPrice
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop after 20% increase
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop After 20% Increase")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Stop Loss: Exit if the price drops 12% below the entry price
    if strategy.position_size > 0 and not na(stopLossPrice) and close <= stopLossPrice
        strategy.close("Long", comment="Stop Loss Triggered")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Trailing Stop: Activate after touching the upper band
    if strategy.position_size > 0 and close >= upper and isGreen
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop Triggered")
        trailingStopPrice := na // Reset trailing stop
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price