Стратегия торговли двойной скользящей средней на основе сдержанной синтетической цены

Автор:Чао Чжан, Дата: 2023-09-19 17:13:28
Тэги:

Обзор

Это двойная стратегия торговли скользящей средней, основанная на сдержанной синтетической цене (DSP). DSP - это функция, которая находится в фазе с доминирующим циклом данных о реальных ценах, полученная путем вычитания EMA полуцикла из EMA квартального цикла. Когда DSP пересекает верхнюю полосу или ниже нижней полосы, принимаются односторонние сделки.

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

  1. Вычислить среднюю цену xHL2 за 1/2 цикла.

  2. Вычислить EMA 1/4 цикла (xEMA1) и EMA 1/2 цикла (xEMA2) xHL2 на основе длины.

  3. Получить DSP путем вычитания xEMA2 из xEMA1.

  4. Установите параметры верхней и нижней полос, идите длинным, когда DSP пересекает верхнюю полосу, и коротким, когда пересекает ниже нижней полосы.

  5. Обратный параметр может переключаться между длинным и коротким направлением.

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

Преимущества этой стратегии:

  1. DSP фиксирует доминирующий ценовой цикл, избегая заблуждения от второстепенных циклов.

  2. Дизайн двойной EMA эффективно отслеживает изменения доминирующего цикла.

  3. Простые верхние/нижние диапазоны позволяют избежать чрезмерной торговли.

  4. Легко переключаться между длинным и коротким с помощью обратного параметра, адаптируемого к различным рыночным условиям.

  5. Не требуется сложной оптимизации параметров, просто и практично.

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

Основные риски:

  1. Неправильное установление цикла DSP может привести к пропуску доминирующего цикла.

  2. Ширина полосы должна быть оптимизирована, иначе может произойти перепродажа.

  3. Конструкция фиксированного цикла имеет слабую адаптивность к резким изменениям рынка.

  4. Торговля на DSP оставляет стратегию уязвимой для ударов.

  5. Отсутствие стоп-лосса может привести к значительным потерям.

Руководство по оптимизации

Улучшения:

  1. Оптимизируйте параметры, чтобы найти лучшую комбинацию циклов.

  2. Добавить динамические диапазоны на основе волатильности.

  3. Включите фильтры тренда и волатильности для уменьшения ложных сигналов.

  4. Добавьте механизмы остановки потерь или остановки отслеживания для контроля риска.

  5. Испытание на нескольких инструментах для универсальности.

  6. Внедрение машинного обучения для адаптивной оптимизации цикла DSP.

Резюме

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


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/03/2017
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// 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="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP")
Length = input(14, minval=1)
SellBand = input(25)
BuyBand = input(-25)
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos = iff(xEMA1_EMA2 > SellBand, 1,
	     iff(xEMA1_EMA2 < BuyBand, -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(xEMA1_EMA2, color=blue, title="D_DSP")

Больше