Estratégia de rompimento de EMA e bandas de Bollinger

EMA BB
Data de criação: 2024-06-03 16:23:06 última modificação: 2024-06-03 16:23:06
cópia: 2 Cliques: 961
1
focar em
1617
Seguidores

Estratégia de rompimento de EMA e bandas de Bollinger

Visão geral

A estratégia usa a média móvel de 5 dias (EMA) e a faixa de Brin (BB) para identificar oportunidades potenciais de negociação no mercado. A estratégia gera um sinal de compra ou venda quando o preço quebra a faixa de Brin para entrar ou sair do trilho e atende a determinadas condições. A estratégia visa capturar as flutuações significativas de preços no mercado, enquanto usa o stop loss e o preço-alvo para gerenciar o risco e maximizar os ganhos.

Princípio da estratégia

O núcleo da estratégia é usar a EMA do dia 5 e o Brin para julgar a tendência e a volatilidade do mercado. Quando o preço quebra a faixa de Brin para cima e a linha K anterior é superior à EMA do dia 5, a estratégia gera um sinal de venda.

Uma vez que a entrada de negociação, a estratégia de definir o stop loss e o preço-alvo. A parada de perda está localizada na direção oposta ao preço de entrada, para limitar as perdas potenciais. O preço-alvo é calculado com base em um número fixo de pontos (por exemplo, 1000) para bloquear o lucro esperado.

Vantagens estratégicas

  1. Ao mesmo tempo, o uso de EMAs e Brinks permite uma avaliação mais abrangente das tendências e da volatilidade do mercado.
  2. Termos de entrada claros ajudam a identificar oportunidades de negociação com alta probabilidade.
  3. Estabeleça um stop loss e um preço de alvo para gerenciar o risco e bloquear os lucros.
  4. A lógica da estratégia é clara, fácil de entender e de implementar.

Risco estratégico

  1. Quando a volatilidade do mercado aumenta, as faixas de Brin podem gerar sinais de negociação frequentes, resultando em excesso de negociação e aumento de taxas.
  2. A estratégia pode produzir sinais errados e causar prejuízos em mercados turbulentos ou em situações de incerteza de tendência.
  3. Os pontos de parada e de preço-alvo fixos podem não se adaptar a diferentes condições de mercado, limitando a flexibilidade da estratégia.

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

  1. Considere o uso de paradas e preços-alvo adaptáveis, ajustados dinamicamente de acordo com a volatilidade do mercado e a intensidade da tendência, para aumentar a adaptabilidade da estratégia.
  2. A introdução de outros indicadores técnicos ou mecanismos de filtragem de sinais, como o índice de força relativa (RSI) ou a amplitude real média (ATR), para confirmar a tendência e reduzir os falsos sinais.
  3. Optimização de parâmetros, como o ajuste do ciclo da EMA, o múltiplo da diferença padrão da faixa de Bryn para adaptar-se a diferentes características do mercado e variedades de negociação.

Resumir

A EMA e a estratégia de breakout de Brinks utilizam dois indicadores técnicos de uso comum para capturar as flutuações significativas de preços no mercado. A estratégia possui condições de entrada claras, medidas de gerenciamento de risco e objetivos de lucro, fáceis de entender e implementar. No entanto, o desempenho da estratégia pode ser afetado pela volatilidade e tendências pouco claras do mercado.

Código-fonte da estratégia
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nifty Bank Strategy", overlay=true)

// Parameters
lengthEMA = 5
lengthBB = 20
multBB = 1.5
targetPoints = 1000

// Calculate 5-day EMA
ema5 = ta.ema(close, lengthEMA)

// Calculate Bollinger Bands (length 20, multiplier 1.5)
basis = ta.sma(close, lengthBB)
dev = multBB * ta.stdev(close, lengthBB)
upperBB = basis + dev
lowerBB = basis - dev

// Define strategy variables
var float entryPrice = na
var float stopLoss = na
var float targetPrice = na
var bool inTrade = false
var bool isLong = false
var float triggerHigh = na
var float triggerLow = na
var float triggerClose = na

if not inTrade
    // Short Entry Trigger Condition
    if low > ema5 and low > upperBB and high > upperBB
        triggerLow := low
        triggerHigh := high
        triggerClose := close
        label.new(bar_index, high, "Waiting for short trigger", color=color.yellow)
    // Long Entry Trigger Condition
    else if high < ema5 and high < lowerBB and low < lowerBB
        triggerHigh := high
        triggerLow := low
        triggerClose := close
        label.new(bar_index, low, "Waiting for long trigger", color=color.yellow)

// Check for Short Entry
if not inTrade and na(triggerClose) == false and close < triggerClose
    if low < triggerLow
        entryPrice := close
        stopLoss := triggerHigh
        targetPrice := entryPrice - targetPoints
        strategy.entry("Short", strategy.short)
        label.new(bar_index, high, "Short", color=color.red, style=label.style_label_down)
        inTrade := true
        isLong := false
        triggerLow := na
        triggerHigh := na
        triggerClose := na

// Check for Long Entry
if not inTrade and na(triggerClose) == false and close > triggerClose
    if high > triggerHigh
        entryPrice := close
        stopLoss := triggerLow
        targetPrice := entryPrice + targetPoints
        strategy.entry("Long", strategy.long)
        label.new(bar_index, low, "Long", color=color.green, style=label.style_label_up)
        inTrade := true
        isLong := true
        triggerLow := na
        triggerHigh := na
        triggerClose := na

// Manage Short Trade
if inTrade and not isLong
    if high >= stopLoss
        strategy.close("Short", comment="SL Hit")
        label.new(bar_index, high, "SL Hit", color=color.red, style=label.style_label_down)
        inTrade := false
    else if low <= targetPrice
        strategy.close("Short", comment="Target Hit")
        label.new(bar_index, low, "Target Hit", color=color.green, style=label.style_label_up)
        inTrade := false

// Manage Long Trade
if inTrade and isLong
    if low <= stopLoss
        strategy.close("Long", comment="SL Hit")
        label.new(bar_index, low, "SL Hit", color=color.red, style=label.style_label_down)
        inTrade := false
    else if high >= targetPrice
        strategy.close("Long", comment="Target Hit")
        label.new(bar_index, high, "Target Hit", color=color.green, style=label.style_label_up)
        inTrade := false

// Plotting
plot(ema5, color=color.orange, title="5-day EMA")
plot(upperBB, color=color.red, title="Upper Bollinger Band")
plot(lowerBB, color=color.purple, title="Lower Bollinger Band")

// Plot trade entry and exit points
plotshape(series=inTrade and isLong ? entryPrice : na, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=inTrade and not isLong ? entryPrice : na, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")