
Strategi ini menggunakan CCI jangka panjang 50 siklus untuk menentukan arah tren utama di pasar, dan menggunakan CCI jangka pendek 5 siklus untuk menangkap perubahan dinamika pasar dan waktu masuk. Metode kombinasi dua siklus ini tidak hanya dapat menyaring sinyal palsu secara efektif, tetapi juga dapat memberikan titik masuk yang akurat pada awal tren, memaksimalkan keuntungan inti dari tren yang ditangkap.
Logika inti dari strategi ini didasarkan pada teori perubahan garis nol dan momentum dari indikator CCI. Prinsip operasionalnya adalah sebagai berikut:
Syarat Masuk:
Kondisi posisi multifungsi:
Syarat untuk masuk dengan kepala kosong(Hanya saat mengaktifkan fungsi mengosongkan):
Kondisi posisi kosong:
Strategi dengan VariabelinPositiveCciLongCycle、firstCrossoverOccurredDanfirstCrossunderOccurredMelacak status siklus tren, memastikan hanya melakukan satu perdagangan dalam satu siklus tren, efektif menghindari sering perdagangan di pasar yang bergoyang dan kehilangan biaya proses yang tidak perlu.
Dengan analisis kode yang mendalam, strategi ini menunjukkan beberapa keuntungan yang signifikan:
Konfirmasi ganda tentang tren dan momentumKombinasi indikator CCI jangka panjang dan jangka pendek, membentuk mekanisme konfirmasi ganda arah tren dan waktu masuk, secara signifikan mengurangi risiko sinyal palsu.
Waktu masuk yang tepatStrategi: Mengidentifikasi perubahan momentum melalui siklus pendek CCI melintasi garis nol, dapat memberikan titik masuk yang lebih akurat pada awal tren, meningkatkan efisiensi penggunaan dana.
Hindari transaksi yang seringDengan adanya mekanisme single entry per siklus, secara efektif dapat dihindari adanya transaksi yang sering terjadi di pasar yang bergejolak, sehingga mengurangi biaya transaksi.
Model perdagangan yang fleksibel: Dukungan untuk melakukan perdagangan hanya multi atau dua arah, pengguna dapat menyesuaikan dengan kondisi pasar yang berbeda sesuai dengan lingkungan pasar dan preferensi pribadi.
Umpan balik visual yang jelasStrategi menyediakan petunjuk visual yang intuitif, termasuk garis indikator CCI dan tanda sinyal perdagangan, untuk memudahkan analisis dan verifikasi.
Parameter yang dapat disesuaikan: Pengguna dapat menyesuaikan parameter siklus CCI panjang dan pendek sesuai dengan karakteristik pasar dan varietas yang berbeda, meningkatkan fleksibilitas strategi.
Meskipun strategi ini dirancang dengan baik, ada risiko potensial berikut:
Risiko pembalikan trenDalam kasus pembalikan tren yang kuat, CCI jangka panjang mungkin tidak dapat melintasi garis nol dalam waktu yang tepat, menyebabkan sinyal posisi kosong yang tertunda, yang dapat menyebabkan pengembalian keuntungan yang telah diperoleh. Solusinya adalah dengan memperkenalkan mekanisme stop-loss atau menambahkan indikator posisi kosong yang lebih sensitif.
Pasar horizontal tidak efektifDalam situasi pasar yang berada di posisi horizontal jangka panjang atau tanpa tren yang jelas, strategi dapat menghasilkan beberapa sinyal yang tidak efektif, yang menyebabkan kerugian. Disarankan untuk menggunakan strategi ini ketika Anda mengkonfirmasi bahwa pasar berada dalam tren yang jelas.
Parameter SensitivitasPilihan parameter siklus CCI memiliki dampak yang signifikan terhadap kinerja strategi, dan mungkin memerlukan pengaturan parameter yang berbeda untuk pasar yang berbeda. Disarankan untuk menemukan kombinasi parameter yang sesuai untuk pasar tertentu dengan mengoptimalkan pengembalian.
Ketergantungan satu indikatorStrategi hanya mengandalkan indikator CCI, kurangnya dukungan dari indikator teknis lainnya atau bentuk harga, dapat meningkatkan risiko sinyal palsu. Pertimbangkan untuk menambahkan kondisi penyaringan tambahan.
Manajemen keuangan yang buruk: Menggunakan manajemen posisi rasio tetap dalam kode ((100% dana), mungkin membawa risiko yang terlalu tinggi di pasar yang sangat fluktuatif. Disarankan untuk menyesuaikan ukuran posisi sesuai dengan dinamika pasar yang berfluktuasi.
Berdasarkan analisis kode, strategi ini dapat dioptimalkan dari beberapa arah:
Menambahkan kondisi filterKombinasi dengan indikator teknis lainnya seperti garis rata-rata, RSI atau MACD, membangun mekanisme konfirmasi ganda, meningkatkan kualitas sinyal. Optimalisasi ini dilakukan karena indikator CCI tunggal dapat menghasilkan sinyal yang menyesatkan dalam beberapa lingkungan pasar, dan kombinasi dengan beberapa indikator dapat saling melengkapi kekurangan masing-masing.
Masukkan parameter adaptasiOptimalisasi ini membantu strategi untuk mempertahankan kinerja yang stabil dalam lingkungan yang berbeda berfluktuasi.
Manajemen Uang yang BaikPengelolaan posisi dinamis berbasis ATR diperkenalkan, yang secara otomatis menyesuaikan ukuran posisi sesuai dengan volatilitas pasar, menyeimbangkan keuntungan dan risiko. Peningkatan ini memungkinkan strategi untuk mengendalikan risiko di pasar yang berfluktuasi tinggi, sekaligus memanfaatkan peluang dalam tren yang berfluktuasi rendah.
Menambahkan mekanisme stop lossDesain strategi stop loss yang dinamis berdasarkan volatilitas pasar, melindungi keuntungan yang telah diperoleh dan membatasi kerugian transaksi tunggal. Dengan demikian, dapat dihindari penarikan kembali keuntungan besar yang disebabkan oleh reaksi CCI jangka panjang yang tertunda.
Optimisasi frekuensiAdaptasi parameter strategi atau logika perdagangan untuk waktu perdagangan yang berbeda (misalnya, buka, tutup) untuk menyesuaikan karakteristik pasar pada setiap waktu. Pasar sering menunjukkan karakteristik volatilitas dan tren yang berbeda pada waktu yang berbeda, optimasi yang ditargetkan dapat meningkatkan stabilitas strategi.
Meningkatkan kontrol penarikanDesain mekanisme kontrol penarikan maksimum, yang secara otomatis menurunkan posisi atau menghentikan perdagangan jika strategi berkinerja buruk, untuk mencegah kerugian berkelanjutan.
Strategi perdagangan CCI momentum tren dua siklus adalah sistem pelacakan tren yang efisien berdasarkan indikator CCI, menangkap waktu masuk terbaik dengan cara identifikasi arah tren pasar dengan sinergi jangka panjang dan jangka pendek. Strategi ini dirancang secara sederhana dan efektif, terutama untuk pasar dengan tren yang jelas. Meskipun ada sensitivitas parameter tertentu dan risiko ketergantungan pada satu indikator, orientasi optimasi yang disarankan, termasuk kombinasi multi-indikator, parameter adaptif, dan mekanisme manajemen dana yang disempurnakan, dapat secara signifikan meningkatkan kehandalan dan adaptasi strategi.
/*backtest
start: 2024-07-03 00:00:00
end: 2025-07-01 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
// @version=6
// @description= Trend-following trading strategy based on the Commodity Channel Index (CCI) and price action confirmation.
// The strategy focuses on identifying momentum-driven trends with entry and exit conditions.
// @author: withoutbug
strategy("Momentum CCI Trend Following Strategy",
overlay=false,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.075,
margin_long=0,
margin_short=0)
// Input parameters
cciLongPeriod = input.int(50, "Long CCI Period", minval=1)
cciShortPeriod = input.int(5, "Short CCI Period", minval=1)
twoWayTrading = input(false, "Enable Short Order Book")
// Calculate CCI
cciLong = ta.cci(hlc3, cciLongPeriod)
cciShort = ta.cci(hlc3, cciShortPeriod)
cciLongCrossUnderZero = ta.crossunder(cciLong, 0)
cciShortCrossOverZero = ta.crossover(cciShort, 0)
cciLongCrossOverZero = ta.crossover(cciLong, 0)
cciShortCrossUnderZero = ta.crossunder(cciShort, 0)
// Track CCI Long > 0 state and first crossover
var bool inPositiveCciLongCycle = false
var bool firstCrossoverOccurred = false
var bool firstCrossunderOccurred = false
// Update CCI Long cycle state
firstCrossoverOccurred := false
firstCrossunderOccurred := false
// Buy conditions
buySignal = strategy.position_size==0 and cciLong > 0 and cciLong[1] > 0 and cciShortCrossOverZero and firstCrossoverOccurred == false
if buySignal
firstCrossoverOccurred := true
// Exit conditions
exitLong = strategy.position_size>0 and cciLongCrossUnderZero
// Sell conditions
sellSignal = strategy.position_size==0 and cciLong < 0 and cciLong[1] < 0 and cciShortCrossUnderZero and firstCrossunderOccurred == false
if sellSignal
firstCrossunderOccurred := true
// Exit conditions
exitShort = strategy.position_size<0 and cciLongCrossOverZero
// Strategy logic
if (buySignal)
strategy.entry("Long", strategy.long)
if (exitLong)
strategy.close("Long", comment="CCI Exit Long")
if (sellSignal and twoWayTrading)
strategy.entry("Short", strategy.short)
if (exitShort and twoWayTrading)
strategy.close("Short", comment="CCI Exit Short")
// Plot CCI indicators on the panel
plot(cciLong, title="Long CCI", color = cciLong>=0 ? color.green:color.red, linewidth=2, style = plot.style_area)
plot(cciShort, title="Short CCI", color=color.yellow, linewidth=1)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)
// Plot buy and sell signals on the panel
plotshape(buySignal, title="Buy Signal", location=location.bottom, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(exitLong, title="exitLong", location=location.top, color=color.red, style=shape.triangledown, size=size.tiny)
plotshape(sellSignal, display = twoWayTrading?display.pane:display.none, title="Sell Signal", location=location.top, color=color.red, style=shape.triangledown, size=size.tiny)
plotshape(exitShort, display = twoWayTrading?display.pane:display.none, title="exitShort", location=location.bottom, color=color.green, style=shape.triangleup, size=size.tiny)