Estratégia de acompanhamento de tendências de bandas de Bollinger adaptáveis ​​e sistema de gerenciamento de risco multicamadas

BB EMA SL TP SMA
Data de criação: 2025-02-10 15:14:57 última modificação: 2025-02-10 15:14:57
cópia: 3 Cliques: 446
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências de bandas de Bollinger adaptáveis ​​e sistema de gerenciamento de risco multicamadas

Visão geral

A estratégia é um sistema de acompanhamento de tendências que combina os indicadores Brin e EMA para otimizar o desempenho das negociações por meio de mecanismos de controle de risco em vários níveis. O núcleo da estratégia é aproveitar a forma de reversão de ruptura do Brin para capturar tendências de mercado, enquanto combina o filtro de tendências EMA para melhorar a precisão das negociações.

Princípio da estratégia

A lógica de negociação da estratégia baseia-se nos seguintes elementos centrais:

  1. Utilize a faixa de Brin de diferença padrão (STDDEV) de 1,5 com um período de 14 como principal indicador de sinal de negociação
  2. Quando um dos atuais preços de fechamento da linha K se eleva e a linha K se inverte, o sinal de fechamento é disparado.
  3. Quando o preço de fechamento de uma linha K atual quebra o downtrend e a linha K atual se fortalece, o sinal de multiplicação é acionado
  4. Opcionalmente adicionar 80 EMAs de ciclo como filtro de tendência, abrindo posições somente quando a tendência é consistente
  5. Ativação de tracking stop loss quando o preço atravessa a linha do meio da faixa de Brin
  6. Objetivos de perda e ganho fixos
  7. Suporte para o mecanismo de liquidação automática baseado no número de linhas K

Vantagens estratégicas

  1. Combina características de acompanhamento de tendências e inversão de negociação, permitindo um desempenho estável em diferentes cenários de mercado
  2. Sistema de controle de risco em vários níveis, que fornece um programa completo de gestão de fundos
  3. Ajustes de parâmetros flexíveis permitem que a estratégia se adapte a diferentes condições de mercado
  4. Os filtros da EMA reduzem o risco de falsas brechas
  5. O mecanismo de rastreamento de stop loss é eficaz para bloquear lucros
  6. O mecanismo de liquidação em dimensões temporais evita o risco de uma prisão prolongada

Risco estratégico

  1. Sinais de fuga falsos frequentes podem ocorrer em um mercado volátil
  2. O Stop Loss de quantidade fixa pode não ser adequado para todas as condições de mercado
  3. A filtragem da EMA pode fazer com que se percam oportunidades de negociação importantes
  4. Segurança do mercado: o tracking de stop loss pode levar a um fechamento prematuro em mercados altamente voláteis
  5. A otimização de parâmetros pode levar ao overfitting de dados históricos

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

  1. Introdução de um ciclo de correlação de correlação de correlação de correlação de correlação de correlação
  2. Desenvolvimento de um sistema de stop loss dinâmico baseado na gestão de fundos
  3. Aumentar a análise de volume de transações para confirmar a eficácia dos avanços
  4. Sistemas de otimização de parâmetros para a inteligência
  5. Adição de módulo de reconhecimento de ambiente de mercado, usando diferentes configurações de parâmetros em diferentes condições de mercado

Resumir

Trata-se de um sistema de rastreamento de tendências bem concebido, que fornece sinais de negociação confiáveis por meio de uma combinação de Brinks e EMAs e garante a segurança das negociações por meio de vários níveis de controle de risco. A estratégia é altamente configurável e pode se adaptar a diferentes estilos de negociação e ambientes de mercado.

Código-fonte da estratégia
/*backtest
start: 2025-01-10 00:00:00
end: 2025-02-08 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("AI Bollinger Bands Strategy with SL, TP, and Bars Till Close", overlay=true)

// Input parameters
bb_length           = input.int(14, title="Bollinger Bands Length", minval=1)
bb_stddev           = input.float(1.5, title="Bollinger Bands Standard Deviation", minval=0.1)
use_ema             = input.bool(true, title="Use EMA Filter")
ema_length          = input.int(80, title="EMA Length", minval=1)
use_trailing_stop   = input.bool(true, title="Use Trailing Stop")
use_sl              = input.bool(true, title="Use Stop Loss")
use_tp              = input.bool(false, title="Use Take Profit")
sl_dollars          = input.float(300.0, title="Stop Loss (\$)", minval=0.0)
tp_dollars          = input.float(1000.0, title="Take Profit (\$)", minval=0.0)
use_bars_till_close = input.bool(true, title="Use Bars Till Close")
bars_till_close     = input.int(10, title="Bars Till Close", minval=1)
// New input to toggle indicator plotting
plot_indicators     = input.bool(true, title="Plot Bollinger Bands and EMA on Chart")

// Calculate Bollinger Bands and EMA
basis      = ta.sma(close, bb_length)
upper_band = basis + bb_stddev * ta.stdev(close, bb_length)
lower_band = basis - bb_stddev * ta.stdev(close, bb_length)
ema        = ta.ema(close, ema_length)

// Plot Bollinger Bands and EMA conditionally
plot(plot_indicators  ? basis : na, color=color.blue, linewidth=2, title="Basis (SMA)")
plot(plot_indicators ? upper_band : na, color=color.red, linewidth=2, title="Upper Band")
plot(plot_indicators  ? lower_band : na, color=color.green, linewidth=2, title="Lower Band")
plot(plot_indicators   ? ema   : na, color=color.orange, linewidth=2, title="EMA")

// EMA conditions
ema_long_condition  = ema > ema[1]
ema_short_condition = ema < ema[1]

// Entry conditions
sell_condition = close[1] > upper_band[1] and close[1] > open[1] and close < open
if sell_condition and (not use_ema or ema_short_condition)
    strategy.entry("Sell", strategy.short)

buy_condition = close[1] < lower_band[1] and close > open
if buy_condition and (not use_ema or ema_long_condition)
    strategy.entry("Buy", strategy.long)

// Trailing stop logic
if use_trailing_stop
    if strategy.position_size > 0 and close >= basis
        strategy.exit("Trailing Stop Long", from_entry="Buy", stop=low)
    if strategy.position_size < 0 and close <= basis
        strategy.exit("Trailing Stop Short", from_entry="Sell", stop=high)

// Stop Loss and Take Profit logic
if use_sl or use_tp
    if strategy.position_size > 0
        long_entry = strategy.position_avg_price
        long_sl    = long_entry - sl_dollars
        long_tp    = long_entry + tp_dollars
        if use_sl and close <= long_sl
            strategy.close("Buy", comment="Long SL Hit")
        if use_tp and close >= long_tp
            strategy.close("Buy", comment="Long TP Hit")
    if strategy.position_size < 0
        short_entry = strategy.position_avg_price
        short_sl    = short_entry + sl_dollars
        short_tp    = short_entry - tp_dollars
        if use_sl and close >= short_sl
            strategy.close("Sell", comment="Short SL Hit")
        if use_tp and close <= short_tp
            strategy.close("Sell", comment="Short TP Hit")

// Bars Till Close logic
var int bars_since_entry = na
if strategy.position_size != 0
    bars_since_entry := na(bars_since_entry) ? 0 : bars_since_entry + 1
else
    bars_since_entry := na

if use_bars_till_close and not na(bars_since_entry) and bars_since_entry >= bars_till_close
    strategy.close("Buy", comment="Bars Till Close Hit")
    strategy.close("Sell", comment="Bars Till Close Hit")

// Plot buy/sell signals
plotshape(sell_condition and (not use_ema or ema_short_condition), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
plotshape(buy_condition and (not use_ema or ema_long_condition), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")