Стратегия абсолютного импульса - это улучшенная версия, основанная на индикаторе импульса CMO, разработанном Тушаром Чанде.
Основным показателем этой стратегии является улучшенный показатель ООП, называемый AbsCMO.
AbsCMO = abs(100 * (latest closing price - closing price Length periods ago) / (simple moving average of absolute price fluctuations over Length period * Length))
где Length представляет собой длину среднего периода. Диапазон значений AbsCMO составляет от 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")