Strategi ini masuk posisi panjang atau pendek berdasarkan breakout Bollinger Bands. Ini pergi panjang ketika harga pecah di bawah band bawah dan pergi pendek ketika harga pecah di atas band atas. Setelah memasuki posisi, terus piramida dan memperbarui stop loss secara real-time.
Strategi ini menggunakan 3 garis Bollinger Band - tengah, atas dan bawah. Garis tengah adalah rata-rata bergerak n hari. Garis atas adalah garis tengah + k * deviasi standar n hari. Garis bawah adalah garis tengah - k * deviasi standar n hari. Biasanya n adalah 20 dan k adalah 2.
Ketika harga pecah di atas garis atas, itu menandakan tren penurunan dan pergi pendek. Ketika harga pecah di bawah garis bawah, itu menandakan tren kenaikan dan pergi panjang.
Setelah mengambil posisi, strategi terus piramida, yang berarti menambahkan lebih banyak posisi ke arah yang sama.
Stop loss untuk semua posisi juga diperbarui secara real-time berdasarkan perbedaan antara harga rata-rata kepemilikan saat ini dan harga band.
Keuntungan dari strategi ini meliputi:
Ada juga beberapa risiko dari strategi ini:
Beberapa metode untuk mengatasi risiko:
Strategi dapat dioptimalkan dari aspek berikut:
Sebagai kesimpulan, ini adalah strategi tren berikut yang khas. Ini naik momentum ketika tren muncul dan menghasilkan keuntungan sesuai. Sementara itu, ini juga mengandung risiko yang melekat. Optimasi lebih lanjut diperlukan untuk menyesuaikan lebih banyak kondisi pasar dan mengatasi risiko whipsaw.
/*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)