
Стратегия динамического абсолютного значения является улучшенной версией динамического индикатора CMO, разработанного Тушаром Чанде. Стратегия определяет, находится ли рынок в настоящее время в состоянии перекупа или перепродажи, путем расчета абсолютного динамического значения цены, чтобы захватить среднесрочные колебания цен на рынке.
Центральным показателем стратегии является улучшенный показатель CMO, известный как AbsCMO. Расчетная формула AbsCMO:
AbsCMO = abs(100 * (最新收盘价 - Length周期前的收盘价) / (Length周期内价格波动绝对值的简单移动平均 * Length))
Из них Length представляет собой среднюю продолжительность периода. АбсСМО имеет диапазон от 0 до 100. Этот показатель сочетает в себе динамику направленности и интенсивность монументальности, что позволяет четко определять среднесрочные тенденции рынка и зоны перекупа и перепродажи.
Когда 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")