Стратегия торговли с двойной скользящей средней на основе CMO и WMA


Дата создания: 2024-01-25 17:44:49 Последнее изменение: 2024-01-25 17:44:49
Копировать: 0 Количество просмотров: 583
1
Подписаться
1617
Подписчики

Стратегия торговли с двойной скользящей средней на основе CMO и WMA

Обзор

Эта стратегия является двулинейной торговой стратегией, основанной на динамическом колебателе динамического индикатора ценовой динамики Chandre (CMO) и его взвешенном движущемся среднем (WMA). Attempts to identify trend reversals and continuation Using CMO crossover (WMA).

Стратегический принцип

Сначала стратегия рассчитывает CMO, который измеряет динамику изменения цены в Интернете. Позитивные значения означают повышенную динамику, а отрицательные значения - пониженную. Затем рассчитывается WMA CMO.

Ключевые шаги по вычислению CMO:

  1. Расчет ежедневного изменения цены (xMom)
  2. n-дневный SMA для изменения цены, как динамика цены на реальный кремний ((xSMA_mom)
  3. Вычислить n дней нетто-изменение цены (xMomLength)
  4. Для стандартизации чистых ценовых изменений (nRes) метод состоит в делении на SMA.
  5. Для стандартизации net price change требуется m дней WMA, получается CMO ((xWMACMO)

Преимущество этой стратегии заключается в том, что она улавливает переломные моменты среднесрочных тенденций цен. Абсолютный размер CMO отражает интенсивность тенденций ценового движения, WMA способствует гиперболевому ложному прорыву.

Анализ преимуществ

Наибольшим преимуществом этой стратегии является то, что она использует абсолютные значения показателей CMO для оценки настроения рынка, WMA фильтрации для выявления переломов в среднесрочных тенденциях. По сравнению с единой стратегией движущихся средних, она лучше улавливает среднесрочные тенденции с большим пространством для эластичности.

CMO стандартизирует ценовые изменения, отображая их в диапазоне от 100 до 100, чтобы судить о настроениях рынка; абсолютный размер представляет собой силу текущей тенденции. WMA делает дополнительные колебания для CMO, чтобы избежать слишком много ложных сигналов.

Анализ рисков

Основные риски, с которыми может столкнуться эта стратегия:

  1. Неправильно настроенные параметры CMO и WMA приводят к созданию слишком много ложных сигналов
  2. Неэффективное реагирование на волатильность рынка приведет к чрезмерной частоте торгов и стоимости скольжения
  3. Невозможность распознать реальные долгосрочные тенденции, возможный риск потери при долгосрочном хранении

Оптимизация может быть выполнена следующим образом:

  1. Настройка параметров CMO и WMA, чтобы найти оптимальную комбинацию параметров
  2. Добавление дополнительных фильтров, таких как энергетический индикатор объема сделки, чтобы избежать торговли в шокирующих ситуациях
  3. Используйте более длительные индикаторы, такие как 90-дневная линия, чтобы избежать упущенных возможностей в долгосрочных тенденциях

Направление оптимизации

Оптимизация стратегии сосредоточена на оптимизации параметров, фильтрации сигналов и остановке убытков:

  1. Оптимизация параметров CMO и WMA: поиск оптимальных комбинаций параметров

  2. Фильтрация сигналов в сочетании с вспомогательными показателями, такими как объем торгов, сильные и слабые показатели, чтобы избежать ложных прорывов

  3. Добавление динамического механизма остановки убытков, чтобы остановить выбытие, когда цена снова опустится ниже CMO и WMA

  4. В качестве входного сигнала можно рассматривать модель Breakout Failure, когда CMO и WMA сначала преодолевают критическую точку, но вскоре снова падают.

  5. Можно использовать более длинные циклические индикаторы для определения тенденции и избежать обратной торговли.

Подвести итог

Стратегия в целом использует показатели 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")