
Strategi ini adalah strategi perdagangan terobosan yang didasarkan pada indikator channel. Strategi ini memanfaatkan karakteristik getaran naik dan turun saluran, melakukan lebih banyak ketika harga menembus saluran naik, dan kosong ketika harga menembus saluran turun, dan termasuk dalam jenis strategi pelacakan tren.
Strategi ini pertama-tama menggunakan sumbu tengah saluran yang dihitung SMA, dengan sumbu tengah menambahkan nilai parameter untuk uptrend, mengurangi nilai parameter untuk downtrend, membentuk saluran harga. Kemudian menilai apakah harga menembus uptrend, dan digabungkan dengan lonjakan volume perdagangan sebagai sinyal untuk membuka posisi. Ketika harga kembali ke saluran, sebagai sinyal posisi datar.
Secara khusus, logika transaksi strategi adalah sebagai berikut:
Perhitungan sumbu tengah saluran: SMA ((harga penutupan, N)
Garis lintasan: sumbu tengah + nilai parameter
Garis bawah lintasan: sumbu tengah - nilai parameter
Pada saat menembus garis orbit, jika memenuhi persyaratan volume transaksi lebih besar dari dua kali lipat siklus sebelumnya, lakukan masukan tambahan
Kembali ke Jalur, Posisi Lebih Baik
Pada saat menembus downtrend, jika memenuhi kondisi volume transaksi lebih besar dari 2 kali siklus sebelumnya, melakukan short entry
Kembali ke saluran, posisi kosong
Strategi ini memiliki beberapa keuntungan:
Indikator saluran dapat digunakan untuk melacak tren harga secara efektif.
Terkait kondisi lonjakan volume transaksi, penyaringan terhadap penembusan palsu bisa efektif.
Back-in-channel sebagai mekanisme stop loss dan exit yang dapat membatasi kerugian dalam satu transaksi.
Fitur getaran cocok untuk menangkap tren garis pendek.
Implementasi logis sederhana, mudah dipahami dan diterapkan.
Strategi ini juga memiliki beberapa risiko:
Ketika harga berada di sisi saluran untuk waktu yang lama, akan terus menerus memicu pembukaan posisi yang sama arah, menghadapi risiko kerugian.
Setting parameter saluran yang tidak tepat dapat menyebabkan terlalu banyak sinyal yang salah.
“Kalau tidak, kita bisa kehilangan sinyal yang benar-benar penting”.
Sistem penarikan diri dari kerugian mungkin terlalu konservatif dan melewatkan situasi yang lebih besar.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Mengoptimalkan parameter saluran agar lebih sesuai dengan karakteristik pasar yang berbeda.
Mengoptimalkan atau meningkatkan kondisi untuk membuka posisi, seperti mempertimbangkan rata-rata garis kosong, atau bentuk Kline, dan lain-lain, untuk menghindari false breakout.
Mengoptimalkan mekanisme stop loss dan exit, meringankan stop loss secara tepat, dan menghindari keluar prematur.
Meningkatkan mekanisme manajemen posisi, menyesuaikan posisi dan tingkat pemanfaatan dana sesuai dengan kondisi pasar.
Dengan menggunakan lebih banyak indikator untuk menentukan arah tren tingkat besar, hindari berurusan dengan tren besar.
Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang lebih sederhana dan praktis. Ini memanfaatkan sifat getaran saluran harga, yang dapat secara efektif menangkap tren garis pendek. Tetapi juga perlu memperhatikan pengaturan parameter optimasi, dan mencegah risiko yang ada di dalamnya, sehingga dapat memperoleh efek 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")