Strategi ini berdasarkan kepada penunjuk Indeks Saluran Komoditi (CCI) dan menggunakan tahap kemasukan adaptif dinamik untuk menentukan masa pembalikan trend, sambil menggunakan stop loss yang menyusul untuk mengunci keuntungan.
Indikator teras adalah CCI, digunakan untuk melihat zon oversold oleh itu mengisyaratkan peluang pembalikan trend. Juga, sejauh mana zon oversold CCI berbeza-beza di antara instrumen dan persekitaran pasaran yang berbeza. Oleh itu, strategi ini mengambil pendekatan
Secara khusus, tahap isyarat pembelian CCI lalai adalah -145. Strategi kemudian memeriksa bacaan CCI terendah selama 40 hari yang lalu, 50 hari dan lain-lain hari kemunculan yang berbeza. Jika CCI terendah berada di atas tahap seterusnya seperti -90, maka -90 menjadi tahap kemasukan baru. Dan seterusnya, tahap kemasukan boleh bertukar antara -145 / -90 / -70 / -50 / -4 / 0 / +25 / +50 / +70 secara dinamik. Isyarat kemasukan panjang dicetuskan apabila CCI jatuh di bawah tahap yang sesuai.
Di samping itu, penangguhan kerugian yang berturut-turut digunakan untuk mengunci keuntungan, dengan tahap berhenti bergerak naik bersama dengan harga.
Dibandingkan dengan tahap kemasukan tetap, reka bentuk dinamik sedemikian membolehkan masa kemasukan yang dioptimumkan. Mengikuti kemasukan yang lebih konservatif semasa aliran menurun yang kuat mengurangkan risiko, sementara kemasukan yang lebih rendah semasa pasaran terhad julat membolehkan menangkap lebih banyak peluang. Ini meningkatkan kemampuan penyesuaian strategi.
CCI itu sendiri adalah penunjuk yang jelas dan boleh dipercayai untuk mengenal pasti tahap overbought / oversold. Logik menilai pembalikan trend berdasarkan CCI terbukti. Digabungkan dengan reka bentuk entri dinamik, kelebihan keseluruhan strategi ini adalah penting.
Logik untuk mengesan titik pembalikan trend mempunyai beberapa atribut yang tertinggal. Waktu kemasukan mungkin tidak tepat semasa lonjakan harga tiba-tiba atau kemalangan. Juga, mekanisme penyesuaian mungkin tidak sesuai dengan persekitaran pasaran semasa, yang membawa kepada kemasukan yang tidak optimum. Akhirnya, turun naik yang tinggi di pasaran komoditi boleh menyebabkan kerugian besar jika parameter stop loss tidak ditetapkan dengan betul.
Terutamanya CCI itu sendiri, reka bentuk peringkat permulaan dan parameter stop loss boleh ditingkatkan.
Strategi ini menggabungkan logik menggunakan CCI untuk melihat zon overbought / oversold dan reka bentuk tahap kemasukan adaptif dinamik untuk menangkap pembalikan trend. Berbanding dengan parameter tetap, tahap kemasukan dinamik meningkatkan fleksibiliti dengan ketara. Model penangkapan pembalikan kemasukan ini dengan stop loss yang tertinggal dapat merebut peluang dengan momentum yang kuat dan memotong kerugian dalam masa. Dengan parameter yang dikonfigurasikan dengan betul, strategi ini menunjukkan daya maju dan ketahanan. Penambahbaikan lanjut boleh dibuat dengan terus mengoptimumkan parameter CCI dan peraturan tahap kemasukan untuk mencapai kestabilan dan keuntungan yang lebih tinggi.
/*backtest start: 2023-11-20 00:00:00 end: 2023-12-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true) // Inputs cciLength = input(20, title="CCI Period") defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level") adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days") adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days") adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days") adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days") adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days") adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days") adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days") adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days") lookback40 = input(40, title="Lookback Period for -90 Level") lookback50 = input(50, title="Lookback Period for -70 Level") lookback60 = input(60, title="Lookback Period for -50 Level") lookback90 = input(90, title="Lookback Period for -4 Level") lookback120 = input(120, title="Lookback Period for 0 Level") lookback140 = input(140, title="Lookback Period for +25 Level") lookback160 = input(160, title="Lookback Period for +50 Level") lookback180 = input(180, title="Lookback Period for +70 Level") // Indicator Calculation cci = ta.cci(close, cciLength) // Determine adaptive entry level based on lookback periods var float entryLevel = defaultCCIEntryOversold // Initialize with the default level if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90 entryLevel := adaptiveCCIEntryLevel90 if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days entryLevel := adaptiveCCIEntryLevel70_50Days if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50 entryLevel := adaptiveCCIEntryLevel50 if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4 entryLevel := adaptiveCCIEntryLevel4 if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0 entryLevel := adaptiveCCIEntryLevel0 if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25 entryLevel := adaptiveCCIEntryLevel25 if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days entryLevel := adaptiveCCIEntryLevel50_160Days if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days entryLevel := adaptiveCCIEntryLevel70_180Days // Entry Condition longCondition = cci < entryLevel // Entry and Exit if (longCondition) strategy.entry("Long", strategy.long, qty=1) alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar) trailOffset = input(10.0, title="Trailing Stop Offset in USD") strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close) if (close < entryLevel - trailOffset) alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar) // Plotting plot(series=cci, color=color.purple, title="CCI") hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level") hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)") hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)") hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)") hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)") hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)") hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)") hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)") hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")