Ikuti Strategi Barisan

Penulis:ChaoZhang, Tarikh: 2023-12-01 18:31:39
Tag:

img

Ringkasan

Strategi Follow Line adalah strategi pengesanan trend berdasarkan Bollinger Bands dan Average True Range (ATR). Ia secara dinamik menyesuaikan garis penghakiman trend untuk mengesan trend dengan mengalihkannya ke atas apabila harga pecah di atas band atas Bollinger Bands dan mengalihkannya ke bawah apabila harga pecah di bawah band bawah Bollinger Bands.

Logika Strategi

Strategi ini mula-mula mengira band atas dan bawah Bollinger Bands, serta Julat Benar Purata. Kemudian ia menilai sama ada harga pecah di atas band atas Bollinger atau di bawah band bawah.

Apabila harga melanggar band atas, jika penapis ATR diaktifkan, garis trend ditetapkan pada harga terendah dikurangkan ATR. Jika penapis ATR dilumpuhkan, garis trend ditetapkan terus pada harga terendah.

Apabila harga pecah di bawah jalur bawah, jika penapis ATR diaktifkan, garis trend ditetapkan pada harga tertinggi ditambah ATR. Jika penapis ATR dilumpuhkan, garis trend ditetapkan terus pada harga tertinggi.

Oleh itu, garis penghakiman trend boleh diselaraskan secara dinamik berdasarkan penembusan harga Bollinger Bands untuk mengesan trend.

Apabila garis trend semasa lebih tinggi daripada yang sebelumnya, ia menunjukkan trend menaik. Apabila garis trend semasa lebih rendah daripada yang sebelumnya, ia menunjukkan trend menurun.

Isyarat perdagangan kemudiannya boleh dihasilkan berdasarkan penilaian trend untuk pergi panjang atau pendek.

Analisis Kelebihan

  • Garis trend yang menyesuaikan secara dinamik dapat menangkap trend harga dengan fleksibel
  • Menggabungkan dengan Bollinger Bands boleh tepat pada masanya menilai pembalikan trend pada band breakouts
  • Memperkenalkan penapis ATR boleh mengelakkan beberapa isyarat pecah palsu

Analisis Risiko

  • Parameter BB yang tidak betul boleh menyebabkan pecah palsu yang kerap
  • Parameter ATR yang berlebihan mungkin terlepas peluang pembalikan trend
  • Perlu mempertimbangkan stop loss untuk mengelakkan kerugian daripada pergerakan melampau

Beberapa risiko boleh dikurangkan melalui penyesuaian parameter, memperkenalkan stop loss.

Arahan pengoptimuman

  • Mengoptimumkan parameter BB dan ATR untuk mencari konfigurasi terbaik
  • Tambah penunjuk lain untuk menapis pecah palsu
  • Pilih tempoh BB dan ATR berdasarkan instrumen dagangan tertentu

Kesimpulan

Strategi Follow Line bertujuan untuk menangkap trend harga di pasaran yang tidak menentu. Ia adalah strategi pengesanan trend yang berkesan. Penyesuaian parameter yang betul dan pengoptimuman boleh membawa kepada keuntungan yang baik. Walau bagaimanapun, risiko perlu diuruskan melalui stop loss dan mencegah pecah palsu. Adalah disyorkan untuk menggabungkan strategi ini dengan penunjuk atau strategi lain untuk meningkatkan keuntungan.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Dreadblitz
//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy Follow Line Indicator ",
         shorttitle = "S-FLI",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=1,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2014, title = "Year", minval = 2000)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2000)

Config            = input(title = "══════════════ Config ══════════════", defval = true, type = input.bool)
BBperiod          = input(defval = 21,     title = "BB Period",    type = input.integer, minval = 1)
BBdeviations      = input(defval = 1.00,     title = "BB Deviations",    type = input.float, minval = 0.1, step=0.05)
UseATRfilter      = input(defval = true, title = "ATR Filter",  type = input.bool)
ATRperiod         = input(defval = 5,     title = "ATR Period",    type = input.integer, minval = 1)
hl                = input(defval = false, title = "Hide Labels",  type = input.bool)


backTestPeriod() => true

//
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

BBUpper=sma (close,BBperiod)+stdev(close, BBperiod)*BBdeviations
BBLower=sma (close,BBperiod)-stdev(close, BBperiod)*BBdeviations
//
TrendLine = 0.0
iTrend = 0.0
buy = 0.0
sell = 0.0
//
BBSignal = close>BBUpper? 1 : close<BBLower? -1 : 0
// 
if BBSignal == 1 and UseATRfilter == 1
    TrendLine:=low-atr(ATRperiod)
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 1
    TrendLine:=high+atr(ATRperiod)
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 1
    TrendLine:=TrendLine[1]
//
if BBSignal == 1 and UseATRfilter == 0
    TrendLine:=low
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 0
    TrendLine:=high
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 0
    TrendLine:=TrendLine[1]
//
iTrend:=iTrend[1]
if TrendLine>TrendLine[1] 
    iTrend:=1
if TrendLine<TrendLine[1] 
    iTrend:=-1
//
buy:=iTrend[1]==-1 and iTrend==1 ? 1 : na
sell:=iTrend[1]==1 and iTrend==-1? 1 : na
//
plot(TrendLine, color=iTrend > 0?color.blue:color.red ,style=plot.style_line,linewidth=2,transp=0,title="Trend Line") 
plotshape(buy == 1 and hl == false? TrendLine-atr(8) :na, text='💣', style= shape.labelup, location=location.absolute, color=color.blue, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 and hl == false ?TrendLine+atr(8):na, text='🔨', style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white, offset=0, transp=0,size=size.auto)

// Strategy Entry
if (backTestPeriod())
    strategy.entry("long", true, 1, when = buy == 1)
    strategy.entry("short", false, 1, when = sell == 1) 

Lebih lanjut