Линейная регрессия и двойная скользящая средняя в краткосрочной стратегии


Дата создания: 2024-01-26 12:33:14 Последнее изменение: 2024-01-26 12:33:14
Копировать: 0 Количество просмотров: 689
1
Подписаться
1617
Подписчики

Линейная регрессия и двойная скользящая средняя в краткосрочной стратегии

Обзор

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

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

В этой стратегии прорыв цены определяется в основном с помощью индикатора линейной регрессии. Индикатор линейной регрессии - это восходящий и нисходящий трейлер, рассчитанный с помощью метода линейной регрессии на основе максимальных и минимальных цен в течение определенного периода.

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

В частности, стратегия включает в себя следующее:

  1. Вычисление линейной регрессии вверх и вниз
  2. Вычислить двузначную скользящую среднюю
  3. Отключение позиции, когда цена выходит из верхнего ряда и ДВП выше цены
  4. Снижение позиции по открытой позиции, когда цена вновь выходит за рамки или выше ДВМ

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

По сравнению с традиционными показателями, такими как скользящая средняя, эта стратегия имеет следующие преимущества:

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

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

В этой стратегии также есть некоторые риски, о которых следует помнить:

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

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

Направление оптимизации

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('LR&SSL_Short', overlay=true)
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(9999,1,1,0,0)
_testPeriod() => true

len = input(title="Period", defval=89)
smaHigh = linreg(high, len, 0)
smaLow = linreg(low, len, -1)
Hlv = 0.0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)



length = input(200, title="DEMA") 
d1 = ema(close, length)                                               
d2 = 2 * d1 - ema(d1, length)                                         
trendColour = d2 > d1 ? #AAFFAA : #FFAAAA 
dema=sma(d2,length) 

turnGreen = d2 > d1 and d2[1] <= d1[1]  
turnRed   = d2 <= d1 and d2[1] > d1[1]  

up =turnGreen 
down=turnRed 
  
plotshape(down, title="down", style=shape.triangledown,location=location.abovebar, color=color.red, transp=0, size=size.small) 
plotshape(up,  title="up", style=shape.triangleup,location=location.belowbar, color=color.green, transp=0, size=size.small) 
plot(dema, color = trendColour,linewidth=3 ,transp = 0)
bgcolor(close > dema ? color.green : color.red)

strategy.entry("short", strategy.short, when= crossunder(sslUp, sslDown) and dema > close and _testPeriod())
strategy.close("short", when = crossover(sslUp, sslDown) or crossover(close, dema))