Стратегия Hull MA Oscillator, основанная на каналах и линейной регрессии


Дата создания: 2023-12-01 16:47:01 Последнее изменение: 2023-12-01 16:47:01
Копировать: 0 Количество просмотров: 731
1
Подписаться
1619
Подписчики

Стратегия Hull MA Oscillator, основанная на каналах и линейной регрессии

Обзор

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

Стратегический принцип

Стратегия включает в себя следующие компоненты:

  1. Hull MA
    • Hull MA общего параметра 337 в период, представляющий собой направление долгой средней линии
    • Когда 2-кратный 18-циклический WMA выше, чем 337-циклический WMA, это многоголовый рынок, и наоборот - пустой рынок
  2. Ценовой канал
    • Ценовые каналы состоят из высоких и низких EMA, которые представляют собой зоны, в которых могут образовываться поддержка и сопротивление.
  3. Сигнал EMA
    • EMA-сигналы обычно имеют 89 циклов, представляющих собой короткие трендовые линии и сигналы для выхода на рынок
  4. Линейная регрессия
    • Краткая линия 6 циклов, чтобы определить дно и прорыв
    • Продолжительность 89 циклов для определения направления длинной и средней линий

Входная логика:

Множественный вход: Hull MA вверх и цены выше, чем на поезде, линейный возврат вверх через краткосрочную EMA Пустой вход: Hull MA вниз и цена ниже нижней полосы, линейная регрессия вниз через краткосрочную EMA

Логика выхода:

Многоочередное выступление: цена ниже нижней полосы и пересекает линейный обратный путь вниз Пустой выход: цена выше, чем на поезде, и пересекает линейный возврат вверх

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

Эта стратегия имеет следующие преимущества:

  1. Показатели, которые помогут лучше оценить результаты
    • Hull MA оценивает основную тенденцию, канал оценивает давление на поддержку, EMA оценивает время входа
  2. “Волшебная торговля, ловля коротких линий”
    • Стратегия является реверсивно-ориентированной волатильной торговой стратегией, которая может улавливать тенденции в каждом коротком среднем цикле
  3. Управляемый риск, небольшое отступление
    • Стратегия - посылать сигналы только в зоне высокой вероятности, избегая преследования высоких и низких значений

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

Однако эта стратегия несет в себе определенные риски:

  1. Ограниченное пространство для оптимизации параметров
    • Основные параметры, такие как более фиксированный цикл EMA, небольшое пространство для оптимизации
  2. Возможные убытки в результате землетрясения
    • Стоп-лоши могут быть задействованы, когда цена колеблется по горизонтали.
  3. Необходима определенная база технического анализа
    • Стратегическая мысль требует определенного знания ценового поведения и показателей, и она не подходит для всех.

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

  1. Настройка стратегии устранения убытков, например, устранение сейсмических последствий
  2. Оптимизация логики входа и выхода
  3. Добавление фильтров для других показателей, например MACD

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Swing Hull/SonicR/EMA/Linear Regression Strategy", overlay=true)
//Hull MA
n=input(title="HullMA Period",defval=377)
//
n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))
//
n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))
//
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
condDown = n2 >= n1
condUp = condDown != true
col =condUp ? lime : condDown ? red : yellow
plot(n1,title="Hull MA", color=col,linewidth=3)
// SonicR + Line reg
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
lr     = input(89, minval=2,title="Linear Regression Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, lr, 0)
lineregf = linreg(close, HiLoLen, 0)
cline=linereg>linereg[1]?green:red
cline2= lineregf>lineregf[1]?green:red
plot(linereg, color = cline, title = "Linear Regression Curve Slow", style = line, linewidth = 1)
//plot(lineregf, color = cline2, title = "Linear Regression Curve Fast", style = line, linewidth = 1)
longCondition = n1>n2
shortCondition = longCondition != true
closeLong =  lineregf-pacH>(pacH-pacL)*2 and close<lineregf and linereg>signalMA
closeShort = pacL-lineregf>(pacH-pacL)*2 and close>lineregf and linereg<signalMA
if shortCondition    
    if (close[0] < signalMA[0] and close[1] > pacL[1] and linereg>pacL and close<n1 and pacL<n1) //cross entry
        strategy.entry("SHORT", strategy.short, comment="Short")
strategy.close("SHORT", when=closeShort) //output logic
if longCondition // swing condition          
    if (close[0] > signalMA[0] and close[1] < pacH[1] and linereg<pacH and close>n1 and pacH>n1) //cross entry
        strategy.entry("LONG", strategy.long, comment="Long")
strategy.close("LONG", when=closeLong) //output logic