O recurso está a ser carregado... Carregamento...

Estratégia de ruptura de Bollinger Momentum com média móvel de Hull

Autora:ChaoZhang, Data: 2024-11-29 17:00:00
Tags:VWMAHMABBMTFRSI

img

Resumo

Esta estratégia é um sistema de negociação baseado em análise de vários prazos, combinando Bandas de Bollinger, Hull Moving Average e Weighted Moving Average para gerar sinais de negociação. A estratégia opera principalmente no período de 1 hora, integrando dados de mercado de períodos de 5 minutos, 1 hora e 3 horas.

Princípios de estratégia

A lógica básica é baseada na confirmação cruzada de vários indicadores técnicos. A estratégia monitora as relações de preço com várias médias móveis em vários prazos, incluindo VWMA de 5 minutos, VWMA de 1 hora e HMA de 3 horas. Os sinais longos são gerados quando o preço ultrapassa o limiar superior enquanto está acima de todos os indicadores de prazos; inversamente, os sinais curtos ocorrem quando o preço ultrapassa o limiar inferior enquanto está abaixo de todos os indicadores. A estratégia incorpora cálculos de desvio para definir limiares dinâmicos de entrada e saída, aumentando a flexibilidade de negociação.

Vantagens da estratégia

  1. A análise de quadros de tempo múltiplos reduz os riscos de falha e melhora a fiabilidade do sinal
  2. A definição dinâmica de stop-loss e take-profit adapta-se às diferentes condições de mercado
  3. O dimensionamento das posições com base no capital próprio da conta garante uma utilização racional do capital
  4. Os mecanismos de saída múltiplos proporcionam adaptabilidade da estratégia
  5. Interface gráfica oferece visualização clara de sinais de negociação para análise
  6. A integração de vários indicadores técnicos maduros aumenta a precisão das decisões de negociação

Riscos estratégicos

  1. Indicadores múltiplos podem levar a sinais de negociação atrasados
  2. Possíveis falhas frequentes em mercados variados
  3. Os rácios fixos de stop loss e take profit podem não corresponder a todas as condições de mercado
  4. O processamento de dados em quadros de tempo múltiplos pode aumentar a complexidade da estratégia
  5. Risco elevado de deslizamento em mercados voláteis

Orientações de otimização

  1. Introduzir indicadores de volatilidade para ajustamentos dinâmicos de stop-loss e take-profit
  2. Adicionar reconhecimento das condições de mercado para adaptação de parâmetros
  3. Otimizar a filtragem do sinal para reduzir as perdas de falha de ruptura
  4. Incorporar análise de volume para melhorar a fiabilidade do sinal de ruptura
  5. Desenvolver mecanismos de otimização de parâmetros adaptativos para melhorar a estabilidade

Resumo

A estratégia constrói um sistema de negociação relativamente completo por meio de análise de vários prazos e múltiplos indicadores técnicos. Seus pontos fortes estão na confiabilidade do sinal e na gestão eficaz do risco, embora enfrente desafios com atraso do sinal e otimização de parâmetros. Através da melhoria e otimização contínuas, a estratégia mostra potencial para manter um desempenho estável em várias condições de mercado.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("1H- 280, 2.7", overlay=true)


// Fetch the indicator values from different timeframes
vwma5 = request.security(syminfo.tickerid, "5", ta.wma(close, 233), lookahead = barmerge.lookahead_off)
vwma_hourly = request.security(syminfo.tickerid, "60", ta.wma(close, 89), lookahead = barmerge.lookahead_off)
hullma155_3h = request.security(syminfo.tickerid, "180", ta.hma(close, 155), lookahead = barmerge.lookahead_off)


// Calculate the deviation value
deviation = close * 0.032


// Initialize the signal variables
var float signalLine = na
var color lineColor = na


// Long Entry Conditions
longCondition_5min = close > vwma5
longCondition_hourly = close > vwma_hourly
longCondition_3h = close > hullma155_3h


// Short Entry Conditions
shortCondition_5min = close < vwma5
shortCondition_hourly = close < vwma_hourly
shortCondition_3h = close < hullma155_3h


// Long Entry
if longCondition_5min and longCondition_hourly and longCondition_3h
    signalLine := close + deviation
    lineColor := color.rgb(0, 255, 0, 1)


// Short Entry
if shortCondition_5min and shortCondition_hourly and shortCondition_3h
    signalLine := close - deviation
    lineColor := color.rgb(255, 0, 0, 1)


// Plotting the connecting line
plot(signalLine, title="Signal Line", color=lineColor, linewidth=1, style=plot.style_line)


// Colorize the signal line
bgcolor(signalLine > close ? color.rgb(0, 255, 0, 99) : color.rgb(255, 0, 0, 99), transp=90)



// Strategy settings
useTPSL = input(true, "Use TP/SL for closing long positions?")
useDownbreakOutbreak = input(false, "Use Downbreak and Outbreak for closing positions?")
useM7FClosing = input(false, "Use M7F Signal for closing positions?")


length1 = input.int(280, minval=1)
src = input(close, title="Source")
mult = input.float(2.7, minval=0.001, maxval=50, title="StdDev")


basis = ta.vwma(src, length1)
dev = mult * ta.stdev(src, length1)
upper = basis + dev
lower = basis - dev


offset = input.int(0, "Offset", minval = -500, maxval = 500)


length2 = input.int(55, minval=1)
src2 = input(close, title="Source")
hullma = ta.wma(2 * ta.wma(src2, length2 / 2) - ta.wma(src2, length2), math.floor(math.sqrt(length2)))


hullmacrosslower = ta.crossover(hullma, lower)
hullmacrossupper = ta.crossunder(hullma, upper)


breakout = ta.crossover(ohlc4, upper)
breakdown = ta.crossunder(ohlc4, upper)
outbreak = ta.crossover(ohlc4, lower)
downbreak = ta.crossunder(ohlc4, lower)


// Calculate position size and leverage
margin_pct = 1
leverage = 1
position_size = strategy.equity * margin_pct
qty = position_size / close / leverage


// Define take profit and stop loss levels
take_profit = 0.14
stop_loss = 0.06


// Opening a long position
if breakout
    strategy.entry("Long", strategy.long, qty, limit=close*(1+take_profit), stop=close*(1-stop_loss))


// Opening a short position
if downbreak
    strategy.entry("Short", strategy.short, qty, limit=close*(1-take_profit), stop=close*(1+stop_loss))


// Closing positions based on chosen method
if useTPSL
    // Using TP/SL for closing long positions
    if strategy.position_size > 0 and breakdown
        strategy.close("Long", comment="Breakdown")
else if useDownbreakOutbreak
    // Using Downbreak and Outbreak for closing positions
    if strategy.position_size > 0 and (breakdown or downbreak)
        strategy.close("Long", comment="Breakdown")
    if strategy.position_size < 0 and (outbreak or downbreak)
        strategy.close("Short", comment="Outbreak")
else if useM7FClosing
    // Using M7F Signal for closing positions
    if strategy.position_size > 0 and (signalLine < close)
        strategy.close("Long", comment="M7F Signal")
    if strategy.position_size < 0 and (signalLine > close)
        strategy.close("Short", comment="M7F Signal")


// Plotting entry signals
plotshape(hullmacrosslower, title="High Bear Volatility", style=shape.arrowup, text="^^^^^", color=color.rgb(75, 202, 79), location=location.belowbar)
plotshape(hullmacrossupper, title="High Bull Volatility", style=shape.arrowdown, text="-----", color=color.rgb(215, 72, 72), location=location.abovebar)
plotshape(breakout ? 1 : na, title="Breakout", style=shape.arrowup, text="", color=color.rgb(75, 202, 79), location=location.belowbar, size=size.tiny)
plotshape(breakdown ? 1 : na, title="Breakdown", style=shape.arrowdown, text="", color=color.rgb(201, 71, 71), location=location.abovebar, size=size.tiny)
plotshape(outbreak ? 1 : na, title="Outbreak", style=shape.arrowup, text="", color=color.rgb(0, 110, 255), location=location.belowbar, size=size.tiny)
plotshape(downbreak ? 1 : na, title="Downbreak", style=shape.arrowdown, text="", color=color.rgb(255, 111, 0), location=location.abovebar, size=size.tiny)


Relacionados

Mais.