Стратегия комбинирования волатильности с изменением тренда

Автор:Чао Чжан, Дата: 2023-10-24 14:23:58
Тэги:

img

Обзор

Эта стратегия сочетает в себе стратегию обратного тренда со стратегией статистической волатильности для получения более сильных торговых сигналов.

Как это работает

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

  1. Стратегия обратной тенденции

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

    • Вычислить 30-дневную статистическую волатильность с помощью метода экстремальной стоимости.

Стратегия генерирует торговый сигнал только тогда, когда обе стратегии согласны с направлением (и длинные, и короткие).

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

Комбо-стратегия улучшает надежность сигнала путем объединения двух различных типов стратегий:

  1. Уображение 123 точно отражает точки переворота тренда и не вводит в заблуждение одноразовыми скачками цен.

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

Проверяя друг друга, обе стратегии объединяются, чтобы более точно улавливать ключевые переломные моменты рынка и генерировать более точные торговые сигналы.

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

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

  2. Статистическая волатильность рассматривает только исторические данные и не может предсказать будущие изменения волатильности.

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

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

Области улучшения

  1. Включить больше индикаторов, таких как полосы Боллинджера, KDJ, чтобы сформировать механизм голосования.

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

  3. Установите пороги силы сигнала, чтобы отфильтровать шум.

  4. Оптимизировать параметры для различных продуктов и временных рамок.

  5. Добавить механизмы стоп-лосса для контроля риска комбинированной стратегии.

Заключение

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/07/2021
// 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
// This indicator used to calculate the statistical volatility, sometime 
// called historical volatility, based on the Extreme Value Method.
// Please use this link to get more information about Volatility.
//
// 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


SV(Length,TopBand,LowBand) =>
    pos = 0.0
    xMaxC = highest(close, Length)
    xMaxH = highest(high, Length)
    xMinC = lowest(close, Length)
    xMinL = lowest(low, Length)
    SqrTime = sqrt(253 / Length)
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    nRes = iff(Vol < 0,  0, iff(Vol > 2.99, 2.99, Vol))
    pos := iff(nRes > TopBand, 1,
    	     iff(nRes < LowBand, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Statistical Volatility", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Statistical Volatility ----")
LengthSV = input(30, minval=1)
TopBand = input(0.005, step=0.001)
LowBand = input(0.0016, step=0.001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSV = SV(LengthSV,TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSV == 1 , 1,
	   iff(posReversal123 == -1 and posSV == -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 )

Больше