Estratégia de rastreamento inteligente dual-B

Autora:ChaoZhang, Data: 2024-01-18 15:41:20
Tags:

img

Esta é uma estratégia de negociação que usa Bollinger Bands. A estratégia visa identificar oportunidades quando os preços flutuam violentamente usando Bollinger Bands e tomar decisões de compra ou venda correspondentes.

Princípio da estratégia

A estratégia calcula a faixa superior, a faixa média e a faixa inferior das Bandas de Bollinger para determinar se o preço atual está dentro da faixa volátil e, portanto, tomar decisões sobre a abertura ou fechamento de posições. Quando o preço se aproxima da faixa superior, ele é considerado o ponto extremo para longs e a estratégia escolhe fechar posições longas. Quando o preço cai perto da faixa inferior, ele é considerado o ponto extremo para shorts e a estratégia escolhe abrir posições longas.

Além disso, a estratégia também introduz fatores de reversão de tendência. Se houver um sinal de reversão, ele também desencadeará as decisões de compra ou venda correspondentes. Especificamente, a lógica da estratégia é a seguinte:

  1. Calcular as bandas de Bollinger superiores, médias e inferiores
  2. Julgar se o preço atravessa as faixas e sinais de reversão
    1. A partir da faixa média como sinal de tendência
    2. Próximo da faixa superior ou inferior como sinais de inversão
  3. Enviar ordens de compra, venda ou fechamento

O que precede é a lógica básica de negociação desta estratégia. Utilizando as características das Bandas de Bollinger e combinando fatores de tendência e reversão, a estratégia tenta capturar pontos de reversão quando a volatilidade aumenta.

Vantagens da estratégia

Em comparação com as estratégias comuns de média móvel, esta estratégia tem as seguintes vantagens:

  1. Mais sensíveis, capazes de aproveitar as oportunidades quando os preços flutuam violentamente
  2. Combinar factores de tendência e de reversão para evitar perdas decorrentes de reversões prematuras
  3. Tem um certo efeito de FILTRO para evitar compras/vendas desnecessárias em zonas não voláteis
  4. Julgar a principal direção da tendência através da faixa média para reduzir a frequência de negociação
  5. Aumentar as condições do filtro de inversão para reduzir erros de julgamento

Em geral, esta estratégia combina as bandas de Bollinger e as barras de preço relativamente bem.

Riscos e otimização

No entanto, esta estratégia ainda apresenta alguns riscos:

  1. Parâmetros BB inadequados não conseguem captar plenamente as flutuações de preços
  2. Julgamento incorreto do sinal de inversão, falta de inversões ou erro de avaliação das inversões
  3. Eficácia fraca dos sinais da faixa média quando a tendência não é clara

Consequentemente, as futuras otimizações podem concentrar-se em:

  1. Optimização adaptativa dos parâmetros BB com base em diferentes produtos
  2. Aumentar os modelos de aprendizagem de máquina para julgar a probabilidade de reversão
  3. Mudança para outros indicadores quando a tendência não estiver clara
  4. Combine mais padrões de preços para filtrar sinais de negociação

Conclusão

Em conclusão, este é um modelo típico de estratégia de negociação de Bollinger Bands. Ele evita negociações ineficazes excessivas comuns para o uso de Bollinger Bands sozinho, introduzindo julgamento de reversão de tendência para filtrar sinais, o que teoricamente pode levar a um bom desempenho da estratégia.


/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Mais.