Vix-Fix-Lineare Regressionsstrategie für die Grundfischerei

Schriftsteller:ChaoZhang, Datum: 2024-01-30 16:56:39
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, den Vix-Fix-Indikator und seine lineare Regression zu kombinieren, um Marktboden genau zu erfassen.

Strategie Logik

  1. Berechnen Sie den Vix-Fix-Indikator, der bei der Beurteilung von Marktboden gut ist
  2. Wenn die lineare Regression Histogramm Farbe grün wird, bedeutet es, dass die Vix Fix lineare Regression beginnt zu steigen, kann ein Kaufsignal ausgelöst werden
  3. Kombination mit den grünen Spalten des Vix-Fix-Indikators zur weiteren Bestätigung des Zeitpunkts der Einträge
  4. Wenn die lineare Regressions-Histogramm Farbe rot wird, bedeutet es die Vix Fix lineare Regression beginnt zu sinken, ein Verkauf Signal ausgelöst wird

Der obige Prozess nutzt die lineare Regression, um die Genauigkeit und Aktualität der Vix-Fix-Signale zu verbessern, einige falsche Signale auszufiltern und so die Bodenpunkte genau zu erfassen.

Analyse der Vorteile

  1. Die Strategie verwendet lineare Regression, um einige falsche Signale des Vix Fix-Indikators auszufiltern, wodurch Kauf-/Verkaufssignale genauer und zuverlässiger werden
  2. Lineare Regression verbessert die Empfindlichkeit und Aktualität der Signale und kann Marktwendepunkte schnell erfassen
  3. Die Strategie ist einfach und klar, leicht zu verstehen und umzusetzen, geeignet für den quantitativen Handel
  4. Es gibt viele konfigurierbare Parameter, die flexibel angepasst werden können, um sich an Marktveränderungen anzupassen

Risiken und Lösungen

  1. Diese Strategie wird hauptsächlich zur Bestimmung des gesamten Marktbodens verwendet und eignet sich nicht für einzelne Bestände.
  2. Die lineare Regression kann keine falschen Signale vollständig filtern.
  3. Notwendigkeit, die Parameter angemessen anzupassen, um sich an Marktveränderungen anzupassen und Ausfälle zu vermeiden
  4. Es wird empfohlen, sie mit anderen Indikatoren zu kombinieren, um die Signale weiter zu bestätigen.

Optimierungsrichtlinien

  1. Überlegen Sie die Kombination mit Volatilitätsindikatoren oder Bilanzvolumenindikatoren, um Signale weiter auszufiltern.
  2. Analyse der Methoden der adaptive Optimierung von Parametern, um die Strategie intelligenter zu gestalten
  3. Erforschung von Methoden des maschinellen Lernens zur Vorhersage von Vix Fix-Trends mit komplexeren Modellen
  4. Versuchen Sie, ähnliche Methoden auf einzelne Aktien anzuwenden, um zu untersuchen, wie man falsche Signale filtert

Schlussfolgerung

Diese Strategie nutzt den Vix Fix-Indikator, um Tiefststände zu beurteilen und dabei eine lineare Regression einzuführen, um die Signalqualität zu verbessern und somit die Markttiefststände effektiv zu erfassen. Die Strategie ist einfach, praktisch und liefert anständige Ergebnisse. Das Hauptrisiko liegt in den falschen Signalen, die nicht vollständig herausgefiltert werden. Wir müssen noch die Parameter-Einstellungen optimieren und andere Mittel einführen, um die Signale weiter zu bestätigen, um die Strategie robuster zu machen. Insgesamt bietet diese Strategie eine neue effektive Möglichkeit, die Markttiefststände zu bestimmen, und ist weitere Forschung wert.


/*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)

Mehr