Ide inti dari strategi ini adalah menggunakan indikator CCI untuk menentukan arah tren pasar dan menggunakan indikator EMA untuk meratakan indikator CCI untuk menerapkan tren setelah perdagangan.
Perhitungkan indikator CCI. Indikator CCI menilai apakah harga saham saat ini terlalu banyak dibeli atau terlalu banyak dijual berdasarkan tingkat penyimpangan dari rata-rata bergerak 20 hari. Rumusnya adalah: (harga khas - SMA 20D) / (0.015 * penyimpangan standar TP 20D).
Perlahankan indikator CCI dengan EMA untuk mendapatkan kurva CCI-EMA, yang mengurangi fluktuasi CCI dan membuat sinyal lebih jelas.
Atur titik beli dan jual untuk CCI. Pergi panjang ketika CCI-EMA melintasi titik beli, dan pergi pendek ketika CCI-EMA melintasi di bawah titik jual.
Tahan posisi sampai CCI-EMA menyentuh titik beli atau jual lagi untuk menutup posisi.
Penggunaan CCI untuk menentukan arah tren pasar dikombinasikan dengan EMA untuk menyaring sinyal palsu dapat secara efektif mengikuti tren pasar.
CCI sensitif terhadap anomali harga dan dapat dengan cepat menangkap pembalikan tren. EMA mengurangi sinyal palsu.
Strategi mengikuti tren meminimalkan transaksi, mengurangi biaya perdagangan dan slippage.
Hasil backtest yang layak, memberikan strategi beberapa kelayakan praktis.
CCI dapat terlalu sensitif terhadap kurva dan EMA tidak dapat sepenuhnya menyaring semua sinyal palsu, beberapa sinyal palsu tetap ada.
Strategi yang mengikuti tren murni cenderung mengalami kerugian ketika tren mengkonsolidasikan atau berbalik.
Sistem perdagangan mekanis tidak dapat menyesuaikan parameter secara fleksibel berdasarkan pasar.
Data backtest terbatas tidak dapat sepenuhnya mencerminkan kinerja langsung. Parameter harus disesuaikan dengan hati-hati dan berhenti dikelola ketat.
Mengoptimalkan parameter CCI dengan menguji periode panjang yang berbeda.
Mengoptimalkan parameter EMA untuk menemukan periode EMA yang optimal.
Uji kombinasi titik beli/jual yang berbeda untuk menemukan parameter yang optimal.
Menggabungkan indikator lain untuk menentukan pembalikan tren dan mengatur stop loss.
Tambahkan optimasi parameter otomatis untuk menemukan parameter optimal untuk produk yang berbeda.
Secara keseluruhan ini adalah tren yang relatif sederhana mengikuti strategi perdagangan. Ini menggunakan CCI untuk menentukan arah tren dan sensitif terhadap perubahan harga, dikombinasikan dengan penyaringan EMA untuk menghasilkan sinyal. Strategi ini memiliki beberapa keuntungan tetapi juga risiko untuk dicatat. Melalui optimasi parameter dan menggunakan indikator lain, stabilitas dan kinerja langsung dapat ditingkatkan lebih lanjut. Secara keseluruhan, ini menyediakan template tren yang sederhana dan dapat diandalkan untuk perdagangan kuantitatif.
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CCI with EMA Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.07) length = input(20, minval=1) src = input(close, title="Source") cciSellPoint = input(0, title = 'CCI Sell Point', type = input.integer) cciBuyPoint = input(0, title = 'CCI Buy Buy Point', type = input.integer) lengthcci = input(12,"length cci ema", minval=1) ma = sma(src, length) cci = (src - ma) / (0.015 * dev(src, length)) cciema=ema(cci,lengthcci) plot(cci, "CCI", color=#996A15) plot(cciSellPoint, title = 'CCI Sell Point', color = color.red, linewidth = 1, style = plot.style_cross, transp = 35) plot(cciBuyPoint, title = 'CCI Buy Point', color = color.green, linewidth = 1, style = plot.style_cross, transp = 35) plot(cciema, title = 'CCI EMA', color = color.green, linewidth = 1, transp = 35) band1 = hline(100, "Upper Band", color=#C0C0C0, linestyle=hline.style_dashed) band0 = hline(-100, "Lower Band", color=#C0C0C0, linestyle=hline.style_dashed) fill(band1, band0, color=#9C6E1B, title="Background") startLongTrade= cciema >cciBuyPoint startShortTrade= cciema <cciSellPoint //exitLong = cciema <cciSellPoint //exitShort = cciema >cciBuyPoint strategy.entry("long",strategy.long, when = startLongTrade ) //strategy.close( "long", when=exitLong) strategy.entry("short",strategy.short,when=startShortTrade ) //strategy.close("short", when=exitShort)