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

Автор:Чао Чжан, Дата: 2024-01-31 11:13:44
Тэги:

img

Обзор

Стратегия двойного механизма динамического отслеживания трендов объединяет сигналы из двух различных торговых стратегий для отслеживания трендов. Сначала она использует стратегию 123 Reversal для выявления точек переворота цен, затем использует индекс Detrended Synthetic Price (D_DSP) для определения направления тренда цен и, наконец, генерирует торговые сигналы путем объединения обоих сигналов.

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

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

123 Стратегия отмены

Стратегия 123 Reversal возникла на странице 183 книги Ульфа Дженсена "Как я утроил свои деньги на фьючерсном рынке".

В частности, он генерирует сигнал покупки, когда цена закрытия выше предыдущего закрытия в течение двух дней подряд, а 9-дневный медленный стохастический осциллятор ниже 50. Он генерирует сигнал продажи, когда цена закрытия ниже предыдущего закрытия в течение двух дней подряд, а быстрый стохастический осциллятор выше 50.

Индекс цен на синтетические продукты с уменьшенной стоимостью

Индекс сдержанной синтетической цены (D_DSP) указывает на направление ценовой тенденции и находится в фазе с доминирующим циклом фактических данных о ценах.

Если D_DSP положительный, это указывает на тенденцию к росту цен. Если отрицательный, это указывает на тенденцию к снижению цен.

Двойной механизм

Эта стратегия сочетает в себе стратегию 123 Reversal и сигналы индекса D_DSP. Если оба сигнала согласуются (как длинные, так и короткие), будут сделаны сделки. Если сигналы не согласуются, позиции будут закрыты.

Это двойное подтверждение отфильтровывает шум и блокирует прибыль от тренда.

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

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

Два стоп-лосса максимизируют блокировку прибыли и предотвращают перекрестные потери от одной стратегии стоп-лосса.

Риски

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

Кроме того, при сочетании стратегий обратного движения и стратегий тренда, клиринг позиций, когда сигналы расходятся, может упустить возможности, когда тенденция продолжается в одном направлении.

Оптимизация

Эта стратегия может быть оптимизирована несколькими способами:

  1. Оптимизировать параметры цикла с использованием большего количества данных обратного тестирования для поиска оптимальных значений.

  2. Добавьте больше стратегий стоп-лосса, таких как прорыв или отставание стоп-лосса, чтобы установить более динамичные и разумные точки стоп-лосса.

  3. Настроить правила двойного подтверждения, чтобы избежать перерасчета позиций.

  4. Добавьте фильтры, такие как фильтры волатильности, чтобы избежать ошибочных оценок волатильности тенденции на поздней стадии.

Заключение

Стратегия двойного механизма динамического отслеживания тренда реализует эффективное отслеживание тренда и контроль рисков посредством двойных остановочных потерь быстрых и медленных стохастических показателей и двойного подтверждения сигналов обворота и тренда.

Ожидается, что непрерывная оптимизация правил и параметров даст хорошие результаты. Но оптимизация стратегии требует большого количества исторических данных. Фильтры отбора акций и механизмы остановки потерь также нуждаются в непрерывном совершенствовании. Для дальнейшей проверки стратегии рекомендуется отслеживание в режиме реального времени.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/11/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// 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. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

D_DSP(Length) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > 0, 1,
             iff(xEMA1_EMA2 < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
	   iff(posReversal123 == -1 and posD_DSP == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Больше