
Strategi perdagangan momentum CCI yang beradaptasi sendiri adalah sistem perdagangan kuantitatif berbasis indikator teknis, yang intinya didasarkan pada indikator IFTCCI yang dikembangkan oleh Kıvanc Özbilgiç. Strategi ini menghasilkan sinyal beli dan jual dengan menetapkan tingkat penurunan yang tepat ketika indikator berayun antara -1 dan +1. Strategi ini memicu sinyal beli ketika indikator menembus batas tertentu dari rendah (di bawah -0.95) ke atas; dan sinyal jual ketika indikator menembus batas tertentu dari tinggi (di atas -0.95) ke bawah. Selain itu, strategi ini juga mencakup mekanisme stop loss dan kondisi masuk: jika harga bergerak ke arah yang berlawanan setelah sinyal dibuat, sistem akan memicu stop loss atau melakukan operasi masuk kembali.
Inti dari strategi ini adalah indikator IFTCCI, yang dihitung melalui langkah-langkah berikut:
Rumusnya adalah sebagai berikut:
v1 = 0.1 * (CCI(close, period) / 4)
v2 = WMA(v1, wma_period)
IFTCCI = (e^(2*v2) - 1) / (e^(2*v2) + 1)
Logika pelaksanaan kebijakan dibagi menjadi beberapa bagian penting:
Kondisi pembelian:
Kondisi penjualan:
Pelacakan status:
Strategi ini menggunakan manajemen dana persentase, menggunakan 100% dana yang tersedia untuk setiap transaksi, dan melarang penambahan posisi. Strategi ini menghitung sinyal secara real-time saat setiap garis K terbentuk, memastikan untuk menangkap dinamika pasar secara tepat waktu.
Aturan masuk dan keluarStrategi ini memberikan sinyal perdagangan yang jelas berdasarkan nilai penurunan numerik yang tepat, menghindari penilaian subjektif, dan membuat keputusan perdagangan lebih objektif dan disiplin.
Sistem Manajemen Risiko DinamisSistem Stop Loss Built-in: Sistem Stop Loss Built-in dapat secara efektif membatasi kerugian pada satu transaksi, dan secara otomatis keluar dari pasar jika pergerakan pasar yang berbalik melampaui batas yang telah ditentukan, untuk melindungi keamanan dana.
Adaptasi pasar yang kuatIndikator IFTCCI berfluktuasi antara -1 dan + 1 melalui konversi reverse-double-curvature. Indikator IFTCCI memiliki sifat penyatuan alami yang berlaku untuk lingkungan pasar yang berfluktuasi.
Sinyal halus, mengurangi false breach: Menggunakan rata-rata bergerak berbobot untuk memperlancar CCI asli, secara efektif mengurangi kebisingan dan sinyal palsu, meningkatkan keandalan sinyal perdagangan.
Mekanisme Masuk Ulang yang CerdasKetika pasar kembali ke tren setelah keluar, mekanisme masuk kembali memungkinkan sistem untuk mengambil kembali peluang dan meningkatkan profitabilitas strategi.
Visual yang bagus.Strategi: Tampilkan perubahan warna latar belakang yang jelas pada grafik, membantu pedagang memahami keadaan pasar dan sinyal perdagangan secara intuitif.
Parameter yang dapat disesuaikanSemua parameter kunci dapat disesuaikan melalui antarmuka input, sehingga strategi dapat disesuaikan dengan kondisi pasar yang berbeda dan preferensi risiko pribadi.
Perdagangan yang sering terjadi di pasar yang bergoyangDalam pasar yang bergejolak, indikator mungkin sering berfluktuasi di sekitar titik terendah, menghasilkan sinyal beli dan jual yang berulang, yang menyebabkan overtrading dan erosi biaya. *Solusi*Anda dapat menambahkan kondisi penyaringan tambahan, seperti penyaringan waktu atau penyaringan tren, untuk mengurangi frekuensi perdagangan di pasar yang bergoyang.
Masalah dengan Stop Loss FixedStrategi saat ini menggunakan nilai tetap ((0.1 unit) sebagai stop loss yang mungkin terlalu besar atau terlalu kecil dalam lingkungan pasar yang berfluktuasi. Solusi: Anda dapat mendesain stop loss yang dapat disesuaikan, menyesuaikan jarak stop loss sesuai dengan dinamika volatilitas pasar baru-baru ini
Kurangnya konfirmasi tren jangka panjangStrategi ini didasarkan pada momentum jangka pendek, tanpa analisis tren jangka panjang, yang dapat menghasilkan perdagangan yang tidak perlu jika tren utama berbalik. Solusi: Menggunakan indikator tren jangka panjang sebagai filter, hanya berdagang di arah tren.
Resiko dari mekanisme re-admissionRe-entry mechanism yang ada saat ini didasarkan pada rebound margin yang tetap, yang dapat menyebabkan re-entry prematur jika terjadi false breakout. Solusi: Menambahkan kondisi konfirmasi tambahan, seperti konfirmasi pengiriman atau sinyal yang sesuai dengan indikator teknis lainnya.
Ketergantungan satu indikatorStrategi ini hanya mengandalkan satu indikator IFTCCI untuk membuat keputusan, kurangnya analisis pasar multi-dimensi. *Solusi*Introduksi kombinasi indikator yang saling melengkapi, seperti RSI, MACD, atau indikator volatilitas, untuk memberikan konfirmasi pasar dari berbagai sudut.
Integrasi analisis multi-frame waktu: Strategi saat ini hanya berjalan pada satu kerangka waktu dan dapat mengintegrasikan analisis kerangka waktu yang lebih tinggi, misalnya menggunakan indikator IFTCCI pada kerangka waktu yang lebih tinggi sebagai filter arah perdagangan dan hanya berdagang di arah tren yang lebih besar. Ini dapat mengurangi perdagangan berlawanan arah dan meningkatkan tingkat kemenangan.
Penyesuaian nilai terendah dinamis: Mengubah ambang batas yang tetap (-0.95⁄0.95) menjadi ambang batas yang disesuaikan berdasarkan dinamika pasar yang berfluktuasi. Gunakan ambang batas yang lebih sempit dalam lingkungan yang kurang berfluktuasi, gunakan ambang batas yang lebih luas dalam lingkungan yang berfluktuasi tinggi, untuk menyesuaikan kebutuhan untuk menghasilkan sinyal dalam kondisi pasar yang berbeda.
Mekanisme konfirmasi pengiriman: Dengan menambahkan komponen analisis volume transaksi yang memerlukan dukungan volume transaksi yang signifikan saat sinyal dihasilkan, dapat memfilter sinyal terobosan berkualitas rendah dan mengurangi kerugian akibat terobosan palsu.
Pengelolaan dana yang optimal: Strategi saat ini menggunakan persentase tetap untuk manajemen posisi, yang dapat ditingkatkan menjadi sistem manajemen dana adaptif berdasarkan volatilitas pasar dan probabilitas kemenangan, meningkatkan posisi pada sinyal keyakinan tinggi, mengurangi posisi pada sinyal keyakinan rendah.
Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter indikator IFTCCI (siklus CCI dan siklus WMA) secara adaptif, menyesuaikan kombinasi parameter terbaik secara otomatis sesuai dengan lingkungan pasar yang berbeda, meningkatkan adaptasi strategi.
Filter waktu transaksi: Menambahkan filter waktu perdagangan untuk menghindari periode fluktuasi yang tinggi pada saat pembukaan dan penutupan pasar, atau menghindari waktu publikasi data ekonomi penting, mengurangi fluktuasi yang tidak dapat diprediksi yang disebabkan oleh peristiwa mendadak.
Analisis korelasi: Memperkenalkan analisis relevansi dengan pasar atau aset lain, meningkatkan kredibilitas sinyal perdagangan dan meningkatkan stabilitas strategi ketika sinyal serupa muncul di beberapa pasar terkait pada saat yang sama.
Strategi perdagangan momentum CCI yang beradaptasi adalah sistem perdagangan kuantitatif yang terstruktur, logis dan jelas, yang menghasilkan sinyal perdagangan melalui penembusan nilai terendah dari indikator IFTCCI, dan dilengkapi dengan mekanisme stop-loss dan re-entry untuk mengelola risiko dan menangkap peluang. Keuntungan utama dari strategi ini adalah kejelasan sinyal, dinamika kontrol risiko, dan kemampuan penyesuaian parameter yang kuat.
Namun, strategi ini juga menghadapi risiko seperti sering diperdagangkan di pasar yang bergoyang, stop loss tetap tidak fleksibel, dan kurangnya konfirmasi tren jangka panjang. Dengan mengintegrasikan analisis multi-frame timeframe, penyesuaian penurunan nilai secara dinamis, penambahan konfirmasi volume transaksi, pengoptimalan manajemen dana, dan pengoptimalan yang diperkenalkan untuk meningkatkan pembelajaran mesin dan menambahkan penyaringan waktu perdagangan, strategi ini dapat secara signifikan meningkatkan stabilitas dan profitabilitas.
Bagi pedagang yang ingin menerapkan strategi ini, disarankan untuk mulai dengan menguji kombinasi parameter yang berbeda di lingkungan simulasi, menemukan pengaturan terbaik yang sesuai dengan varietas perdagangan dan preferensi risiko mereka, dan secara bertahap mengintegrasikan arah optimasi yang diusulkan dalam artikel ini, untuk membangun sistem perdagangan yang lebih komprehensif dan solid.
/*backtest
start: 2024-05-27 00:00:00
end: 2025-01-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © erkankuskonmaz
//@version=5
strategy("IFTCCI Buy Sell Signal Strategy",
overlay=false,
pyramiding=0,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
calc_on_every_tick=true) // NEW LINE: Enables real-time signal generation.
// --- Indicator Settings and Calculations (IFTCCIv2) ---
group_indicator_params = "Indicator Parameters (IFTCCIv2)"
ccilength_param = input.int(5, "CCI Period", group=group_indicator_params)
wmalength_param = input.int(9, title="Smoothing Period (WMA)", group=group_indicator_params)
// IFTCCIv2 Calculation
v1_calc = 0.1 * (ta.cci(close, ccilength_param) / 4)
v2_calc = ta.wma(v1_calc, wmalength_param)
indicator_value_ift = (math.exp(2 * v2_calc) - 1) / (math.exp(2 * v2_calc) + 1)
// --- Strategy Rule Inputs ---
group_entry_rules = "Buy Signal Conditions"
entry_low_prev_max = input.float(-0.95, title="Primary Buy: Previous Bar Max Value", group=group_entry_rules)
entry_low_curr_min = input.float(-0.94, title="Primary Buy: Current Bar Min Value", group=group_entry_rules)
reentry_trigger_units = input.float(0.10, title="Re-entry: Rise from Lowest Value", group=group_entry_rules)
group_exit_rules = "Sell Signal Conditions (Exit Position)"
exit_high_prev_min = input.float(0.95, title="Target Sell: Previous Bar Min Value", group=group_exit_rules)
exit_high_curr_max = input.float(0.94, title="Target Sell: Current Bar Max Value", group=group_exit_rules)
stop_loss_units = input.float(0.10, title="Stop Loss: Drop from Peak Value", group=group_exit_rules)
// --- Indicator Values for Strategy ---
float ind_val = indicator_value_ift
float ind_val_prev = indicator_value_ift[1]
// --- State Tracking Variables ---
var float highest_indicator_since_long_entry = na
var bool track_for_reentry_after_close = false
var float lowest_indicator_since_reentry_tracking_started = na
// --- Update State Logic ---
// 1. Update the highest indicator value since entering long position
if strategy.position_size > 0
if strategy.position_size[1] <= 0
highest_indicator_since_long_entry := ind_val
else
highest_indicator_since_long_entry := math.max(highest_indicator_since_long_entry, ind_val)
else
if strategy.position_size[1] > 0
highest_indicator_since_long_entry := na
// 2. Update re-entry tracking mechanism
if strategy.position_size[1] > 0 and strategy.position_size == 0
track_for_reentry_after_close := true
lowest_indicator_since_reentry_tracking_started := ind_val
else if strategy.position_size > 0
track_for_reentry_after_close := false
lowest_indicator_since_reentry_tracking_started := na
else if track_for_reentry_after_close and strategy.position_size == 0
if not na(lowest_indicator_since_reentry_tracking_started)
lowest_indicator_since_reentry_tracking_started := math.min(lowest_indicator_since_reentry_tracking_started, ind_val)
else
lowest_indicator_since_reentry_tracking_started := ind_val
// --- Buy Conditions (Long Entry) ---
bool can_enter_new_position = strategy.opentrades == 0
// Condition 1: Main Buy Condition
bool condition_main_buy_cross = ind_val_prev <= entry_low_prev_max and ind_val >= entry_low_curr_min
bool main_long_entry_trigger = condition_main_buy_cross and can_enter_new_position
// Condition 2: Re-entry Buy Condition
bool condition_re_entry_trigger = false
if track_for_reentry_after_close and not na(lowest_indicator_since_reentry_tracking_started) and can_enter_new_position
if ind_val >= lowest_indicator_since_reentry_tracking_started + reentry_trigger_units
condition_re_entry_trigger := true
// Combined Buy Condition
bool final_long_entry_condition = main_long_entry_trigger or condition_re_entry_trigger
// --- Sell Conditions (Long Exit) ---
bool currently_in_long_position = strategy.position_size > 0
// Sell Condition 1: Target Sell
bool condition_sell_target = ind_val_prev >= exit_high_prev_min and ind_val <= exit_high_curr_max
// Sell Condition 2: Stop Loss
bool condition_sell_stop_loss = false
if currently_in_long_position and not na(highest_indicator_since_long_entry)
if ind_val <= highest_indicator_since_long_entry - stop_loss_units
condition_sell_stop_loss := true
// Combined Sell Condition
bool final_long_exit_condition = currently_in_long_position and (condition_sell_target or condition_sell_stop_loss)
// --- Strategy Orders ---
if (final_long_entry_condition)
entry_comment = main_long_entry_trigger ? "Buy (Primary)" : "Buy (Re-entry)"
strategy.entry("Buy ID", strategy.long, comment=entry_comment)
if (final_long_exit_condition)
exit_comment = condition_sell_target ? "Sell (Target)" : "Sell (Stop)"
strategy.close("Buy ID", comment=exit_comment)
// --- Plot Indicator and Strategy Markers ---
plot(indicator_value_ift, title="IFTCCI Value", color=color.rgb(0, 0, 0), linewidth=2)
hline(0, "Mid Level", color=color.new(#787b86, 50), linestyle=hline.style_dotted)
hline(0.95, "Upper Reference (+0.95)", color=color.new(#002fff, 10), linestyle=hline.style_dashed)
hline(-0.95, "Lower Reference (-0.95)", color=color.new(#002fff, 10), linestyle=hline.style_dashed)
// Background Coloring on Entry and Exit Signals
color background_color = final_long_entry_condition ? color.new(color.green, 81) : final_long_exit_condition ? color.new(color.red, 81) : na
bgcolor(background_color, title="Signal Background")