Strategi Pengesanan Trend Purata Bergerak Saluran Dinamik

Penulis:ChaoZhang, Tarikh: 2024-02-22 15:51:48
Tag:

img

Ringkasan

Strategi ini direka berdasarkan prinsip saluran dinamik dan penjejakan trend purata bergerak. Ia mengira saluran harga dinamik, menilai arah trend melalui rel atas dan bawah saluran, dan menghasilkan isyarat perdagangan dengan menggabungkan purata bergerak untuk menapis turun naik harga. Strategi ini sesuai untuk perdagangan trend jangka sederhana dan pendek.

Prinsip

Prinsip utama strategi ini ialah:

  1. Mengira saluran harga dinamik. Garis tengah saluran dikira dari harga tertinggi dan harga terendah. Rel atas adalah garis tengah + turun naik harga MA, dan rel bawah adalah garis tengah - turun naik harga MA.

  2. Menghakimi arah trend. Apabila harga memecahkan melalui rel atas, ia ditakrifkan sebagai bullish. Apabila harga memecahkan melalui rel bawah, ia ditakrifkan sebagai bearish.

  3. Gunakan MA turun naik harga tempoh tertentu untuk menapis bunyi bising dari turun naik harga rawak.

  4. Menghasilkan isyarat perdagangan. Apabila bullish, isyarat beli dihasilkan apabila harga penutupan lebih rendah daripada harga terbuka dalam tempoh itu. Apabila bearish, isyarat jual dihasilkan apabila harga penutupan lebih tinggi daripada harga terbuka.

Kelebihan

Kelebihan strategi ini ialah:

  1. Saluran dinamik boleh menangkap trend harga dalam masa nyata.
  2. Penapis MA boleh mengurangkan isyarat palsu.
  3. Menggabungkan arah trend dan arah entiti K-line untuk menjana isyarat perdagangan mengelakkan terperangkap.

Risiko

Risiko strategi ini ialah:

  1. Pemilihan Param yang tidak betul boleh membawa kepada pemasangan berlebihan.
  2. Ia mudah untuk menjana isyarat yang salah semasa turun naik sisi.
  3. Ia tidak boleh meramalkan turun naik harga yang melampau.

Penyelesaian:

  1. Pilihan dan ujian Param yang ketat.
  2. Tambah keadaan penapis untuk mengenal pasti sisi.
  3. Tetapkan stop loss / keuntungan untuk mengawal risiko.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Stabiliti ujian param tempoh yang berbeza.
  2. Tambah indikator VOLUME atau volatiliti untuk menilai momentum.
  3. Gabungkan jalur, saluran dan lain-lain untuk menentukan masuk dan keluar.

Ringkasan

Strategi ini mengintegrasikan idea penilaian trend saluran dinamik dan MA, dan berfungsi dengan baik dalam menangkap arah trend dalam jangka sederhana dan pendek.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.0", shorttitle = "NoroBands str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//up =  and trend == 1 ? 1 : 0
//dn =  and trend == -1 ? 1 : 0 

up = close < hd and trend == 1 and (close < open or color == false) ? 1 : 0
dn = close > ld and trend == -1 and (close > open or color == false) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Lebih lanjut