Advanced Bollinger Band Moving Average Grid Trend Tracking Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-24 14:48:28
Tag:

img

Gambaran umum

Strategi ini disebut Advanced Bollinger Band Moving Average Grid Trend Tracking Strategy. Ini adalah strategi yang menggunakan Bollinger Bands dan moving averages untuk penentuan tren dan menetapkan posisi grid untuk melacak arah tren.

Prinsip

Ide utama dari strategi ini adalah:

  1. Gunakan Bollinger Bands untuk menilai rentang volatilitas pasar saat ini. rel tengah Bollinger Bands adalah rata-rata bergerak sederhana n-hari, dan lebarnya adalah amplitudo rata-rata ATR n-hari.

  2. Empat garis di luar Bollinger Bands adalah kelipatan abnormal dari garis amplitudo volatilitas rata-rata yang sebenarnya.

  3. EMA bergerak cepat dan lambat menentukan arah tren siklus besar.

  4. Melacak dan membangun posisi dalam arah tren, menutup posisi untuk keuntungan ketika melihat pin bar.

Secara khusus, bagian utama dari strategi ini adalah:

  1. Tentukan parameter Bollinger Band. rel tengah Bollinger Band adalah SMA bergerak n-hari, dan lebar Bollinger Band adalah ATR n-hari. panjang Bollinger n dalam strategi adalah 20.

  2. Tetapkan empat garis diperluas di luar Bollinger Bands. jarak antara garis dan rel tengah adalah 1,236 kali, 2,382 kali, 3,618 kali dan 4,236 kali amplitudo volatilitas sejati rata-rata.

  3. Setel EMA bergerak cepat dan lambat untuk menentukan tren siklus besar. panjang garis cepat adalah 25 hari dan garis lambat adalah 200 hari.

  4. Menetapkan posisi panjang secara bertahap saat menembus empat garis di bawah dalam tren naik siklus besar.

  5. Ketika sebuah pin bar muncul atau harga melintasi rata-rata bergerak siklus besar lagi, hal ini dianggap sebagai sinyal penutupan pin bar untuk menutup posisi untuk keuntungan.

Hal di atas adalah prinsip teknis utama dari strategi ini. Dengan menilai rentang volatilitas saat ini melalui Bollinger Bands dan menetapkan posisi di bawah tren siklus besar, efek akhir dari posisi probabilitas tinggi dapat dicapai.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Menggunakan sepenuhnya karakteristik tren, menentukan arah tren dalam siklus besar, membangun posisi dalam arah tren untuk mengurangi operasi terbalik yang tidak perlu.

  2. Penggunaan beberapa garis Bollinger dapat menilai rentang volatilitas saat ini dengan lebih jelas, yang kondusif untuk menangkap sebagian besar tren.

  3. Metode posisi grid dapat mendistribusikan risiko secara merata ke setiap unit dana untuk mendapatkan pengembalian yang stabil.

  4. Penggunaan sinyal pin bar efisiensi tinggi untuk penutupan posisi dapat dengan cepat mengunci keuntungan.

  5. Strategi keseluruhan mengintegrasikan penentuan tren, posisi grid, dan penutupan posisi sinyal tertentu.

Analisis Risiko

Ada juga beberapa risiko dalam strategi ini:

  1. Probabilitas salah menentukan tren siklus besar. Ada beberapa kemungkinan kesalahan pada rata-rata bergerak cepat dan lambat, yang dapat menyebabkan operasi terbalik yang tidak perlu.

  2. Kemungkinan kegagalan Bollinger line breakout. Bollinger line tidak dapat memprediksi jalur harga dengan 100% akurasi.

  3. Sinyal pin bar mungkin keluar terlambat dan tidak dapat mengunci keuntungan tepat waktu.

  4. Sangat mudah untuk membentuk terlalu banyak posisi tumpang tindih selama penyesuaian kejutan siklus besar.

Solusi yang sesuai adalah:

  1. Sesuaikan parameter rata-rata bergerak cepat dan lambat untuk mengurangi kemungkinan kesalahan.

  2. Sesuaikan parameter garis Bollinger untuk membuat garis Bollinger menempel pada sebagian besar fluktuasi sebanyak mungkin.

  3. Uji pola spesifik yang lebih sensitif untuk sinyal mengambil keuntungan.

  4. Meningkatkan jarak interval untuk ukuran posisi kontrol.

Arahan Optimasi

Strategi dapat dioptimalkan dalam arah berikut:

  1. Uji parameter rata-rata bergerak yang berbeda untuk mengoptimalkan penentuan tren siklus besar. Misalnya, uji indikator lain seperti EMA, RSI, dll.

  2. Uji parameter ATR ganda yang berbeda untuk mengoptimalkan pengaturan lebar saluran Bollinger.

  3. Uji sinyal pengambilan keuntungan yang efisien lainnya, misalnya SAR, Kalman Lines, dll.

  4. Mengoptimalkan interval grid untuk membuat interval volatilitas dibagi lebih merata untuk mengurangi posisi tumpang tindih.

  5. Meningkatkan mekanisme stop loss. Menghindari kerugian besar dalam kondisi pasar yang ekstrim.

Ringkasan

Strategi ini mengintegrasikan penggunaan saluran Bollinger, indikator rata-rata bergerak, pola K-line tertentu dan sarana teknis lainnya. Di bawah premis menentukan tren siklus besar, strategi ini membangun strategi grid pelacakan tren berdasarkan rata-rata bergerak dan Bollinger Bands. Dibandingkan dengan perputaran Bollinger Band tradisional, strategi ini menambahkan penilaian karakteristik tren, yang dapat mengurangi posisi terbalik yang tidak perlu. Pada saat yang sama, metode posisi grid mendiversifikasi risiko untuk setiap unit dana untuk mendapatkan pengembalian yang stabil. Strategi dapat dioptimalkan dari berbagai sudut seperti penentuan tren, lebar Bollinger, sinyal pengambilan keuntungan, metode stop loss, dll.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
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/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 plot

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy1)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend 
buy3=ta.crossunder(close,bott3) and longTrend 
buy4=ta.crossunder(close,bott4) and longTrend 
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")
     

Lebih banyak