
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên chỉ số biến động động động của Chad (CMO). Chiến lược này tìm kiếm cơ hội mua ở khu vực bán tháo, tìm kiếm cơ hội bán tháo ở khu vực mua tháo, và quản lý rủi ro kết hợp với giới hạn thời gian giữ vị trí. Phương pháp này có thể nắm bắt cơ hội biến động giá và tránh giao dịch thường xuyên trong thị trường biến động.
Trung tâm của chiến lược là sử dụng chỉ số CMO để đo động lực của thị trường. CMO tạo ra một giá trị chỉ số dao động từ -100 đến -100 bằng cách tính toán tỷ lệ chênh lệch giữa mức tăng và giảm so với tổng số. Khi CMO thấp hơn 50, cho thấy thị trường đang bán quá mức, hệ thống sẽ phát ra nhiều tín hiệu.
Đây là một chiến lược theo dõi xu hướng dựa trên động lực, nắm bắt cơ hội mua bán quá mức của thị trường thông qua chỉ số CMO. Chiến lược được thiết kế hợp lý, có quy tắc giao dịch rõ ràng và cơ chế kiểm soát rủi ro. Mặc dù có một số rủi ro vốn có, nhưng bằng cách tối ưu hóa có thể nâng cao hơn nữa sự ổn định và khả năng lợi nhuận của chiến lược.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chande Momentum Oscillator Strategy", overlay=false)
// Input for the CMO period
cmoPeriod = input.int(9, minval=1, title="CMO Period")
// Calculate price changes
priceChange = ta.change(close)
// Separate positive and negative changes
up = priceChange > 0 ? priceChange : 0
down = priceChange < 0 ? -priceChange : 0
// Calculate the sum of ups and downs using a rolling window
sumUp = ta.sma(up, cmoPeriod) * cmoPeriod
sumDown = ta.sma(down, cmoPeriod) * cmoPeriod
// Calculate the Chande Momentum Oscillator (CMO)
cmo = 100 * (sumUp - sumDown) / (sumUp + sumDown)
// Define the entry and exit conditions
buyCondition = cmo < -50
sellCondition1 = cmo > 50
sellCondition2 = ta.barssince(buyCondition) >= 5
// Track if we are in a long position
var bool inTrade = false
if (buyCondition and not inTrade)
strategy.entry("Long", strategy.long)
inTrade := true
if (sellCondition1 or sellCondition2)
strategy.close("Long")
inTrade := false
// Plot the Chande Momentum Oscillator
plot(cmo, title="Chande Momentum Oscillator", color=color.blue)
hline(-50, "Buy Threshold", color=color.green)
hline(50, "Sell Threshold", color=color.red)