
Chiến lược này được gọi là chiến lược giao dịch động lực dựa trên CMO và WMA. Chiến lược này sử dụng Chande Momentum Oscillator (CMO) và trung bình di chuyển trọng lượng của nó (WMA) để xây dựng tín hiệu giao dịch. Ý tưởng cốt lõi là CMO làm nhiều khi đi trên WMA của nó và làm trống khi đi dưới WMA của nó.
Chỉ số cốt lõi của chiến lược này là CMO. CMO có mối quan hệ chặt chẽ với các chỉ số động lực khác như RSI, nhưng cũng có những điểm độc đáo. CMO đo trực tiếp động lượng biến động của giá. Nó được tính toán dựa trên dữ liệu nguyên liệu chưa được mài, do đó có thể phản ánh biến động giá cực ngắn hạn.
Chiến lược này đầu tiên tính toán sự thay đổi trong ngày của giá đóng abs ((close - close[1]) xMom như là Momentum nguyên thủy. XMom được tính là Length day SMA, được ghi là xSMA_mom.[CMO xWMACMO. Lưu ý: CMO xWMACMO. Lưu ý: CMO xWMACMO. Lưu ý: CMO xWMACMO.
Lợi thế lớn nhất của chiến lược này là nắm bắt các đặc điểm động lực trong xu hướng giá. Thiết kế ranh giới của CMO làm cho nó phản ánh trực tiếp sự thay đổi động lực. So với SMA, WMA có thể làm mịn tiếng ồn ngắn hạn hơn. Vì vậy, chiến lược có thể xác định hiệu quả các điểm vào trong xu hướng đường dài. Ngoài ra, sử dụng kết hợp CMO và WMA có thể cải thiện sự ổn định hơn so với chỉ số đơn lẻ.
Rủi ro lớn nhất của chiến lược này là chi phí trượt do giao dịch thường xuyên. CMO và WMA là các tham số ngắn hạn, có thể quá nhạy cảm và tạo ra nhiều lần đảo ngược vô nghĩa. Điều này đặc biệt nghiêm trọng khi biến động giống lớn. Ngoài ra, các tham số cố định không thể thích ứng với sự thay đổi của môi trường thị trường.
Có thể xem xét việc giới thiệu các tham số CMO và WMA để tối ưu hóa các tham số thích ứng để chúng có thể được điều chỉnh động; hoặc thêm các điều kiện lọc để giảm giao dịch vô nghĩa. Tất nhiên, giảm biến động của giống thông qua kết hợp cũng là một lựa chọn.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Thêm cơ chế tham số CMO thích ứng. Tìm các tham số tối ưu trong các môi trường biến động khác nhau;
Thêm cơ chế tham số WMA tự điều chỉnh.
Thêm các điều kiện lọc, chẳng hạn như đưa ra chỉ số biến động, để kiểm soát không cần phải đảo ngược;
Xem xét kết hợp với các chỉ số khác để tăng tính ổn định;
Tối ưu hóa cơ chế dừng lỗ. Thiết lập đường dừng động, chủ động kiểm soát tổn thất một bánh.
Chiến lược này dựa trên CMO và WMA để thực hiện theo dõi xu hướng đơn giản và hiệu quả. Ưu điểm của chiến lược là nắm bắt rõ ràng các đặc điểm động lực giá.
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 13/02/2017
// This indicator plots Chandre Momentum Oscillator and its WMA on the
// same chart. This indicator plots the absolute value of CMO.
// The CMO is closely related to, yet unique from, other momentum oriented
// indicators such as Relative Strength Index, Stochastic, Rate-of-Change,
// etc. It is most closely related to Welles Wilder?s RSI, yet it differs
// in several ways:
// - It uses data for both up days and down days in the numerator, thereby
// directly measuring momentum;
// - The calculations are applied on unsmoothed data. Therefore, short-term
// extreme movements in price are not hidden. Once calculated, smoothing
// can be applied to the CMO, if desired;
// - The scale is bounded between +100 and -100, thereby allowing you to clearly
// see changes in net momentum using the 0 level. The bounded scale also allows
// you to conveniently compare values across different securities.
////////////////////////////////////////////////////////////
strategy(title="CMO & WMA", shorttitle="CMO & WMA")
Length = input(9, minval=1)
LengthWMA = input(9, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = 100 * (xMomLength / (xSMA_mom * Length))
xWMACMO = wma(nRes, LengthWMA)
pos = iff(nRes > xWMACMO, 1,
iff(nRes <= xWMACMO, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue)
plot(nRes, color=blue, title="CMO")
plot(xWMACMO, color=red, title="WMA")