Strategi Terobosan CCI yang Kuat

Penulis:ChaoZhang, Tanggal: 2023-11-15 16:52:06
Tag:

img

Gambaran umum

Strategi ini didasarkan pada Indeks Saluran Komoditas klasik (CCI) dan hanya berlangsung lama. Ini memasuki pasar ketika indikator CCI berada di tingkat yang sangat rendah (CCI <-150 atau ambang batas yang ditentukan pengguna) dan kembali kuat (yaitu CCI> CCI dari lilin sebelumnya), dengan filter pada kekuatan harga itu sendiri (yaitu penutupan bar sinyal harus lebih tinggi dari perbedaan tertentu - ditetapkan pada 0,25% - dari pembukaan).

Strategi ini berakhir ketika stop loss dipicu atau harga naik di atas band atas CCI.

Tujuan adalah untuk mencapai persentase yang tinggi dari perdagangan yang menguntungkan (lebih dari 50%) daripada menangkap durasi penuh tren.

Logika Strategi

  1. Membangun indikator CCI dan band menggunakan ta.sma() danta.dev() fungsi.

  2. Gunakan input untuk memilih tanggal awal untuk backtest.

  3. Sinyal masuk: CCI melintasi band bawah dan mulai meningkat.

  4. Keluar 1: CCI naik di atas band atas, mengambil keuntungan.

  5. Keluar 2: Harga turun di bawah level stop loss, potong kerugian.

  6. Strategi hanya berjalan lama berdasarkan kekuatan CCI, dengan berhenti untuk mengendalikan risiko.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Mengidentifikasi overbought/oversold dengan CCI untuk memanfaatkan pembalikan.

  2. Hanya arah panjang yang menghindari risiko yang berlebihan dari perdagangan yang buruk.

  3. Filter kekuatan harga memastikan dukungan terbentuk sebelum masuk.

  4. Mekanisme stop loss membatasi kerugian per perdagangan dan mengelola modal.

  5. Parameter backtest yang fleksibel untuk menyesuaikan filter masuk.

  6. Tingkat kemenangan yang tinggi cocok dengan investor yang fokus pada manajemen risiko.

  7. Logika yang jelas dan penerapan yang sederhana.

Analisis Risiko

Ada juga beberapa risiko:

  1. Berjalan hanya panjang mungkin melewatkan tren penurunan jangka pendek.

  2. Pengaturan parameter CCI yang buruk menyebabkan kegagalan.

  3. Stop loss terlalu longgar gagal untuk membatasi kerugian.

  4. Tren naik yang kuat menerobos berhenti menyebabkan kerugian besar.

  5. Frekuensi perdagangan yang tinggi meningkatkan biaya transaksi.

Solusi yang mungkin:

  1. Mengoptimalkan parameter CCI untuk menemukan nilai terbaik.

  2. Sesuaikan stop loss untuk menyeimbangkan risiko dan slip.

  3. Mengelola frekuensi masuk mempertimbangkan biaya.

  4. Gabungkan dengan filter tren dan rentang.

Peluang Peningkatan

Beberapa cara untuk meningkatkan strategi:

  1. Mengimplementasikan berhenti dinamis berdasarkan volatilitas pasar.

  2. Tambahkan filter seperti MACD untuk menghindari stop terlalu lebar.

  3. Masukkan sisi pendek ketika CCI terlalu panas.

  4. Pertimbangkan biaya, tetapkan target keuntungan minimum.

  5. Mengoptimalkan parameter untuk kerangka waktu.

  6. Pembelajaran mesin untuk penyesuaian parameter otomatis.

  7. Tambahkan ukuran posisi untuk alokasi dinamis.

Kesimpulan

Singkatnya, strategi long-only ini memanfaatkan tingkat overbought / oversold CCI dengan filter kekuatan harga dan stop loss. Ini menawarkan implementasi yang mudah, kontrol risiko yang baik dan persentase kemenangan yang tinggi. Keterbatasan menjadi long-only dan stop tetap dapat ditangani melalui optimasi parameter, entri pendek, stop dinamis dll. Strategi ini cocok untuk investor yang mencari tingkat kemenangan yang tinggi dan manajemen risiko yang tepat.


/*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')



Lebih banyak