动量绝对值指标策略是基于Tushar Chande开发的动量指标CMO的改进版本。该策略通过计算价格的绝对动量值,判断市场目前是否处于超买或超卖状态,以捕捉市场中期的价格波动。
该策略的核心指标是经过改进的CMO指标,称为AbsCMO。AbsCMO的计算公式为:
AbsCMO = abs(100 * (最新收盘价 - Length周期前的收盘价) / (Length周期内价格波动绝对值的简单移动平均 * Length))
其中,Length代表平均期间长度。AbsCMO值区间为0至100。该指标结合了动量方向性和强度 monumentality,能清晰判断市场中期趋势和超买超卖区域。
当AbsCMO上穿指定的上轨(默认70)时,表示市场步入超买,做空;当AbsCMO下穿指定的下轨(默认20)时,表示市场步入超卖,做多。
与其他动量指标相比,AbsCMO指标具有如下优势:
该策略主要存在以下风险:
可以通过适当缩短持仓周期,优化参数,或与其他指标组合使用来减少风险。
该策略可从以下几个方面进行优化:
动量绝对值指标策略整体来说是一个比较实用的中期交易策略。它反应价格中期绝对动量特性,判断市场中期趋势的判断力较强。但该策略对短期剧烈波动不敏感,存在一定的风险。通过参数优化、指标过滤、止损机制等进一步完善,可以使该策略的实盘表现更加稳定可靠。
/*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")