Стратегия захвата низкой точки, основанная на линейной регрессии восстановления Vix


Дата создания: 2024-01-30 16:56:39 Последнее изменение: 2024-01-30 16:56:39
Копировать: 1 Количество просмотров: 466
1
Подписаться
1235
Подписчики

Стратегия захвата низкой точки, основанная на линейной регрессии восстановления Vix

Обзор

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

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

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

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

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

  1. Стратегия использования линейной регрессии фильтрации частичных ложных сигналов показателя по исправлению Wix, чтобы сделать сигнал покупки/продажи более точным и надежным
  2. Линейная регрессия повышает чувствительность и своевременность сигналов, позволяя быстро улавливать рыночные переломы
  3. Простая, понятная и понятная логика стратегии для количественных сделок
  4. Более конфигурируемые параметры, гибко адаптируемые к изменениям рынка

Риски и решения

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

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

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

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HeWhoMustNotBeNamed

//@version=4
strategy("VixFixLinReg-Strategy", shorttitle="VixFixLinReg - Strategy",
                     overlay=false, initial_capital = 100000, 
                     default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, 
                     commission_value = 0.01)
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range - Based on Percentile and LookBack Period?")
sd = input(false, title="Show Standard Deviation Line?")
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true
considerVIXFixClose = input(false)
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

atrLen = input(22)
atrMult = input(5)
initialStopBar = input(5)
waitForCloseBeforeStop = input(true)
f_getStop(atrLen, atrMult)=>
    stop = strategy.position_size > 0 ? close - (atrMult * atr(atrLen)) : lowest(initialStopBar)
    stop := strategy.position_size > 0 ? max(stop,nz(stop[1], stop)) : lowest(initialStopBar)
    stop

wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100

sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev

rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl


col = wvf >= upperBand or wvf >= rangeHigh ? color.lime : color.gray

val = linreg(wvf, pd, 0)
absVal = abs(val)

linRegColor = val>val[1]? (val > 0 ? color.green : color.orange): (val > 0 ? color.lime : color.red)
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(wvf, title="Williams Vix Fix", style=plot.style_histogram, linewidth = 4, color=col)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=plot.style_line, linewidth = 3, color=color.aqua)

plot(-absVal, title="Linear Regression", style=plot.style_histogram, linewidth=4, color=linRegColor)

vixFixState = (col == color.lime) ? 1: 0
vixFixState := strategy.position_size == 0? max(vixFixState, nz(vixFixState[1],0)) : vixFixState

longCondition = (vixFixState == 1 and linRegColor == color.lime) and inDateRange
exitLongCondition = (linRegColor == color.orange or linRegColor == color.red) and considerVIXFixClose

stop = f_getStop(atrLen, atrMult)
label_x = time+(60*60*24*1000*20) 
myLabel = label.new(x=label_x, y=0, text="Stop : "+tostring(stop), xloc=xloc.bar_time, style=label.style_none, textcolor=color.black, size=size.normal)
label.delete(myLabel[1])
strategy.entry("Long", strategy.long, when=longCondition, oca_name="oca_buy")
strategy.close("Long", when=exitLongCondition or (close < stop and waitForCloseBeforeStop and linRegColor == color.green))
strategy.exit("ExitLong", "Long", stop = stop, when=not waitForCloseBeforeStop and linRegColor == color.green)