
Strategi ini didasarkan pada indeks saluran komoditas klasik (CCI), hanya melakukan overhead. Ketika indikator CCI berada pada level yang sangat rendah (CCI <-150 atau threshold yang didefinisikan pengguna) dan mendapatkan kembali intensitas (CCI dari garis K akar depan CCI) sambil memfilter ke titik intensitas harga sendiri (yang menandakan bahwa harga tutup K harus lebih tinggi dari batas tertentu dari harga buka - tetap 0,25%), sistem masuk ke pasar.
Strategi ini digunakan untuk mendapatkan keuntungan yang tinggi (lebih dari 50%) daripada mengejar sepanjang trend. Oleh karena itu, ini cocok untuk pedagang yang tidak bisa menerima kerugian potensial.
Fungsi ta.sma() dan ta.dev() digunakan untuk membangun indeks CCI dan band antara keduanya.
Gunakan input untuk memilih tanggal mulai perdagangan, dan atur jendela pengembalian.
Syarat masuk: Menembus garis rendah di bawah CCI dan mulai naik, dan meminta sinyal K untuk ditutup dengan harga 0,25% lebih tinggi dari harga buka.
Kondisi 1: CCI di atas memakai on line, stop stop dan pergi dari lapangan.
Kondisi Keluar 2: Jatuh dari Stop Loss Line, Keluar dari Loss Line.
Strategi hanya melakukan lebih banyak, berdasarkan kekuatan indikator CCI untuk memilih waktu masuk, sekaligus memanfaatkan risiko pengendalian kerugian.
Strategi ini memiliki keuntungan sebagai berikut:
Menggunakan indikator CCI untuk mengidentifikasi overbought dan oversold, Anda dapat secara efektif menangkap peluang untuk membalikkannya.
Hanya melakukan multi-arah, menghindari terlalu banyak risiko dari operasi yang salah.
Untuk memastikan bahwa harga telah membentuk support pada saat masuk, gunakan harga force filter.
Sistem Stop Loss mengontrol kerugian tunggal dan pengelolaan dana yang efektif.
Parameter pengembalian dapat disesuaikan dengan kondisi penyaringan masuk.
Investor yang fokus pada pengelolaan dana memiliki peluang menang yang lebih tinggi.
Strategi yang jelas, kode yang sederhana dan mudah dipahami.
Strategi ini juga memiliki beberapa risiko:
Jika Anda hanya melakukan multi arah, mudah untuk melewatkan garis pendek yang cenderung ke bawah.
Pengaturan parameter CCI yang salah dapat menyebabkan kegagalan.
Pengaturan Stop Loss terlalu longgar untuk mengontrol kerugian secara efektif.
“Kalau tidak ada penyesuaian, maka akan terjadi kerugian besar.
Frekuensi transaksi yang terlalu tinggi menyebabkan tekanan pada biaya transaksi.
Langkah-langkah manajemen risiko yang sesuai:
Optimalkan parameter CCI untuk mencari nilai optimal.
Mengatur stop loss untuk menemukan keseimbangan antara risiko dan probabilitas stop loss untuk ditembus.
Mengambil biaya transaksi dalam pertimbangan, untuk mengontrol frekuensi masuk.
Menghindari perdagangan satu arah, dengan mengkombinasikan penilaian tren dan zona.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Menggunakan stop loss dinamis, menyesuaikan jarak stop loss sesuai dengan volatilitas pasar.
Menggabungkan indikator seperti MACD untuk menghindari stop loss yang terlalu longgar.
Meningkatkan peluang untuk menjual, dan pertimbangkan untuk mengosongkan posisi saat indikator cici terlalu panas.
Pertimbangkan faktor biaya transaksi dan tetapkan jarak penghentian minimum.
Parameter optimasi dikombinasikan dengan kerangka waktu strategi untuk mencari kombinasi optimal.
Mengoptimalkan parameter secara otomatis menggunakan metode pembelajaran mesin.
Menambahkan modul pengelolaan dana, mengadaptasi posisi secara dinamis.
Secara keseluruhan, strategi ini memanfaatkan karakteristik overbought dan oversold dari indikator CCI, melakukan lebih banyak ketika harga membentuk dukungan, mengejar perdagangan tingkat tinggi dengan mengendalikan risiko stop loss. Keunggulan strategi ini adalah operasi yang mudah dan kontrol risiko yang tersedia. Kekurangan yang ada adalah hanya melakukan lebih banyak, stop loss terlalu tetap, dan lain-lain. Masalah ini dapat diperbaiki dengan cara optimasi parameter, menambah titik jual, stop loss dinamis, dan lain-lain.
/*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"}]
*/
//@version=5
strategy(title='CCI High Performance long only', overlay=false )
src = input(close)
length = input.int(20, title='Period', minval=1)
lossp = input.float(8, title='Stop Loss percentage', minval=0.5, step=0.5)
scart = input.float(0.25, title='Close of the signal bar higher than Open %', minval = 0)
upperline = input.int(150, title='Upper Band', minval=0, step=10)
lowline = input.int(-150, title='Low Band', maxval=0, step=10)
// construction of CCI (not on close but in totalprice) and of bands
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
plot(cci, 'CCI', color=color.new(#996A15, 0))
band1 = hline(upperline, 'Upper Band', color=#C0C0C0, linestyle=hline.style_dashed)
band0 = hline(lowline, 'Lower Band', color=#C0C0C0, linestyle=hline.style_dashed)
fill(band1, band0, color=color.new(#9C6E1B, 90), title='Background')
// === INPUT BACKTEST RANGE ===
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromYear = input.int(defval = 2016, title = "From Year", minval = 1970)
thruMonth = input.int(defval = 1, title = "Thru Month", minval = 1, maxval = 12)
thruDay = input.int(defval = 1, title = "Thru Day", minval = 1, maxval = 31)
thruYear = input.int(defval = 2112, title = "Thru Year", minval = 1970)
// === FUNCTION EXAMPLE limit for backtest ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
//ENTRY CONDITIONS
// strategy: enter when CCI is under the low line and starts increasing. The filter is that the signal candle should mark a close higher than a x-percent
// (0.25%) of the open
// Exit when either when it reaches the target of a prices highest than high level of CCI or fixed stop loss (in percentage)
scart_level = open * (1+scart/100)
entryl = cci[1] < lowline[1] and cci > cci[1] and close > scart_level and window()
exit1 = cci> upperline
strategy.entry('Long', strategy.long, when=entryl)
strategy.close('Long', when=exit1, comment='target')
// money management (only stop loss)
losspel = strategy.position_avg_price * (1 - lossp / 100)
fixed_stop_long = close < losspel
strategy.close('Long', when=fixed_stop_long, comment='Stop Loss')