Ikuti Strategi Garis

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

img

Gambaran umum

Strategi Follow Line adalah strategi pelacakan tren yang didasarkan pada Bollinger Bands dan Average True Range (ATR). Strategi ini secara dinamis menyesuaikan garis penilaian tren untuk melacak tren dengan memindahkannya ke atas ketika harga pecah di atas band atas Bollinger Bands dan memindahkannya ke bawah ketika harga pecah di bawah band bawah Bollinger Bands.

Logika Strategi

Strategi ini pertama-tama menghitung band atas dan bawah Bollinger Bands, serta Average True Range. Kemudian menilai apakah harga pecah di atas band atas Bollinger atau di bawah band bawah.

Ketika harga menembus band atas, jika filter ATR diaktifkan, garis tren ditetapkan pada harga terendah dikurangi ATR. Jika filter ATR dinonaktifkan, garis tren ditetapkan langsung pada harga terendah.

Ketika harga menembus band bawah, jika filter ATR diaktifkan, garis tren diatur ke harga tertinggi ditambah ATR. Jika filter ATR dinonaktifkan, garis tren diatur langsung ke harga tertinggi.

Dengan demikian, garis penilaian tren dapat disesuaikan secara dinamis berdasarkan price breakout dari Bollinger Bands untuk melacak tren.

Ketika garis tren saat ini lebih tinggi dari yang sebelumnya, itu menunjukkan tren naik. Ketika garis tren saat ini lebih rendah dari yang sebelumnya, itu menunjukkan tren turun.

Sinyal perdagangan kemudian dapat dihasilkan berdasarkan penilaian tren untuk pergi panjang atau pendek.

Analisis Keuntungan

  • Garis tren yang disesuaikan secara dinamis dapat menangkap tren harga secara fleksibel
  • Menggabungkan dengan Bollinger Bands dapat tepat waktu menilai pembalikan tren pada band breakout
  • Memperkenalkan filter ATR dapat menghindari beberapa sinyal pecah palsu

Analisis Risiko

  • Parameter BB yang tidak benar dapat menyebabkan seringnya pecahnya palsu
  • Parameter ATR yang berlebihan dapat kehilangan peluang pembalikan tren
  • Perlu mempertimbangkan stop loss untuk mencegah kerugian dari gerakan ekstrem

Beberapa risiko dapat dikurangi melalui penyesuaian parameter, memperkenalkan stop loss. juga dapat dikombinasikan dengan indikator lain untuk penyaringan sinyal untuk meningkatkan validitas breakout.

Arahan Optimasi

  • Mengoptimalkan parameter BB dan ATR untuk menemukan konfigurasi terbaik
  • Tambahkan indikator lain untuk menyaring penyebaran palsu
  • Pilih periode BB dan ATR berdasarkan instrumen perdagangan tertentu

Kesimpulan

Strategi Follow Line bertujuan untuk menangkap tren harga di pasar yang tidak stabil. Ini adalah strategi pelacakan tren yang efektif. Penyesuaian parameter yang tepat dan pengoptimalan dapat menyebabkan keuntungan yang layak. Namun, risiko perlu dikelola melalui stop loss dan mencegah breakout palsu.


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