
Strategi ini adalah strategi perdagangan terobosan berdasarkan indikator saluran. Ia menggunakan ciri-ciri getaran saluran naik dan turun, melakukan lebih banyak apabila harga menembusi saluran naik dan kosong apabila ia menembusi saluran turun, dan merupakan jenis strategi trend-following.
Strategi ini menggunakan garis tengah saluran pengiraan SMA untuk menambah satu nilai parameter ke atas dan dikurangkan satu nilai parameter ke bawah untuk membentuk saluran harga. Kemudian menilai sama ada harga menembusi atas dan bawah, dan menggabungkan lonjakan jumlah perdagangan sebagai isyarat pembukaan kedudukan. Apabila harga kembali ke saluran, ia berfungsi sebagai isyarat kedudukan yang rata.
Secara khusus, logik perdagangan strategi ini adalah seperti berikut:
Hitung sumbu tengah saluran: SMA ((harga penutupan, N)
Garis lintasan: sumbu tengah + nilai parameter
Laluan bawah orbit: sumbu tengah - nilai parameter
Apabila menembusi garisan atas, masuk lebih banyak jika memenuhi syarat jumlah dagangan lebih besar daripada 2 kali ganda dari kitaran sebelumnya
Kembali ke laluan, ambil kedudukan yang lebih baik
Apabila menembusi garis bawah, masuklah secara terbuka jika memenuhi syarat jumlah dagangan lebih besar daripada 2 kali ganda daripada kitaran sebelumnya
Kembali ke laluan, kedudukan kosong.
Strategi ini mempunyai beberapa kelebihan:
Dengan menggunakan penunjuk saluran, trend harga dapat dikesan dengan berkesan.
Ia juga boleh digunakan untuk menyaring penembusan palsu.
Kembali ke dalam saluran sebagai mekanisme penarikan diri dari kerugian yang boleh mengehadkan kerugian dalam satu transaksi.
Ciri-ciri getaran sesuai untuk menangkap trend garis pendek.
Logik pelaksanaan mudah, mudah difahami dan dilaksanakan.
Strategi ini mempunyai beberapa risiko:
Apabila harga berada di sisi saluran untuk jangka masa yang panjang, ia akan mencetuskan kedudukan terbuka yang sama dan menghadapi risiko kerugian.
Tetapan parameter saluran yang tidak betul boleh menyebabkan terlalu banyak isyarat yang salah.
Ia juga boleh terlepas daripada isyarat yang benar-benar penting.
Mekanisme penarikan diri dari kerugian mungkin terlalu konservatif dan terlepas peluang besar.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Mengoptimumkan parameter saluran agar lebih sesuai dengan ciri-ciri pasaran yang berbeza.
Mengoptimumkan atau menambah syarat untuk membuka kedudukan, seperti mempertimbangkan garis rata-rata kosong, atau bentuk Kline, dan sebagainya, untuk mengelakkan penembusan palsu.
Mengoptimumkan mekanisme penarikan diri dari kerugian, melonggarkan tahap kerugian yang sesuai, dan mengelakkan penarikan diri lebih awal.
Menambah mekanisme pengurusan kedudukan, menyesuaikan kedudukan dan penggunaan dana mengikut keadaan pasaran.
Menggunakan lebih banyak penunjuk untuk menentukan arah trend peringkat besar, dan mengelakkan berhadapan dengan trend besar.
Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang lebih mudah dan praktikal. Ia menggunakan sifat getaran saluran harga, yang dapat menangkap tren garis pendek dengan berkesan. Tetapi juga perlu berhati-hati dalam menetapkan parameter pengoptimuman, dan mencegah risiko yang ada di dalamnya, untuk mendapatkan kesan strategi yang lebih baik.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Copyright, 2022, Cache_that_pass. You are free to use this script however you see fit and reproduce it in any manner.
//@version=5
////// Name the strategy between the 2 quotation marks. Consider setting commission type and value in strategy header to match exchanges rates. //////
strategy("Oscillating SSL Channel Strategy", "O-SSL Strat", overlay=true, pyramiding=1, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 100, calc_on_order_fills=true)
////// Inputs and calculations used by script //////
period = input(title='Period', defval=25)
len = input(title='Period', defval=25)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh
////// Show me the money //////
plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))
////// Trade execution logic //////
//pseudo-code//
//Go long when high (or maybe close) breaks above the sslUp and volume is 2x or > Volume[1] and sslUp > sslDown
//Close the above longs when sslUp crosses under sslDown (or set takeprofit and stop loss exits)
//
//Go short when low is lower than the sslUp and volume is 2x or > Volume[1] and sslDown > sslUp
//Close shorts when sslDown crosses under sslUp
longCondition1 = (sslUp > sslDown)
longCondition2 = ta.crossover(high, sslUp)
//longCondition3 = (volume >= (volume[1]*1.89))
longCondition = ((longCondition1) and (longCondition2))// and (longCondition3))
longExit = ta.crossunder(sslUp, sslDown)
////// Bring It //////
if (longCondition)
strategy.entry("Bring It", strategy.long)
////// Sling It //////
if (longExit)
strategy.close("Bring It", comment="Sling It")
shortCondition1 = (sslDown) > (sslUp)
shortCondition2 = ta.crossunder(low, sslUp)
//shortCondition3 = (volume >= (volume[1]*1.89))
shortCondition = ((shortCondition1) and (shortCondition2))// and (shortCondition3))
shortExit = ta.crossunder(sslDown, sslUp)
////// Bring It //////
if (shortCondition)
strategy.entry("Bring It", strategy.long)
////// Sling It //////
if (shortExit)
strategy.close("Bring It", comment="Sling It")
////// Sling It //////
if (shortCondition)
strategy.entry("Sling It", strategy.short)
////// Bling It //////
if (shortExit)
strategy.close("Sling It", comment="Bring It")