Trendverfolgungsstrategie basierend auf dem gleitenden Hall-Geschwindigkeitsdurchschnitt und dem Kalman-Filter


Erstellungsdatum: 2023-11-01 17:10:49 zuletzt geändert: 2023-11-01 17:10:49
Kopie: 0 Klicks: 1160
1
konzentrieren Sie sich auf
1617
Anhänger

Trendverfolgungsstrategie basierend auf dem gleitenden Hall-Geschwindigkeitsdurchschnitt und dem Kalman-Filter

Überblick

Diese Strategie kombiniert Hall- und Kalman-Wellen, um Preistrends zu erkennen und zu verfolgen. Sie ist eine Trendverfolgungstrategie. Sie verwendet Hall- und Kalman-Wellen, um Handelssignale für zwei verschiedene Perioden zu erstellen, und arbeitet mit Kalman-Wellen zusammen, um die Signalqualität und die Strategie zu verbessern.

Strategieprinzip

  • Die Strategie verwendet einen 24-Perioden-Hall-Moving-Average-HMA und einen 24-Perioden-Triple-Hall-Moving-Average-HMA3 um ein Handelssignal zu erstellen.

  • Wenn der HMA 3 oben trägt, erzeugt er ein Kaufsignal; wenn der HMA 3 unten trägt, erzeugt er ein Verkaufsignal.

  • Die Strategie schaltet den Kalman-Filter standardmäßig aus und schaltet den Kalman-Filter ein. Nach dem Anschalten des Kalman-Filters wird die Kalman-Filterbehandlung für hma und hma3 durchgeführt, um übermäßige Geräusche zu filtern und die Signalqualität zu verbessern.

  • Die Kallmann-Streuung beseitigt durch Prognose- und Korrekturschritte die Zufallsgeräusche in den Signalen. Die Differenz zwischen jeder Messung und der vorherigen Prognose wird als Korrekturpunkt verwendet, um die nächste Messung genauer vorherzusagen. Durch wiederholte Prognose und Korrektur kann der Einfluss von Geräuschen schrittweise reduziert und das Signal glatter gemacht werden.

  • Die Strategie nutzt die Kalman-Wellen, um die Stabilität der Moving-Average-Strategie zu erhöhen, die Auswirkungen von zufälligen Schwankungen zu eliminieren und den anhaltenden Trend zu verfolgen.

Strategische Vorteile

  • Die doppelte Moving Average-Systeme sind in der Lage, beständige Trends besser zu erkennen als ein einziger Moving Average.

  • Der Hall Moving Average wird durch eine gewichtete Methode berechnet, die den jüngsten Preisen ein höheres Gewicht verleiht und die Preisschwankungen sensibler erfasst.

  • Die Kalman-Filter filtern die Zufallsgeräusche aus dem Signal, reduzieren die Falschsignale und verbessern die Signalqualität.

  • Die Strategieparameter können angepasst werden, wobei die Dauer der Zyklen und die Karmann-Wellen-Gewinnspanne an die Marktlage angepasst werden können, um sich an unterschiedliche Verhältnisse anzupassen.

  • Die Strategie nutzt die Technik des Überkreislaufs, um Signale zu erstellen, die einen dauerhafteren Trend erkennen und vermeiden, dass sie von zu vielen zufälligen Schwankungen getäuscht werden.

  • Die visuelle Oberfläche zeigt den Signal- und Trendstatus intuitiv an und erleichtert die Bedienung.

Strategisches Risiko

  • Die Doppel-Moving-Average-Strategie erzeugt leicht falsche Signale an Trendwendepunkten und kann die Wende nicht rechtzeitig erfassen.

  • Der Moving Average ist nachlässig und verpasst möglicherweise die Gelegenheit zu einer schnellen Preisumkehr.

  • Nicht geeignet für stark schwankende Situationen und sollte in der Phase der Erschütterung vermieden werden.

  • Die Parameter-Einstellungen des Kalman-Filters beeinflussen die Strategie-Performance, und ein zu großer Zuwachs kann ein wirksames Signal filtern.

  • Langzeit-Einstellungen reagieren schwach, kurzzeitige Einstellungen sind von Geräusch beeinflusst und müssen an die Marktparameter angepasst werden.

  • Die Zeit der offenen Positionen ist nicht fest, es gibt eine Phase ohne Positionen, die die Effizienz der Kapitalnutzung verringert.

Optimierungsrichtung

  • Es kann versucht werden, die dynamische Optimierung der Adaptive Moving Average-Parameter zu verwenden, um die Dauer der Zyklen an die Schwankungsrate anzupassen.

  • Vermeiden Sie den Handel in einem schwankenden Markt und handeln Sie nur, wenn der Trend klar ist.

  • Sie können eine Stop-Loss-Strategie einrichten, um Verluste zu vermeiden und die Risikokontrolle zu verbessern.

  • Optimierung der Kalman-Filterparameter, Balance der Tracking-Sensitivität und des Geräuschfiltergrades.

  • In Kombination mit anderen Indikatoren wird die Signalwirksamkeit bestätigt, wie z. B. die Quantitative Leistungsindikatoren, die Brin-Band-Bestimmung der Dauerhaftigkeit von Trends usw.

  • Die Parameter können mit Hilfe von Maschinelles Lernen trainiert werden, um die Strategie robuster und anpassungsfähiger zu machen.

Zusammenfassen

Diese Strategie kann durch die Verwendung von Doppel-Hall-Moving-Averagen und Kalman-Wellen Trends verfolgen, um dauerhafte Trends zu identifizieren und die Signalqualität zu verbessern. Es ist jedoch erforderlich, die Optimierung der Parameter, die Anpassung an die Situation und die Risikokontrolle zu beachten, um stabile Erträge zu erzielen.

Strategiequellcode
/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull Trend with Kahlman Strategy Backtest", shorttitle="HMA-Kahlman Trend Strat", overlay=true)

src       = input(hl2,   "Price Data")
length    = input(24,    "Lookback")
showcross = input(true,  "Show cross over/under")
gain      = input(10000, "Gain")
k         = input(true,  "Use Kahlman")

hma(_src, _length) =>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length) =>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1],x)+dk*sqrt((g/10000)*2)
    velo = 0.0
    velo := nz(velo[1],0) + ((g/10000)*dk)
    kf := smooth+velo
  
a = k ? kahlman(hma(src, length), gain) : hma(src, length)
b = k ? kahlman(hma3(src, length), gain) : hma3(src, length)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]

p1 = plot(a,color=c,linewidth=1,transp=75)
p2 = plot(b,color=c,linewidth=1,transp=75)
fill(p1,p2,color=c,transp=55)
plotshape(showcross and crossdn ? a : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and crossup ? a : na, location=location.absolute, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=-1)

longCondition = crossup
if (longCondition)
    strategy.entry("LE", strategy.long)

shortCondition = crossdn
if (shortCondition)
    strategy.entry("SE", strategy.short)