Saluran Harga dan Trend Berasaskan Purata Bergerak Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-06 09:46:23
Tag:

img

Ringkasan

Strategi ini mengenal pasti dan mengikuti trend dengan membina Saluran Harga untuk mengira penyimpangan harga dari garisan tengah dan menggunakan purata bergerak untuk menapis isyarat. Isyarat perdagangan dihasilkan apabila harga memecahkan Saluran. Strategi ini mempunyai kedua-dua ciri trend berikut dan pecah.

Logika Strategi

  1. Membina Saluran Harga
  • Mengira tertinggi tertinggi dan terendah terendah dalam tempoh len yang lalu
  • Garis tengah adalah purata tertinggi tinggi dan terendah rendah
  • Jarak adalah penyimpangan mutlak harga dari garisan tengah
  • Jarak yang lancar untuk mendapatkan jalur atas dan bawah
  1. Tentukan Arah Trend
  • Apabila harga di bawah band bawah, tentukan sebagai downtrend
  • Apabila harga di atas barisan atas, tentukan sebagai aliran naik
  1. Menghasilkan Isyarat Perdagangan
  • Dalam trend menaik, lama apabila harga di bawah terbuka atau memecahkan di bawah band atas
  • Dalam trend menurun, pendek apabila harga berada di atas terbuka atau memecahkan di atas jalur bawah

Analisis Kelebihan

  1. Mencatatkan trend jangka menengah hingga panjang
  2. Menggabungkan dengan isyarat pecah untuk mengelakkan perdagangan yang tidak berkesan di pasaran terhad julat
  3. Parameter yang boleh disesuaikan sesuai dengan produk yang berbeza

Analisis Risiko

  1. Lebih banyak kerugian kecil mungkin dalam trend berayun
  2. Tetapan parameter yang tidak sesuai mungkin terlepas pembalikan trend
  3. Memantau kekerapan perdagangan untuk mengelakkan perdagangan berlebihan

Arahan pengoptimuman

  1. Tambah penunjuk lain kepada isyarat penapis
  2. Sesuaikan parameter Saluran Harga secara dinamik
  3. Menggabungkan stop loss untuk mengoptimumkan pengurusan risiko

Kesimpulan

Strategi ini secara keseluruhan cukup kuat dalam mengesan trend jangka menengah hingga panjang dengan berkesan sambil menjana isyarat perdagangan melalui penembusan trend. Penambahbaikan lanjut boleh dibuat melalui pengoptimuman parameter dan penapisan isyarat untuk menyesuaikan strategi dengan lebih banyak produk dan persekitaran pasaran.


/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.1", shorttitle = "NoroBands str 1.1", overlay=true)

//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(true, defval = false, title = "Show Bands")
needbg = input(true, 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)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 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