Esta estratégia entra em posições longas ou curtas com base em breakouts de Bollinger Bands. Ela vai longa quando o preço quebra abaixo da faixa inferior e vai curta quando o preço quebra acima da faixa superior.
A estratégia usa 3 linhas de Bollinger Bands - média, superior e inferior. A linha do meio é a média móvel de n dias. A linha superior é a linha do meio + k * desvio padrão de n dias. A linha inferior é a linha do meio - k * desvio padrão de n dias. Normalmente n é 20 e k é 2.
Quando o preço rompe acima da linha superior, ele sinaliza uma tendência de queda e fica curto.
Após a tomada de posições, a estratégia mantém a pirâmide, o que significa adicionar mais posições na mesma direção.
O valor da perda de todas as posições também é atualizado em tempo real com base na diferença entre o preço médio de detenção atual e o preço da faixa.
As vantagens desta estratégia incluem:
Há também alguns riscos desta estratégia:
Alguns métodos para combater os riscos:
A estratégia pode ser otimizada a partir dos seguintes aspectos:
Em conclusão, esta é uma estratégia típica de tendência seguinte. Ele cavalga o impulso quando a tendência surge e faz lucro em conformidade. Enquanto isso, também contém riscos inerentes. Mais otimizações são necessárias para adaptar mais condições de mercado e enfrentar o risco do furo.
/*backtest start: 2022-11-16 00:00:00 end: 2023-11-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='Bollinger Band strategy with split, limit, stop', shorttitle='bb strategy', overlay=true,commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, pyramiding = 4) //Summary: Going Long or Short when Entering after Breaking the Bollinger Bands\ //At this time, the stop-loss, profit-taking price, and pyramiding standard\ // are determined from the difference between the position average price and the band price. //After entering the position, if the price crosses the mid-band line, the stop loss is adjusted to the mid-band line. //each trade, entry position size = 10% of total cash //max pyramiding is 4 //commission = 0.01% in_period = true bb_length = input.int(20) bb_mult = input.int(2) [middle, upper, lower] = ta.bb(close,bb_length, bb_mult) plot(middle, color=color.aqua) plot(upper, color=color.orange) plot(lower, color=color.orange) long_cond = ta.crossover(close,lower) short_cond = ta.crossunder(close,upper) var saved_ph = 0.0 if strategy.opentrades>0 and strategy.opentrades[1]==0 and strategy.position_size > 0 saved_ph := upper[1] var saved_pl = 0.0 if strategy.opentrades>0 and strategy.opentrades[1]==0 and strategy.position_size < 0 saved_pl := lower[1] avg = strategy.position_avg_price long_diff = saved_ph-avg short_diff = saved_pl-avg long_stoploss = avg - 1*long_diff short_stoploss = avg - 1*short_diff long_avgdown = avg - 0.5*long_diff short_avgup = avg - 0.5*short_diff long_profit_price = avg + 0.5*long_diff short_profit_price = avg + 0.5*short_diff var label _label = na if in_period if long_cond and strategy.opentrades==0 strategy.entry("Long",strategy.long) if long_cond and strategy.opentrades >0 and (close[1]<long_avgdown or close[2]<long_avgdown) strategy.entry("Long",strategy.long) if short_cond and strategy.opentrades==0 strategy.entry("Short", strategy.short) if short_cond and strategy.opentrades>0 and (close[1]>short_avgup or close[2]>short_avgup) strategy.entry("Short",strategy.short) plot(avg, style=plot.style_linebr) plot(strategy.position_size > 0? long_profit_price: na,color=color.green, style=plot.style_linebr) plot(strategy.position_size > 0? long_avgdown: na,color=color.yellow, style=plot.style_linebr) plot(strategy.position_size > 0? long_stoploss: na,color=color.red, style=plot.style_linebr) plot(strategy.position_size < 0? short_profit_price: na,color=color.green, style=plot.style_linebr) plot(strategy.position_size < 0? short_avgup: na,color=color.yellow, style=plot.style_linebr) plot(strategy.position_size < 0? short_stoploss: na,color=color.red, style=plot.style_linebr) if strategy.position_size > 0 if ta.crossover(close, middle) strategy.exit("Long Exit", "Long", limit=long_profit_price, stop=middle) else strategy.exit("Long Exit", "Long", limit=long_profit_price, stop=long_stoploss) if strategy.position_size < 0 if ta.crossunder(close, middle) strategy.exit("Short Exit", "Short", limit=short_profit_price, stop=middle) else strategy.exit("Short Exit", "Short", limit=short_profit_price, stop=short_stoploss)