Bollinger Fibonacci Grid Tracking Trend Strategi

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

img

Ringkasan

Strategi ini menggunakan penunjuk Bollinger Bands untuk menarik saluran harga berdasarkan retracement ATR dan Fibonacci sebagai grid. Menggabungkan dengan garis EMA berganda untuk menentukan arah trend keseluruhan, tentukan grid stop-loss yang selektif di band harga Bollinger ke arah trend untuk mencapai arbitrage penjejakan trend.

Prinsip Strategi

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

  2. Garis EMA yang cepat dan garis SMA yang perlahan membentuk purata bergerak berganda untuk menentukan arah trend keseluruhan. Garis cepat yang menembusi garis perlahan adalah pasaran lembu, dan sebaliknya adalah pasaran beruang.

  3. Dalam pasaran lembu, hanya pergi panjang, pilih harga berhampiran rel bawah Bollinger Bands untuk menembusi bahagian bawah saluran untuk membuka kedudukan panjang; dalam pasaran beruang, hanya pergi pendek, pilih harga berhampiran rel atas Bollinger Bands untuk menembusi bahagian atas saluran untuk membuka kedudukan pendek.

  4. Tetapkan keadaan stop loss: keluarkan kedudukan arah semasa apabila bar pembalikan besar muncul.

Analisis Kelebihan

  1. Gunakan purata bergerak berganda untuk menentukan trend tahap mega untuk mengelakkan perdagangan kontra-trend.

  2. Grid saluran Bollinger ATR menetapkan pelbagai harga pembukaan untuk meningkatkan kebarangkalian pembukaan kedudukan dengan berjaya.

  3. Band gelombang Fibonacci menetapkan turun naik harga, dengan bilangan kedudukan yang berbeza dalam pelbagai band, mencapai penyebaran modal.

  4. Keadaan stop loss masa nyata memudahkan stop loss yang cepat dan mengurangkan retracement keuntungan.

Analisis Risiko

  1. Kesalahan dalam menilai trend peringkat mega boleh membawa kepada kerugian yang bertentangan. Sesuai menyesuaikan parameter purata bergerak atau menambah penunjuk lain untuk penilaian tambahan.

  2. Apabila turun naik terlalu besar, harga mungkin menerobos kawasan grid secara langsung, tidak dapat membuka kedudukan.

  3. Keadaan stop loss lebih subjektif, dan kriteria pengiktirafan mungkin berbeza di antara peniaga.

Arahan pengoptimuman

  1. Tambah penunjuk APO untuk analisis tambahan penilaian trend purata bergerak berganda.

  2. Menggunakan penunjuk turun naik pasaran untuk mengoptimumkan parameter gelombang Bollinger untuk menyesuaikan diri dengan perubahan pasaran yang dinamik.

  3. Mengurangkan amplitud stop loss dan menambah cara lain untuk menetapkan keadaan stop loss untuk mengurangkan kesilapan.

Ringkasan

Idea keseluruhan strategi ini jelas, menggabungkan saluran Bollinger ATR dan purata bergerak berganda untuk mencapai penilaian menyeluruh mengenai isyarat perdagangan strategi, memaksimumkan pengurangan risiko salah menilai. Kelebihan strategi ini jelas dan boleh digunakan dalam perdagangan sebenar; tetapi masih ada ruang untuk pengoptimuman dalam butiran seperti tetapan parameter dan keadaan stop loss, yang perlu ditingkatkan lagi.


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