
Chiến lược này kết hợp ba chỉ số kỹ thuật: chỉ số chuyển động ((CCI), chỉ số chuyển động theo hướng ((DMI) và chỉ số phân tích trung bình di chuyển ((MACD) để đánh giá tình trạng mua bán quá mức và hướng xu hướng của thị trường. Một tín hiệu mua được tạo ra khi CCI vượt lên từ vùng bán tháo và DI + lớn hơn DI - và MACD lớn hơn đường tín hiệu; một tín hiệu bán được tạo ra khi CCI vượt lên từ vùng mua quá mức và DI - lớn hơn DI + và MACD nhỏ hơn đường tín hiệu.
Chiến lược này tạo ra tín hiệu mua và bán bằng cách kết hợp ba chỉ số kỹ thuật CCI, DMI và MACD để đưa ra phán đoán tổng hợp về tình trạng mua quá mức, hướng xu hướng và cường độ xu hướng của thị trường. Ý tưởng chiến lược rõ ràng và dễ thực hiện, nhưng trong ứng dụng thực tế cần chú ý đến việc tối ưu hóa các tham số chiến lược, kiểm soát tần suất giao dịch và rủi ro để tăng sự ổn định và lợi nhuận của chiến lược.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("CCI, DMI, and MACD Strategy", overlay=true)
// Define inputs
cci_length = input(14, title="CCI Length")
overbought_level = input(100, title="Overbought Level")
oversold_level = input(-100, title="Oversold Level")
// Calculate CCI
cci_value = ta.cci(close, cci_length)
// Calculate DMI
[di_plus, di_minus, _] = ta.dmi(14, 14)
// Calculate MACD
[macd_line, signal_line, _] = ta.macd(close, 24, 52, 9)
// Define buy and sell conditions
buy_signal = ta.crossover(cci_value, oversold_level) and di_plus > di_minus and macd_line > signal_line // CCI crosses above -100, Di+ > Di-, and MACD > Signal
sell_signal = ta.crossunder(cci_value, overbought_level) and di_minus > di_plus and macd_line < signal_line // CCI crosses below 100, Di- > Di+, and MACD < Signal
// Define exit conditions
buy_exit_signal = ta.crossover(cci_value, overbought_level) // CCI crosses above 100
sell_exit_signal = ta.crossunder(cci_value, oversold_level) // CCI crosses below -100
// Execute trades based on conditions
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=buy_exit_signal)
strategy.entry("Sell", strategy.short, when=sell_signal)
strategy.close("Sell", when=sell_exit_signal)
// Plot CCI
plot(cci_value, title="CCI", color=color.blue)
// Plot DMI
plot(di_plus, title="DI+", color=color.green)
plot(di_minus, title="DI-", color=color.red)
// Plot MACD and Signal lines
plot(macd_line, title="MACD", color=color.orange)
plot(signal_line, title="Signal", color=color.purple)
// Plot overbought and oversold levels
hline(overbought_level, "Overbought", color=color.red)
hline(oversold_level, "Oversold", color=color.green)