Strategi ini berdasarkan pada Indeks Saluran Komoditi klasik (CCI) dan hanya berlangsung lama. Ia memasuki pasaran apabila penunjuk CCI berada pada tahap yang sangat rendah (CCI <-150 atau ambang yang ditakrifkan oleh pengguna) dan mendapatkan kekuatan semula (iaitu CCI> CCI lilin sebelumnya), dengan penapis pada
Strategi ini dihentikan apabila stop loss diaktifkan atau harga meningkat di atas jalur atas CCI.
Matlamatnya adalah untuk mencapai peratusan perdagangan yang menguntungkan (lebih daripada 50%) dan bukannya menangkap tempoh keseluruhan trend.
Membina penunjuk CCI dan jalur menggunakan ta.sma() danta.dev() fungsi.
Gunakan input untuk memilih tarikh permulaan untuk backtest.
Isyarat kemasukan: CCI melintasi bawah jalur bawah dan mula meningkat. penapis tambahan memerlukan tutup > terbuka sebanyak 0.25%.
Keluar 1: CCI naik di atas barisan atas, mengambil keuntungan.
Keluar 2: Harga jatuh di bawah paras stop loss, mengurangkan kerugian.
Strategi hanya berjalan lama berdasarkan kekuatan CCI, dengan berhenti untuk mengawal risiko.
Strategi ini mempunyai kelebihan berikut:
Mengenali overbought/oversold dengan CCI untuk memanfaatkan pembalikan.
Hanya arah panjang mengelakkan risiko berlebihan daripada perdagangan yang buruk.
Penapis kekuatan harga memastikan sokongan terbentuk sebelum masuk.
Mekanisme Stop Loss membatasi kerugian setiap perdagangan dan menguruskan modal.
Parameter backtest yang fleksibel untuk menyesuaikan penapis masuk.
Kadar kemenangan yang tinggi sesuai dengan pelabur yang fokus pada pengurusan risiko.
Logik yang jelas dan pelaksanaan yang mudah.
Terdapat juga beberapa risiko:
Pergi hanya panjang mungkin terlepas daripada trend penurunan jangka pendek.
Penyesuaian parameter CCI yang buruk membawa kepada kegagalan.
Stop loss terlalu longgar gagal untuk mengehadkan kerugian.
Trend menaik yang kuat melanda berhenti menyebabkan kerugian besar.
Frekuensi perdagangan yang tinggi meningkatkan kos transaksi.
Penyelesaian yang mungkin:
Mengoptimumkan parameter CCI untuk mencari nilai terbaik.
Sesuaikan stop loss untuk mengimbangi risiko dan slippage.
Mengurus frekuensi kemasukan dengan mengambil kira kos.
Gabungkan dengan penapis trend dan julat.
Beberapa cara untuk meningkatkan strategi:
Melaksanakan berhenti dinamik berdasarkan turun naik pasaran.
Tambah penapis seperti MACD untuk mengelakkan berhenti terlalu luas.
Masukkan sisi pendek apabila CCI terlalu panas.
Pertimbangkan kos, tetapkan sasaran keuntungan minimum.
Mengoptimumkan parameter untuk jangka masa.
Pembelajaran mesin untuk penyesuaian parameter automatik.
Tambah saiz kedudukan untuk peruntukan dinamik.
Ringkasnya, strategi hanya panjang ini memanfaatkan tahap overbought / oversold CCI dengan penapis kekuatan harga dan stop loss. Ia menawarkan pelaksanaan yang mudah, kawalan risiko yang baik dan peratusan kemenangan yang tinggi. Keterbatasan menjadi hanya panjang dan berhenti tetap boleh ditangani melalui pengoptimuman parameter, entri pendek, berhenti dinamik dll. Strategi ini sesuai untuk pelabur yang mencari kadar kemenangan yang tinggi dan pengurusan risiko yang betul.
/*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')