DAKELAX-XRPUSDT Estratégia de reversão da média da banda de Bollinger

Autora:ChaoZhang, Data: 2023-11-02 16:18:34
Tags:

img

Resumo

DAKELAX-XRPUSDT é uma estratégia de bot de negociação para XRPUSDT na Binance. É uma estratégia simples de inverso para o meio usando Bandas de Bollinger, e tem um bom desempenho em backtest no período de tempo H1 de maio a agosto de 2019, bem como em execução ao vivo.

Estratégia lógica

A estratégia primeiro calcula a SMA de 20 períodos e as Bandas de Bollinger superiores/inferiores. A banda superior é a SMA + 1,5 desvio padrão, e a banda inferior é a SMA - 2,2 desvio padrão.

Quando o preço de fechamento está abaixo da faixa inferior, ele vai longo com 20 moedas. Quando o fechamento está acima da faixa superior, ele fecha todas as posições.

A estratégia também calcula a linha rápida da EMA de 7 períodos e a linha lenta da EMA de 18 períodos.

Análise das vantagens

  • As bandas de Bollinger e a taxa de contração identificam intuitivamente tendências e volatilidade
  • Combinar com o crossover EMA aumenta a força dos sinais
  • Bons resultados dos backtests e relativamente estáveis no comércio ao vivo

Análise de riscos

  • Alta probabilidade de falha no caso de ruptura após contração da banda
  • Compra de valores fixos sem riscos de dimensionamento de posição
  • Excesso de crossovers em mercados variados corre risco de perdas
  • Considera apenas fatores diários, perdendo tendências de prazo maior

Considere o dimensionamento dinâmico da posição ou o stop loss para controlar os riscos. Otimize a estratégia de crossover para evitar falhas em mercados variados. Adicione indicadores de tendência de prazo maior para identificar movimentos maiores.

Orientações de otimização

  • Ajustar o montante da compra com base na largura da banda, menos quando contratado e mais quando expandido

  • Considere acumular posições quando a contração é vista mas o sinal ainda não foi desencadeado

  • Adicionar indicador de tendência de prazo mais longo para determinar a direção geral, pausar a estratégia quando não estiver claro

  • Incorporar stop loss para controlar o risco, pode definir perto de baixas recentes das faixas

  • Otimizar parâmetros de cruzamento como períodos EMA para evitar ficar preso

Resumo

DAKELAX-XRPUSDT é uma estratégia de bot de negociação usando contração de Bollinger Band com crossover EMA. É intuitivo e tem bons resultados de backtest, mas contém alguns riscos. Estes podem ser reduzidos através do dimensionamento de posição, estratégia de parada, adição de stop loss e otimização de lógica de crossover.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="Tradebotler DAKELAX Binance:XRPUSDT Study-strategy", overlay=true)
strategy(title="Tradebotler DAKELAX Binance:XRPUSDT Strategy", overlay=true)

buyAmount = input(20, minval=1)

// SMA20
len2 = input(20, minval=1)
src2 = input(close)
out2 = sma(src2, len2)

// BB contraction value (medium tight)
contraction_value = 1.3
// BB contraction value (very tight)
contraction_value2 = 0.1

// 2xSTDEV BB calculation
dev = stdev(src2, len2)
upper_BB = out2  + 1.5*dev
lower_BB = out2  - 2.2*dev
x1 = plot(upper_BB, color=blue, linewidth = 2)
x2 = plot(lower_BB, color=blue, linewidth = 2)

contraction = (upper_BB-lower_BB)/out2

//fills the BBands according to the contraction value (threshold)

// Calculate values
fastMA  = ema(close, 7)
slowMA  = ema(close, 18)

// Determine alert setups
crossUp   = crossover(fastMA, slowMA)
crossDown = crossunder(fastMA, slowMA)

buySignal   = (crossUp or crossUp[1]) and (low > slowMA)
shortSignal = (crossDown or crossDown[1]) and (high < slowMA)

// Highlight alerts on the chart
bgColour =
     (buySignal and barstate.isrealtime) ? green :
     (shortSignal and barstate.isrealtime) ? red :
     na

signalBuy = (buySignal ) ? true : false
signalSell = (shortSignal ) ? true : false

test = true

test := not test[1]

closesBelowLowerBB = close < lower_BB
closesAboveUpperBB = close > upper_BB

tmptext = "blah"

// Plot values
plot(series=fastMA, color=teal)
plot(series=slowMA, color=orange)

plot(out2, color=black, linewidth = 1)
fill(x1, x2, color = contraction > contraction_value ? black : contraction < contraction_value2 ? yellow: red)

isInRed = contraction < contraction_value and contraction >= contraction_value2
isInYellow = contraction < contraction_value and contraction < contraction_value2

if ( closesBelowLowerBB )
    strategy.order('Buy', strategy.long, buyAmount)

if ( closesAboveUpperBB )
    strategy.close_all()



Mais.