Strategi Talian Penjejakan


Tarikh penciptaan: 2023-12-01 18:31:39 Akhirnya diubah suai: 2023-12-01 18:31:39
Salin: 1 Bilangan klik: 609
1
fokus pada
1621
Pengikut

Strategi Talian Penjejakan

Gambaran keseluruhan

Strategi pengesanan garis adalah strategi pengesanan trend yang berdasarkan pada indikator Brin dan jangkauan pergerakan sebenar rata-rata (ATR). Ia secara dinamik menyesuaikan garis penghakiman trend, menyesuaikan ke atas apabila ia menembusi Brin dan ke bawah apabila ia menembusi Brin, untuk membuat penghakiman dan pengesanan trend.

Prinsip Strategi

Strategi ini pertama-tama mengira tren naik dan turun di Burin, dan juga jangkauan pergerakan sebenar purata. Kemudian menilai sama ada harga menembusi tren naik atau turun Burin.

Apabila harga meletup, jika penapis ATR diaktifkan, garis penghakiman trend akan ditetapkan sebagai harga minimum tolak ATR; jika penapis ATR tidak diaktifkan, ia akan ditetapkan secara langsung sebagai harga minimum.

Apabila harga menembusi ke bawah, jika penapis ATR diaktifkan, garis penghakiman trend akan ditetapkan sebagai harga tertinggi ditambah ATR; jika penapis ATR tidak diaktifkan, ia akan ditetapkan sebagai harga tertinggi.

Dengan cara ini, garis penghakiman trend dapat disesuaikan secara dinamik berdasarkan harga yang menembusi Brin dan turun ke bawah, sehingga dapat membuat penghakiman trend.

Apabila garis penghakiman trend semasa lebih tinggi daripada garis penghakiman trend terdahulu, ia menunjukkan bahawa ia sedang dalam trend naik; apabila garis penghakiman trend semasa lebih rendah daripada garis penghakiman trend terdahulu, ia menunjukkan bahawa ia sedang dalam trend menurun.

Bergantung kepada trend, strategi ini boleh digunakan untuk melakukan lebih banyak operasi shorting.

Analisis kelebihan

  • Garis penghakiman trend yang disesuaikan secara dinamik, dapat menangkap trend harga secara fleksibel
  • Kaedah ini juga boleh digunakan untuk mengesan perubahan trend semasa harga naik.
  • Pengenalan parameter ATR, yang boleh menapis sebahagian daripada isyarat penembusan palsu

Analisis risiko

  • Pilihan parameter Brin yang salah boleh menyebabkan pelanggaran palsu yang kerap
  • Terlalu besar ATR parameter boleh menyebabkan kehilangan peluang untuk mengubah trend
  • Pertimbangan Hentikan Kerosakan untuk Mengelakkan Kerosakan yang Berasal dari Keadaan Ekstrem

Beberapa risiko boleh dielakkan dengan menyesuaikan parameter, memperkenalkan hentian, atau memfilterkannya dengan penunjuk lain untuk meningkatkan keberkesanan penembusan.

Arah pengoptimuman

  • Mengoptimumkan parameter Brinband dan ATR untuk mencari konfigurasi terbaik
  • Menambah penilaian indikator lain untuk menapis penembusan palsu
  • Kitaran Brin dan kitaran ATR dipilih untuk jenis dagangan tertentu

ringkaskan

Strategi garis pengesanan bertujuan untuk menangkap trend harga dalam keadaan turun naik, merupakan strategi pengesanan trend yang berkesan. Dengan penyesuaian dan pengoptimuman parameter, keuntungan yang baik dapat diperoleh.

Kod sumber strategi
/*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)