Стратегия отслеживания двойного фактора средней реверсии

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

img

Обзор

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

Принцип

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

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

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

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

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

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

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

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

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

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

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

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

  1. Испытать различные настройки параметров индикатора обратного хода для поиска комбинаций с более высокой допустимостью ошибок и меньшим количеством ложных сигналов
  2. Попробуйте значения параметров различных циклов длины, чтобы найти значения, которые захватывают обратных более точно
  3. Добавить модуль стоп-лосса для строгого контроля максимальной потери на одну сделку
  4. Испытать эффекты различных периодов хранения, чтобы найти точки выхода, которые лучше соответствуют логике стратегии
  5. Увеличить количество открытых позиций или добавить модули управления позициями, чтобы сделать соотношение риск-прибыль более разумным

Резюме

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/12/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
// The Keltner Channel, a classic indicator 
// of technical analysis developed by Chester Keltner in 1960. 
// The indicator is a bit like Bollinger Bands and Envelopes.
//
// 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

KeltnerChn(nPeriod) =>
    pos = 0.0
    xPrice = sma(hlc3, nPeriod)
    xMove = sma(high - low, nPeriod)
    reverse = input(false, title="Trade reverse")
    xUpper = xPrice + xMove
    xLower = xPrice - xMove
    pos := iff(close < xLower, -1,
             iff(close > xUpper, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Keltner Channel", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nPeriod = input(title="Period", defval=10, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKeltnerChn = KeltnerChn(nPeriod)
pos = iff(posReversal123 == 1 and posKeltnerChn == 1 , 1,
	   iff(posReversal123 == -1 and posKeltnerChn == -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 )

Больше