Многофакторная стратегия комбинированного изменения импульса

Автор:Чао Чжан, Дата: 2023-11-21 11:20:31
Тэги:

img

Обзор

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

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

Стратегия состоит из двух частей:

  1. 123 Фактор обратного действия

    Эта часть использует идею внутридневного реверса для определения отношения между ценой закрытия предыдущего дня и ценой закрытия 2 дня назад для выявления возможностей реверса с медленной линией K. Конкретная логика заключается в следующем:

    • Сигнал покупки: после двух последовательных дней снижения цены закрытия, если цена закрытия повышается в текущий день, а 9-дневная медленная линия K ниже 50, генерируется сигнал покупки;

    • Сигнал продажи: после двух дней подряд повышения цены закрытия, если цена закрытия снижается в текущий день, и 9-дневная быстрая линия K выше 50, генерируется сигнал продажи.

  2. Динамический импульсный осциллятор Ehlers (ETSI)

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

    xPrice1 = close - close[1]
    xPrice2 = abs(close - close[1]) 
    xSMA_R = EMA(EMA(EMA(xPrice1,r), s), u)
    xSMA_aR = EMA(EMA(EMA(xPrice2, r), s), u) 
    xTSI = xSMA_R / xSMA_aR * 100
    xEMA_TSI = EMA(xTSI, N)
    

    где xSMA_R - это выравниваемое значение динамики цен на ЕМА, xSMA_aR - это выравниваемое значение волатильности цен на ЕМА, xTSI - это индикатор импульса, построенный из соотношения этих двух, и xEMA_TSI - это вторичное выравнивание EMA xTSI. Индикатор определяет направление торгового сигнала на основе отношения между xTSI и xEMA_TSI.

Наконец, стратегия ANDs сигналы от двух частей, и только выпускает фактические торговые заказы, когда сигналы от обоих факторов согласуются.

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

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

  1. Коэффициент 123 может определить краткосрочные точки отскока после снижения диапазона.

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

  3. Операция AND на двух частях сигнала может улучшить качество сигнала и повысить стабильность стратегии.

Риски стратегии

Несмотря на то, что стратегия использует многофакторный подход для контроля рисков, основные риски остаются следующими:

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

  2. Существует субъективность в настройках параметров между этими двумя факторами, которые могут быть слишком подходящими для конкретных продуктов.

  3. Риск увеличения убытков после переворота цен вновь отражается.

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

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

К основным аспектам оптимизации этой стратегии относятся:

  1. Корректировка параметров двух факторов для поиска образцов данных, которые лучше совпадают.

  2. Увеличение стратегий стоп-лосса для контроля одиночных потерь.

  3. Использование различных комбинаций параметров для тенденционных и колеблющихся сортов.

  4. Увеличение механизма взвешивания факторов, чтобы дать более высокий вес эффективным факторам.

  5. Увеличение алгоритмов машинного обучения для автоматической оптимизации и обновления параметров.

Заключение

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


/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/07/2020
// 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
// r - Length of first EMA smoothing of 1 day momentum        4
// s - Length of second EMA smoothing of 1 day smoothing      8    
// u- Length of third EMA smoothing of 1 day momentum         6  
// Length of EMA signal line                                  3
// Source of Ergotic TSI                                      Close
//
// This is one of the techniques described by William Blau in his book "Momentum,
// Direction and Divergence" (1995). If you like to learn more, we advise you to 
// read this book. His book focuses on three key aspects of trading: momentum, 
// direction and divergence. Blau, who was an electrical engineer before becoming 
// a trader, thoroughly examines the relationship between price and momentum in 
// step-by-step examples. From this grounding, he then looks at the deficiencies 
// in other oscillators and introduces some innovative techniques, including a 
// fresh twist on Stochastics. On directional issues, he analyzes the intricacies 
// of ADX and offers a unique approach to help define trending and non-trending periods.  
//
// 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


ETSI(r,s,u,SmthLen) =>
    pos = 0
    xPrice = close
    xPrice1 = xPrice - xPrice[1]
    xPrice2 = abs(xPrice - xPrice[1])
    xSMA_R = ema(ema(ema(xPrice1,r), s),u)
    xSMA_aR = ema(ema(ema(xPrice2, r), s),u)
    Val1 = 100 * xSMA_R
    Val2 = xSMA_aR
    xTSI = iff (Val2 != 0, Val1 / Val2, 0)
    xEMA_TSI = ema(xTSI, SmthLen)
    pos:= iff(xTSI > xEMA_TSI, 1,
    	   iff(xTSI < xEMA_TSI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic TSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(4, minval=1)
s = input(8, minval=1)
u = input(6, minval=1)
SmthLen = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETSI = ETSI(r,s,u,SmthLen)
pos = iff(posReversal123 == 1 and posETSI == 1 , 1,
	   iff(posReversal123 == -1 and posETSI == -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 )

Больше