Chiến lược này là một hệ thống giao dịch theo xu hướng dựa trên Chande Momentum Oscillator (CMO). Nó tìm kiếm các cơ hội mua trong các khu vực quá bán và bán trong các khu vực quá mua, trong khi kết hợp giới hạn thời gian giữ vị trí để quản lý rủi ro. Cách tiếp cận này cho phép nắm bắt sự đảo ngược giá trong khi tránh giao dịch thường xuyên trong các thị trường khác nhau.
Cốt lõi của chiến lược sử dụng chỉ số CMO để đo đạc động lực thị trường. CMO tạo ra một dao động dao động từ -100 đến 100 bằng cách tính tỷ lệ của sự khác biệt giữa các chuyển động lên và xuống với tổng của chúng. Hệ thống tạo ra một tín hiệu dài khi CMO giảm xuống dưới -50, cho thấy tình trạng thị trường bán quá mức. Các vị trí được đóng khi CMO vượt quá 50 hoặc khi thời gian nắm giữ vượt quá 5 chu kỳ. Thiết kế này nắm bắt các cơ hội phục hồi giá trong khi thực hiện các biện pháp lấy lợi nhuận và dừng lỗ kịp thời.
Chiến lược theo xu hướng dựa trên động lực này nắm bắt các cơ hội mua quá nhiều và bán quá nhiều thị trường bằng cách sử dụng chỉ số CMO. Thiết kế chiến lược là hợp lý, với các quy tắc giao dịch rõ ràng và các cơ chế kiểm soát rủi ro. Trong khi rủi ro vốn có tồn tại, tối ưu hóa có thể tăng thêm sự ổn định và lợi nhuận của chiến lược. Chiến lược đặc biệt phù hợp với các thị trường biến động cao và có thể đạt được lợi nhuận tốt trong các giai đoạn xu hướng rõ ràng.
/*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)