Chiến lược chỉ số động lực tuyệt đối là một phiên bản cải tiến dựa trên chỉ số động lực CMO được phát triển bởi Tushar Chande. Chiến lược này đánh giá xem thị trường hiện đang mua quá nhiều hay bán quá nhiều bằng cách tính toán giá trị tuyệt đối của động lực giá để nắm bắt biến động giá trung hạn trên thị trường.
Chỉ số cốt lõi của chiến lược này là chỉ số CMO được cải thiện, được gọi là AbsCMO. Công thức tính toán của AbsCMO là:
AbsCMO = abs(100 * (latest closing price - closing price Length periods ago) / (simple moving average of absolute price fluctuations over Length period * Length))
Trong đó Length đại diện cho thời gian trung bình của giai đoạn. Phạm vi giá trị AbsCMO là từ 0 đến 100. Chỉ số này kết hợp định hướng và sức mạnh của động lượng để xác định rõ xu hướng thị trường trung hạn và khu vực mua quá mức / bán quá mức.
Khi AbsCMO vượt qua đường ray trên được chỉ định (bất định 70), nó cho thấy thị trường đã bước vào vùng mua quá mức và đi ngắn; khi AbsCMO vượt qua đường ray dưới được chỉ định (bất định 20), nó cho thấy thị trường đã bước vào vùng bán quá mức và đi dài.
So với các chỉ số động lực khác, chỉ số AbsCMO có những lợi thế sau:
Những rủi ro chính của chiến lược này là:
Những rủi ro này có thể được giảm bằng cách rút ngắn thời gian giữ, tối ưu hóa các tham số hoặc kết hợp các chỉ số khác.
Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:
Tóm lại, Chiến lược chỉ số động lực tuyệt đối là một chiến lược giao dịch hữu ích trong trung hạn. Nó phản ánh đặc điểm động lực tuyệt đối của giá trong trung hạn và có sức dự đoán mạnh mẽ về xu hướng trung hạn. Tuy nhiên, chiến lược này ít nhạy cảm với biến động ngắn hạn và mang lại một số rủi ro. Những cải tiến hơn nữa như tối ưu hóa tham số, bộ lọc chỉ số, cơ chế dừng lỗ có thể làm cho hiệu suất trực tiếp của nó ổn định và đáng tin cậy hơn.
/*backtest start: 2023-02-12 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 17/02/2017 // This indicator plots the absolute value of CMO. CMO was developed by Tushar // Chande. A scientist, an inventor, and a respected trading system developer, // Mr. Chande developed the CMO to capture what he calls "pure momentum". For // more definitive information on the CMO and other indicators we recommend the // book The New Technical Trader by Tushar Chande and Stanley Kroll. // 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. // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="CMOabs", shorttitle="CMOabs") Length = input(9, minval=1) TopBand = input(70, minval=1) LowBand = input(20, minval=0) reverse = input(false, title="Trade reverse") // hline(0, color=gray, linestyle=dashed) // hline(TopBand, color=red, linestyle=line) // hline(LowBand, color=green, linestyle=line) xMom = abs(close - close[1]) xSMA_mom = sma(xMom, Length) xMomLength = close - close[Length] nRes = abs(100 * (xMomLength / (xSMA_mom * Length))) pos = iff(nRes > TopBand, -1, iff(nRes < LowBand, 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")