Bollinger Fibonacci Grid Tracking Trend Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-13 17:12:38
Tag:

img

Gambaran umum

Strategi ini menggunakan indikator Bollinger Bands untuk menggambar saluran harga berdasarkan retracement ATR dan Fibonacci sebagai grid.

Prinsip Strategi

  1. Gunakan garis tengah Bollinger Bands dan rel atas dan bawah yang dibangun dari ATR dan 4 garis retracement Fibonacci untuk membangun band gelombang harga.

  2. Garis EMA cepat dan garis SMA lambat membentuk rata-rata bergerak ganda untuk menentukan arah tren keseluruhan. Garis cepat yang menembus garis lambat adalah pasar bull, dan sebaliknya adalah pasar bear.

  3. Di pasar bull, hanya pergi panjang, pilih harga dekat rel bawah Bollinger Bands untuk menembus bagian bawah saluran untuk membuka posisi panjang; di pasar bear, hanya pergi pendek, pilih harga dekat rel atas Bollinger Bands untuk menembus bagian atas saluran untuk membuka posisi pendek.

  4. Atur kondisi stop loss: keluar posisi arah saat ini ketika muncul batang pembalikan besar.

Analisis Keuntungan

  1. Gunakan rata-rata bergerak ganda untuk menentukan tren tingkat mega untuk menghindari perdagangan kontra-tren.

  2. Garis saluran Bollinger ATR menetapkan beberapa harga pembukaan untuk meningkatkan probabilitas pembukaan posisi dengan sukses.

  3. Band gelombang Fibonacci retrace menetapkan volatilitas harga, dengan jumlah posisi yang berbeda di band yang berbeda, mencapai dispersi modal.

  4. Kondisi stop loss real-time memfasilitasi stop loss cepat dan mengurangi retracement keuntungan.

Analisis Risiko

  1. Kesalahan dalam menilai tren tingkat mega dapat menyebabkan kerugian yang berlawanan. Sesuai menyesuaikan parameter rata-rata bergerak atau menambahkan indikator lain untuk penilaian tambahan.

  2. Ketika volatilitas terlalu besar, harga dapat menerobos area grid secara langsung, tidak dapat membuka posisi.

  3. Kondisi stop loss lebih subjektif, dan kriteria pengakuan dapat berbeda di antara pedagang.

Arahan Optimasi

  1. Tambahkan indikator APO untuk analisis tambahan dari penilaian tren rata-rata bergerak ganda.

  2. Menggunakan indikator volatilitas pasar untuk mengoptimalkan parameter Bollinger waveband untuk lebih beradaptasi dengan perubahan pasar yang dinamis.

  3. Mengurangi amplitudo stop loss dan menambahkan cara lain untuk mengatur kondisi stop loss untuk mengurangi kesalahan.

Ringkasan

Ide keseluruhan dari strategi ini jelas, menggabungkan saluran Bollinger ATR dan rata-rata bergerak ganda untuk mencapai penilaian komprehensif dari sinyal perdagangan strategi, memaksimalkan pengurangan risiko penilaian yang salah. Keuntungan dari strategi ini jelas dan dapat diterapkan dalam perdagangan yang sebenarnya; tetapi masih ada ruang untuk pengoptimalan dalam detail seperti pengaturan parameter dan kondisi stop loss, yang perlu ditingkatkan lebih lanjut. Diyakini bahwa dengan pengoptimalan berkelanjutan, profitabilitas dan stabilitas strategi ini akan terus meningkat.


/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-12 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,initial_capital=2000, default_qty_type=strategy.fixed, default_qty_value=1)

//回测时间
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



//趋势 trend

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="买(buy)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 and close>ta.ema(close,80)
buy3=ta.crossunder(close,bott3) and longTrend and close>ta.ema(close,80)
buy4=ta.crossunder(close,bott4) and longTrend and close>ta.ema(close,80)
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