Strategi Penembusan Saluran Harga

Penulis:ChaoZhang, Tarikh: 2024-01-16 14:22:57
Tag:

img

Strategi ini dinamakan Price Channel Breakout Strategy. Idea utamanya adalah menggunakan saluran harga untuk menentukan trend dan arah pasaran dan menubuhkan kedudukan apabila harga keluar dari saluran. Ia akan terlebih dahulu menarik julat saluran harga, kemudian menilai sama ada terdapat dua garis K merah atau hijau berturut-turut. Jika garis K terakhir memecahkan separuh lebar saluran dan ditutup di luar saluran, ia akan menghasilkan isyarat beli atau jual.

Logika Strategi

Strategi ini mengira tertinggi tertinggi dan terendah terendah dalam tempoh tertentu di masa lalu menggunakan fungsi tertinggi (() dan terendah (() untuk menentukan rel atas dan bawah saluran harga. Titik tengah saluran ditakrifkan sebagai purata rel atas dan bawah. Ia kemudian mengira saiz badan K-line dan meluruskannya menggunakan SMA untuk menentukan sama ada badan K-line terakhir lebih besar daripada separuh daripada badan purata. Ia juga menilai sama ada dua garis K terakhir berada dalam arah yang sama (dua garis merah atau hijau berturut-turut). Apabila syarat-syarat ini dipenuhi, ia menghasilkan isyarat beli / jual dan menutup kedudukan apabila harga jatuh kembali ke arah saluran.

Analisis Kelebihan

Ini adalah strategi penembusan yang menggunakan saluran harga untuk menilai trend keseluruhan.

  1. Menggunakan saluran harga untuk menentukan arah trend keseluruhan dapat menapis bunyi pasaran dengan berkesan.

  2. Dua garis K berturut-turut yang menembusi saluran dalam arah yang sama menunjukkan momentum yang lebih kuat dan kadar kejayaan yang lebih tinggi.

  3. Menghakimi K-garis badan lebih besar daripada separuh daripada badan purata boleh mengelakkan ditipu oleh pecah palsu.

  4. Logik strategi adalah mudah dan mudah dilaksanakan.

  5. Parameter yang boleh disesuaikan seperti tempoh saluran, produk dagangan, jam dagangan dan lain-lain menjadikannya sangat mudah disesuaikan.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko berpotensi:

  1. Masih ada kemungkinan kegagalan, yang boleh menyebabkan kerugian.

  2. Saluran harga mungkin gagal apabila pasaran turun naik secara ganas.

  3. Kekurangan mekanisme stop loss gagal mengawal kerugian dengan berkesan.

  4. Peraturan perdagangan yang mudah mempunyai risiko yang berlebihan.

  5. Tidak dapat menyesuaikan diri dengan persekitaran pasaran yang lebih kompleks.

Penyelesaian yang sepadan adalah:

  1. Mengoptimumkan parameter untuk meningkatkan kadar kejayaan.

  2. Tambah indeks turun naik untuk mengelakkan pasaran bergolak.

  3. Tambahkan stop loss mudah alih.

  4. Melakukan ujian kerumitan untuk memeriksa pemasangan berlebihan.

  5. Meningkatkan model pembelajaran mesin untuk meningkatkan kesesuaian.

Arahan pengoptimuman

Arah pengoptimuman utama ialah:

  1. Tambahkan mekanisme stop loss untuk mengawal risiko dengan lebih baik. Tetapkan harga retracement stop loss atau stop loss mudah alih berdasarkan ATR.

  2. Mengoptimumkan parameter seperti tempoh saluran, ambang pecah dll. Cari parameter optimum melalui algoritma genetik, carian grid dll.

  3. Tambah syarat penapisan untuk meningkatkan kepastian breakout. Sebagai contoh, menggabungkan jumlah dagangan untuk mengesahkan breakout.

  4. Tambah model pembelajaran mesin seperti LSTM untuk meningkatkan keupayaan ramalan dan kesesuaian dengan menggunakan lebih banyak data.

  5. Melakukan pengoptimuman portfolio, menggabungkan pelbagai jenis strategi pecah untuk mencapai orthogonaliti dan mengurangkan persamaan.

Kesimpulan

Kesimpulannya, ini adalah strategi kuantitatif berdasarkan saluran harga untuk menentukan trend dan menemui isyarat pecah. Ia mempunyai kelebihan menilai trend dan mengesahkan pecah, tetapi juga mempunyai risiko pecah palsu tertentu. Kita boleh meningkatkan strategi dengan pengoptimuman parameter, stop loss, menambah penapis dan lain-lain untuk mengurangkan risiko. Sementara itu, memperkenalkan model pembelajaran mesin dapat meningkatkan lagi keupayaan ramalan. Secara keseluruhan, ini adalah pendekatan strategi kuantitatif yang menjanjikan yang patut diteliti dan diperbaiki.


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

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.0", shorttitle = "Price Channel str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Signals
body = abs(close - open)
abody = sma(body, 10)
up = rbars and close > center and body > abody / 2
dn = gbars and close < center and body > abody / 2
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Lebih lanjut