Quantitative Handelsstrategie basierend auf empirischer Moduszerlegung


Erstellungsdatum: 2023-12-22 14:41:34 zuletzt geändert: 2023-12-22 14:41:34
Kopie: 0 Klicks: 871
1
konzentrieren Sie sich auf
1623
Anhänger

Quantitative Handelsstrategie basierend auf empirischer Moduszerlegung

Überblick

Diese Strategie basiert auf der empirischen Modus-Decomposition (EMD) -Methode, bei der die Preissequenz aufgeteilt, die Merkmale der verschiedenen Bandbreiten extrahiert und die Handelssignale in Verbindung mit dem Mittelwert erzeugt werden. Diese Strategie ist hauptsächlich für mittlere und lange Positionen geeignet.

Strategieprinzip

  1. Benutzung der EMD-Methode zur Bandbreitenfilterung von Preisen, um die Merkmale von Preisschwankungen zu extrahieren
  2. Berechnen Sie den Moving Average aus einer Peak-Sequence und einer Valley-Sequence
  3. Generiert ein Handelssignal, wenn die Mittelwertlinie einen bestimmten Anteil der Spitzen- und Talwerte überschreitet
  4. Nach dem Handelssignal mehr oder weniger

Analyse der Stärken

  1. Die EMD-Methode kann die Preisreihenfolge effizient aufschlüsseln und nützliche Merkmale extrahieren.
  2. Die Peak-Valley-Linie steuert die Strategie, nur dann zu handeln, wenn die Preise über einen bestimmten Wert schwanken.
  3. Mit Mittellinien kann ein falscher Durchbruch effektiv beseitigt werden.

Risikoanalyse

  1. Fehlgewählte EMD-Methode-Parameter können zu einer Überpassung führen
  2. Es ist nicht geeignet für Hochfrequenz-Trading, da es für die Bildung von Handelssignalen einen längeren Zeitraum benötigt.
  3. Die Marktbedingungen sind nicht in der Lage, mit starken Preisschwankungen umzugehen.

Optimierungsrichtung

  1. Optimierung der Parameter des EMD-Modells und Verbesserung der Marktanpassungsfähigkeit
  2. In Kombination mit anderen Indikatoren als Stopp-Stopp-Signal
  3. Versuchen Sie, unterschiedliche Preisreihen als strategische Eingabe zu verwenden

Zusammenfassen

Die Strategie nutzt die empirische Modell-Dekomplizierungsmethode, um die Preise zu extrahieren und auf der Grundlage der extrahierten Merkmale Handelssignale zu erzeugen, um eine stabile mittlere und lange Handelsstrategie zu realisieren. Der Vorteil dieser Strategie besteht darin, dass die periodischen Merkmale in den Preisen effektiv identifiziert und bei starken Schwankungen Handelsanweisungen ausgesandt werden können. Es besteht jedoch ein gewisses Risiko, das für ein komplexeres Marktumfeld optimiert werden muss.

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/04/2017
// The related article is copyrighted material from Stocks & Commodities Mar 2010
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Empirical Mode Decomposition")
Length = input(20, minval=1)
Delta = input(0.5)
Fraction = input(0.1)
reverse = input(false, title="Trade reverse")
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
xPeak =  iff (xBandpassFilter[1] > xBandpassFilter and xBandpassFilter[1] > xBandpassFilter[2], xBandpassFilter[1], nz(xPeak[1])) 
xValley =  iff (xBandpassFilter[1] < xBandpassFilter and xBandpassFilter[1] < xBandpassFilter[2], xBandpassFilter[1], nz(xValley[1])) 
xAvrPeak = sma(xPeak, 50)
xAvrValley = sma(xValley, 50)
nAvrPeak = Fraction * xAvrPeak
nAvrValley = Fraction * xAvrValley
pos = iff(xMean > nAvrPeak and xMean > nAvrValley, 1,
	     iff(xMean < nAvrPeak and xMean < nAvrValley, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xMean, color=red, title="Mean")
plot(nAvrPeak, color=blue, title="Peak")
plot(nAvrValley, color=blue, title="Valley")