
Strategi ini adalah sistem dagangan dinamik berdasarkan petunjuk saluran komoditi (CCI) untuk menangkap peluang perdagangan di kawasan pasaran yang berlebihan dengan memantau sejauh mana harga menyimpang dari nilai rata-rata. Strategi ini menggunakan 12 kitaran sebagai tempoh pengulangan, masuk lebih banyak apabila petunjuk CCI jatuh di bawah -90 dan keluar dari kedudukan apabila harga penutupan menembusi titik tinggi sebelumnya, dan dilengkapi dengan pilihan menghentikan kerugian dan keuntungan.
Proses pengiraan CCI terdiri daripada: pertama mengira harga tipikal (rata-rata arithmetik harga tertinggi, terendah dan harga penutupan), kemudian mengira purata bergerak sederhana harga tipikal (SMA), dan akhirnya mengurangkan SMA dengan harga tipikal dan membahagikan dengan pembagian rata-rata deviasi sebanyak 0.015 untuk mendapatkan nilai CCI akhir. Apabila nilai CCI berada di bawah -90, menunjukkan bahawa pasaran mungkin berada di atas keadaan jual, ketika itu tempat masuk lebih banyak; apabila harga menembusi tahap tinggi sebelumnya, yang menunjukkan bahawa trend naik telah ditetapkan, maka strategi keuntungan posisi kosong juga menyediakan pilihan untuk menetapkan parameter stop-loss dan keuntungan, yang dapat disesuaikan secara fleksibel berdasarkan pilihan risiko pedagang.
Strategi ini menangkap peluang overselling pasaran melalui petunjuk CCI, dilengkapi dengan mekanisme menghentikan kerugian dan keuntungan, dan mencapai sistem perdagangan yang lengkap. Logik strategi jelas, mudah dilaksanakan, dan mempunyai keupayaan kawalan risiko yang baik. Dengan memperkenalkan kaedah pengoptimuman seperti penapisan isyarat dan penurunan nilai dinamik, terdapat ruang untuk meningkatkan kestabilan dan keuntungan strategi.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("CCI Threshold Strategy", overlay=false, initial_capital=50000, pyramiding=0, commission_type=strategy.commission.cash_per_contract, commission_value=0.05, slippage=1)
// --- Input Parameters ---
// Lookback period for CCI calculation
lookbackPeriod = input.int(12, minval=1, title="CCI Lookback Period")
// Buy threshold for CCI; typically represents an oversold condition
buyThreshold = input.int(-90, title="CCI Buy Threshold")
// Stop loss and take profit settings
stopLoss = input.float(100.0, minval=0.0, title="Stop Loss in Points")
takeProfit = input.float(150.0, minval=0.0, title="Take Profit in Points")
// Checkboxes to enable/disable SL and TP
useStopLoss = input.bool(false, title="Enable Stop Loss")
useTakeProfit = input.bool(false, title="Enable Take Profit")
// --- Calculate CCI ---
// CCI (Commodity Channel Index) is used as a momentum indicator to identify oversold and overbought conditions
cci = ta.cci(close, length=lookbackPeriod)
// --- Define Buy and Sell Conditions ---
// Buy condition: CCI drops below -90, indicating potential oversold levels
longCondition = cci < buyThreshold
// Sell condition: Close price crosses above the previous day's high, signaling potential exit
sellCondition = close > ta.highest(close[1], 1)
// --- Strategy Execution ---
// Buy entry based on the long condition
if (longCondition)
strategy.entry("Buy", strategy.long)
// Close the long position based on the sell condition
if (sellCondition)
strategy.close("Buy")
// Optional: Add stop loss and take profit for risk management
if (longCondition)
strategy.exit("Sell", from_entry="Buy", loss=useStopLoss ? stopLoss : na, profit=useTakeProfit ? takeProfit : na)
// --- Plotting for Visualization ---
// Plot CCI with threshold levels for better visualization
plot(cci, title="CCI", color=color.blue)
hline(buyThreshold, "Buy Threshold", color=color.red, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)