Estratégia de negociação de reversão média baseada em bandas de Bollinger e índice de ouro

Autora:ChaoZhang, Data: 2023-11-16 16:52:55
Tags:

img

Resumo

Esta estratégia usa a linha da proporção de ouro das Bandas de Bollinger combinadas com formações médias móveis para negociar reversões médias.

Estratégia lógica

  1. Calcular Bandas de Bollinger banda média, banda superior e banda inferior do rácio de ouro
  • Faixa média: vwma de n períodos
  • Faixa superior: faixa média + desvio padrão k * n período
  • Faixa inferior do rácio de ouro: faixa média - 0,618 * desvio padrão n período
  1. Formações de juízes
  • A variação de variação de 50 dias acima da variação de 200 dias indica uma tendência de alta
  • Preço toca ou abaixo da faixa inferior do índice de ouro, como sinal de compra
  1. Saída
  • Quando o preço ultrapassa a faixa superior BB, considera-se que o preço se afastou da faixa inferior, posição fechada
  1. Stop loss
  • Estabelecer uma percentagem fixa de stop loss, por exemplo 5%

Vantagens

  1. Usar vwma em vez de sma para a linha média do BB reflete melhor o movimento dos preços

  2. A proporção de ouro é importante suporte/resistência, fornece base para a reversão

  3. O MA na tendência ascendente garante que a tendência geral seja ascendente

  4. Previsão de prejuízo

Riscos

  1. A linha do índice de ouro não é um suporte garantido, o preço pode romper.

  2. O valor da posição em risco deve ser calculado em função da volatilidade.

  3. A tendência de alta da MA pode ser falsa, deve verificar mais indicadores

  4. Não tenho certeza da duração da reversão, preciso de lucro razoável para sair.

Reforço

  1. Teste diferentes combinações de parâmetros como período BB, multiplicador SD, percentagem fixa de stop loss, etc.

  2. Adicionar mais indicadores para determinar a tendência do mercado e a probabilidade de reversão, por exemplo, MACD, KD, etc.

  3. Considerar paradas dinâmicas, tais como ATR ou paradas traseiras

  4. Otimizar a captação de lucros, como a captação de lucros, captação parcial de lucros, etc.

Resumo

Esta estratégia de negociação significa reversões usando a linha da proporção de ouro BB, com lógica clara, parâmetros simples e drawdown controlável. mas também tem riscos, requer mais testes e otimização, adicionando mais indicadores técnicos para tendência e melhores paradas / saídas antes do uso real.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4

strategy(title="Bollinger Band with Fib Golden Ratio (0.618)",  shorttitle="Bollinger Band with Fib Golden Ratio" , overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  

length = input(50,title="BB Length" , minval=1)
src1 = input(hlc3, title="Source")
//mult1 = input(1.33, minval=0.001, maxval=50)
mult = input(1.5,title="multplier", minval=0.001, maxval=50)

stopLoss=input(5,title="Stop Loss",minval=1)

basis = vwma(src1, length)
dev = mult * stdev(src1, length)

//dev3 = mult3 * stdev(src, length)

upper_618= basis + (0.618*dev)
lower_618= basis - (0.618*dev)

//lower_618_dev3= basis - (0.618*dev3)



plot_upper618= plot(upper_618, color=color.purple, linewidth=2, title="0.618")
plot(basis, color=color.purple,style=plot.style_circles,  linewidth=2)

plot_lower618= plot(lower_618, color=color.purple, linewidth=2, title="0.618 entry")
//plot_lower618_dev3= plot(lower_618_dev3, color=color.red, linewidth=1, title="0.618 stop")

//plot_lower618= plot(lower_618, color=color.purple, linewidth=1, title="0.618 entry")

ema200=ema(close,200)
ema50=ema(close,50)

plot (ema200, title="ema200", color=color.orange, linewidth=2)
plot (ema50, title="ema50", color=color.blue , linewidth=2)


longCondition= ema50 > ema200

strategy.entry(id="BB_Fib618", long=true, when = longCondition and ( close < lower_618  or  low <= lower_618)  )

strategy.close(id="BB_Fib618",  comment="points="+tostring(close - strategy.position_avg_price,  "###.##") , when = strategy.position_size >= 1  and crossover(close,upper_618 )) 

//stoploss exit
stopLossVal = strategy.position_size>=1 ?  strategy.position_avg_price * ( 1 - (stopLoss/100) ) : 0.00
strategy.close(id="BB_Fib618", comment="SL="+tostring(close - strategy.position_avg_price,  "###.##"), when=abs(strategy.position_size)>=1 and close < stopLossVal ) //and close > strategy.position_avg_price )


Mais.