Strategi Pelacakan Tren Rata-rata Gerak Saluran Dinamis

Penulis:ChaoZhang, Tanggal: 2024-02-22
Tag:

img

Gambaran umum

Strategi ini dirancang berdasarkan prinsip saluran dinamis dan pelacakan tren rata-rata bergerak. Ini menghitung saluran harga dinamis, menilai arah tren melalui rel atas dan bawah saluran, dan menghasilkan sinyal perdagangan dengan menggabungkan rata-rata bergerak untuk menyaring volatilitas harga. Strategi ini cocok untuk perdagangan tren jangka menengah dan pendek.

Prinsip

Prinsip utama dari strategi ini adalah:

  1. Hitung saluran harga dinamis. Garis tengah saluran dihitung dari harga tertinggi dan harga terendah. Rel atas adalah garis tengah + volatilitas harga MA, dan rel bawah adalah garis tengah - volatilitas harga MA.

  2. Bila harga menembus rel atas, itu didefinisikan sebagai bullish. Ketika harga menembus rel bawah, itu didefinisikan sebagai bearish.

  3. Gunakan volatilitas harga MA dari periode tertentu untuk menyaring kebisingan dari fluktuasi harga acak.

  4. Saat bullish, sinyal beli dihasilkan ketika harga penutupan lebih rendah dari harga buka dalam periode tersebut. Saat bearish, sinyal jual dihasilkan ketika harga penutupan lebih tinggi dari harga buka.

Keuntungan

Keuntungan dari strategi ini adalah:

  1. Saluran dinamis dapat menangkap tren harga secara real time.
  2. Filter MA dapat mengurangi sinyal palsu.
  3. Menggabungkan arah tren dan arah entitas K-line untuk menghasilkan sinyal perdagangan menghindari terjebak.

Risiko

Risiko dari strategi ini adalah:

  1. Seleksi Param yang tidak tepat dapat menyebabkan overfit.
  2. Sangat mudah untuk menghasilkan sinyal yang salah selama volatilitas sisi.
  3. Tidak bisa memprediksi fluktuasi harga yang ekstrim.

Solusi:

  1. Seleksi dan pengujian Param yang ketat.
  2. Tambahkan kondisi filter untuk mengidentifikasi sisi.
  3. Atur stop loss / profit untuk mengendalikan risiko.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Stabilitas uji dari param periode yang berbeda.
  2. Tambahkan indikator volume atau volatilitas untuk menilai momentum.
  3. Gabungkan band, saluran dll untuk menentukan masuk dan keluar.

Ringkasan

Strategi ini mengintegrasikan ide-ide penilaian tren saluran dinamis dan MA, dan berkinerja baik dalam menangkap arah tren dalam jangka menengah 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 banyak