
Эта стратегия является двулинейной торговой стратегией, основанной на динамическом колебателе динамического индикатора ценовой динамики Chandre (CMO) и его взвешенном движущемся среднем (WMA). Attempts to identify trend reversals and continuation Using CMO crossover (WMA).
Сначала стратегия рассчитывает CMO, который измеряет динамику изменения цены в Интернете. Позитивные значения означают повышенную динамику, а отрицательные значения - пониженную. Затем рассчитывается WMA CMO.
Ключевые шаги по вычислению CMO:
Преимущество этой стратегии заключается в том, что она улавливает переломные моменты среднесрочных тенденций цен. Абсолютный размер CMO отражает интенсивность тенденций ценового движения, WMA способствует гиперболевому ложному прорыву.
Наибольшим преимуществом этой стратегии является то, что она использует абсолютные значения показателей CMO для оценки настроения рынка, WMA фильтрации для выявления переломов в среднесрочных тенденциях. По сравнению с единой стратегией движущихся средних, она лучше улавливает среднесрочные тенденции с большим пространством для эластичности.
CMO стандартизирует ценовые изменения, отображая их в диапазоне от 100 до 100, чтобы судить о настроениях рынка; абсолютный размер представляет собой силу текущей тенденции. WMA делает дополнительные колебания для CMO, чтобы избежать слишком много ложных сигналов.
Основные риски, с которыми может столкнуться эта стратегия:
Оптимизация может быть выполнена следующим образом:
Оптимизация стратегии сосредоточена на оптимизации параметров, фильтрации сигналов и остановке убытков:
Оптимизация параметров CMO и WMA: поиск оптимальных комбинаций параметров
Фильтрация сигналов в сочетании с вспомогательными показателями, такими как объем торгов, сильные и слабые показатели, чтобы избежать ложных прорывов
Добавление динамического механизма остановки убытков, чтобы остановить выбытие, когда цена снова опустится ниже CMO и WMA
В качестве входного сигнала можно рассматривать модель Breakout Failure, когда CMO и WMA сначала преодолевают критическую точку, но вскоре снова падают.
Можно использовать более длинные циклические индикаторы для определения тенденции и избежать обратной торговли.
Стратегия в целом использует показатели CMO для определения силы тренда и поворотных точек, в сочетании с WMA для генерации торгового сигнала, который является типичной двулинейной системой. По сравнению с одной стратегией MA, имеет преимущество в более сильной эластичности захвата среднесрочных тенденций. Однако в отношении параметров и колебаний есть место для оптимизации, а также для надлежащего контроля частоты торговли и введения динамических стоп-стопов, что может еще больше повысить стабильность системы.
/*backtest
start: 2023-12-25 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 18/10/2018
// 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 Backtest ver 2.0", shorttitle="CMO & WMA")
Length = input(9, minval=1)
LengthWMA = input(9, minval=1)
BuyZone = input(60, step = 0.01)
SellZone = input(-60, step = 0.01)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
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 = 0.0
pos := iff(xWMACMO > BuyZone, 1,
iff(xWMACMO < SellZone, -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")