Strategi Pengesanan Trend Grid Bollinger Band Moving Average yang Lanjutan

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

img

Ringkasan

Strategi ini dinamakan Advanced Bollinger Band Moving Average Grid Trend Tracking Strategy. Ia adalah strategi yang menggunakan Bollinger Band dan purata bergerak untuk penentuan trend dan menubuhkan kedudukan grid untuk mengesan arah trend.

Prinsip

Idea utama strategi ini ialah:

  1. Gunakan Bollinger Bands untuk menilai julat turun naik pasaran semasa. Rel tengah Bollinger Bands adalah purata bergerak mudah n hari, dan lebarnya adalah amplitudo purata ATR n hari.

  2. Empat garis di luar Bollinger Bands adalah kelipatan abnormal garis amplitudo turun naik sebenar purata. Strategi ini menubuhkan kedudukan apabila menembusi pelbagai tahap garis.

  3. EMA bergerak cepat dan perlahan menentukan arah trend kitaran besar.

  4. Mengesan dan membina kedudukan dalam arah trend, menutup kedudukan untuk keuntungan apabila melihat bar pin.

Khususnya, bahagian utama strategi ini adalah:

  1. Tentukan parameter Bollinger Band. Rel tengah Bollinger Band adalah purata bergerak SMA n hari, dan lebar Bollinger Band adalah ATR n hari. Panjang Bollinger n dalam strategi adalah 20.

  2. Letakkan empat garis yang diperluaskan di luar Bollinger Bands. Jarak antara garis dan rel tengah adalah 1.236 kali, 2.382 kali, 3.618 kali dan 4.236 kali amplitud turun naik sebenar purata.

  3. Tetapkan purata bergerak EMA yang cepat dan perlahan untuk menentukan trend kitaran besar.

  4. Menetapkan kedudukan panjang secara beransur-ansur apabila menembusi empat garis di bawah dalam aliran naik kitaran besar.

  5. Apabila bar pin muncul atau harga melintasi purata bergerak kitaran besar lagi, ia dianggap sebagai isyarat penamat bar pin untuk menutup kedudukan untuk keuntungan.

Yang di atas adalah prinsip teknikal utama strategi ini. Dengan menilai julat turun naik semasa melalui Bollinger Bands dan menubuhkan kedudukan di bawah trend kitaran besar, kesan akhir kedudukan kebarangkalian tinggi dapat dicapai.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Menggunakan sepenuhnya ciri-ciri trend, menentukan arah trend dalam kitaran besar, membina kedudukan dalam arah trend untuk mengurangkan operasi terbalik yang tidak perlu.

  2. Penggunaan pelbagai garis Bollinger dapat menilai dengan lebih jelas julat turun naik semasa, yang kondusif untuk menangkap kebanyakan trend.

  3. Kaedah kedudukan grid boleh mengedarkan risiko secara merata kepada setiap unit dana untuk mendapatkan pulangan yang stabil.

  4. Penggunaan isyarat bar pin yang cekap untuk penutupan kedudukan dapat dengan cepat mengunci keuntungan.

  5. Strategi keseluruhan mengintegrasikan penentuan trend, kedudukan grid, dan penutupan kedudukan isyarat tertentu.

Analisis Risiko

Terdapat juga beberapa risiko dalam strategi ini:

  1. Kemungkinan penentuan trend kitaran besar yang salah. Terdapat beberapa kebarangkalian kesilapan dalam purata bergerak cepat dan perlahan, yang boleh membawa kepada operasi terbalik yang tidak perlu.

  2. Kebarangkalian kegagalan penembusan garis Bollinger.

  3. Isyarat bar pin mungkin keluar lewat dan tidak dapat mengunci keuntungan pada waktunya.

  4. Ia mudah untuk membentuk terlalu banyak kedudukan bertindih semasa penyesuaian kejutan kitaran besar.

Penyelesaian yang sepadan adalah:

  1. Sesuaikan parameter purata bergerak pantas dan perlahan untuk mengurangkan kebarangkalian kesilapan.

  2. Sesuaikan parameter garis Bollinger untuk membuat garis Bollinger berpegang pada kebanyakan turun naik sebanyak mungkin.

  3. Uji corak khusus yang lebih sensitif untuk isyarat mengambil keuntungan.

  4. Meningkatkan jarak selang untuk mengawal saiz kedudukan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan ke arah berikut:

  1. Uji parameter purata bergerak yang berbeza untuk mengoptimumkan penentuan trend kitaran besar. Sebagai contoh, uji penunjuk lain seperti EMA, RSI, dll.

  2. Uji pelbagai parameter ATR untuk mengoptimumkan tetapan lebar saluran Bollinger.

  3. Uji isyarat mengambil keuntungan yang cekap, contohnya, SAR, Garis Kalman, dll.

  4. Mengoptimumkan selang grid untuk membuat selang turun naik dibahagikan lebih merata untuk mengurangkan kedudukan yang bertindih.

  5. Meningkatkan mekanisme stop loss, mengelakkan kerugian besar dalam keadaan pasaran yang melampau.

Ringkasan

Strategi ini mengintegrasikan penggunaan saluran Bollinger, penunjuk purata bergerak, corak K-line tertentu dan cara teknikal lain. Di bawah premis menentukan trend kitaran besar, ia membina strategi grid penjejakan trend berdasarkan purata bergerak dan Bollinger Bands. Berbanding dengan pecah Bollinger band tradisional, strategi ini menambah penilaian ciri trend, yang dapat mengurangkan kedudukan terbalik yang tidak perlu. Pada masa yang sama, kaedah kedudukan grid mempelbagaikan risiko untuk setiap unit dana untuk mendapatkan pulangan yang stabil. Strategi ini boleh dioptimumkan dari pelbagai sudut seperti penentuan trend, lebar Bollinger, isyarat mengambil keuntungan, kaedah stop loss, dan lain-lain untuk mendapatkan kesan strategi yang lebih stabil.


/*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 lanjut