Стратегия торговли осцилляторами ВТО

Автор:Чао Чжан, Дата: 2023-09-19 21:16:26
Тэги:

Обзор

Эта стратегия использует Осиллятор импульса Чанде (CMO) для определения уровней перекупленности и перепроданности для торговых сигналов. Абсолютные значения CMO за 3 периода усредняются, чтобы сгладить осциллятор для выявления крайних.

Логика стратегии

Ключевая логика включает:

  1. Вычисление абсолютных значений ОПО за 3 различных периода
  2. Принятие среднего значения абсолютных значений ОПО за 3 периода
  3. Сокращение, когда средняя стоимость превышает верхний порог
  4. Продолжительность, когда средняя стоимость падает ниже нижнего порога
  5. Закрытие позиций при возвращении КРО в нормальный диапазон

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

Преимущества

  • Использует СОП для выявления регионов с перекупленными/перепроданными
  • Многопериодическое среднее выравнивает кривую и избегает ложных сигналов
  • Правильная теоретическая основа для обнаружения перекупленности/перепроданности
  • Настраиваемые пороги параметров для адаптации
  • Простая реализация реверсии среднего значения

Риски и способы их смягчения

  • Потенциал ложных сигналов ООП
  • Требует постоянной оптимизации порога
  • Устойчивые экстремальные тенденции могут привести к потерям

Уменьшение последствий:

  1. Добавление фильтра тренда для предотвращения контратендных сделок
  2. Оптимизация параметров для улучшения чувствительности КО
  3. Использование остановок для ограничения потерь

Возможности для расширения

Стратегия может быть усовершенствована путем:

  1. Подтверждение объема для предотвращения ложных прорывов
  2. Включение остановок для улучшения управления рисками
  3. Автооптимизация параметров с помощью машинного обучения
  4. Размер позиций на основе волатильности
  5. Сочетание с другими стратегиями диверсификации и повышения доходности

Заключение

Эта стратегия использует CMO для выявления перекупленного/перепроданного для средней реверсионной торговли. Многопериодные средние помогают избежать ложных сигналов. Сама CMO имеет прочную теоретическую основу для измерения дивергенции. Улучшения с помощью лучших параметров, остановок и фильтров могут сделать ее стабильной торговой стратегией осциллятора.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// 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="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
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="CMOabsav")

Больше