Strategi ini dinamakan
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.
Ini adalah strategi penembusan yang menggunakan saluran harga untuk menilai trend keseluruhan.
Menggunakan saluran harga untuk menentukan arah trend keseluruhan dapat menapis bunyi pasaran dengan berkesan.
Dua garis K berturut-turut yang menembusi saluran dalam arah yang sama menunjukkan momentum yang lebih kuat dan kadar kejayaan yang lebih tinggi.
Menghakimi K-garis badan lebih besar daripada separuh daripada badan purata boleh mengelakkan ditipu oleh pecah palsu.
Logik strategi adalah mudah dan mudah dilaksanakan.
Parameter yang boleh disesuaikan seperti tempoh saluran, produk dagangan, jam dagangan dan lain-lain menjadikannya sangat mudah disesuaikan.
Strategi ini juga mempunyai beberapa risiko berpotensi:
Masih ada kemungkinan kegagalan, yang boleh menyebabkan kerugian.
Saluran harga mungkin gagal apabila pasaran turun naik secara ganas.
Kekurangan mekanisme stop loss gagal mengawal kerugian dengan berkesan.
Peraturan perdagangan yang mudah mempunyai risiko yang berlebihan.
Tidak dapat menyesuaikan diri dengan persekitaran pasaran yang lebih kompleks.
Penyelesaian yang sepadan adalah:
Mengoptimumkan parameter untuk meningkatkan kadar kejayaan.
Tambah indeks turun naik untuk mengelakkan pasaran bergolak.
Tambahkan stop loss mudah alih.
Melakukan ujian kerumitan untuk memeriksa pemasangan berlebihan.
Meningkatkan model pembelajaran mesin untuk meningkatkan kesesuaian.
Arah pengoptimuman utama ialah:
Tambahkan mekanisme stop loss untuk mengawal risiko dengan lebih baik. Tetapkan harga retracement stop loss atau stop loss mudah alih berdasarkan ATR.
Mengoptimumkan parameter seperti tempoh saluran, ambang pecah dll. Cari parameter optimum melalui algoritma genetik, carian grid dll.
Tambah syarat penapisan untuk meningkatkan kepastian breakout. Sebagai contoh, menggabungkan jumlah dagangan untuk mengesahkan breakout.
Tambah model pembelajaran mesin seperti LSTM untuk meningkatkan keupayaan ramalan dan kesesuaian dengan menggunakan lebih banyak data.
Melakukan pengoptimuman portfolio, menggabungkan pelbagai jenis strategi pecah untuk mencapai orthogonaliti dan mengurangkan persamaan.
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()