
Eine Trend-Tracking-Strategie mit zwei Moving Average-Linien, die einen Trend-Tracking-Handel durch Berechnung eines doppelten Index-Moving Averages der Preise erzeugt, um eine schnelle und eine langsame Linie zu bilden und die Preisentwicklung anhand der Kreuzung der beiden Linien zu beurteilen. Diese Strategie gehört zu den quantitativen Handelsstrategien, die auf Trend-Tracking basieren.
Die Strategie berechnet zunächst den doppelten Index-Moving Average des Preises, der aus einer schnellen und einer langsamen Linie besteht. Die Schnellen Linie hat 4 Perioden und die langsamen Linie 8 Perioden. Beide Linien kreuzen ein Kauf- und Verkaufssignal.
Die Strategie kann zum einen den Preistrends folgen und so die Transaktionskosten vermeiden. Zum anderen filtert die Doppel-Moving-Even-Linie die teilweise Preislärm ab, um die Preisentwicklung zu erfassen. Zum anderen sind die Strategieparameter flexibel optimiert, die Moving-Even-Linie-Periode und die MACD-Parameter können angepasst werden, um sie an verschiedene Sorten und Parameter anzupassen.
Die Strategie ist auf Parameteroptimierung angewiesen, die bei unsachgemäßer Parameterstellung zu einer Fülle von Fehlsignalen führen kann. Darüber hinaus hat die Doppel-Moving-Even-Linie eine Verzögerung, die den Preiswendepunkt verpassen kann. Darüber hinaus ist der Trendhandel anfällig für ein Muster, das die Höhen jagt, um die Tiefststände zu töten.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Optimierung der Periodiparameter für die doppelte bewegliche Durchschnittslinie, um die optimale Kombination von Parametern zu finden
Hinzufügen von Filtersignalen für andere Indikatoren, z. B. RSI, KD usw., um die Signalqualität zu verbessern
Erhöhung der Stop-Loss-Strategie und zeitnahe Stop-Loss-Strategie bei Trendumkehr
Positionsgröße wird dynamisch an die Marktlage angepasst, Risiken werden kontrolliert
Optimierung für verschiedene Handelsvarianten
Verbesserte Strategieeffekte in Kombination mit erweiterten Strategien wie Machine Learning
Die Strategie ist eine einfache Trend-Tracking-Strategie, basierend auf zwei beweglichen Durchschnittslinien. Die Strategie ist klar konzipiert, leicht umzusetzen, die Parameter sind flexibel und eignen sich als Einstiegs-Strategie für quantitative Transaktionen. Die Strategie hat jedoch Probleme mit der Verfolgung von Abfällen und Signallagern und muss weiter optimiert werden, um Risiken zu kontrollieren und Stabilität zu verbessern.
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 12/11/2017
// The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by
// William Blau, except the SMI includes a signal line. The SMI uses double moving averages
// of price minus previous price over 2 time frames. The signal line, which is an EMA of the
// SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine
// tune these signals. The user may change the input (close), method (EMA), period lengths
// and guide values.
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// WARNING:
// - For purpose educate only
////////////////////////////////////////////////////////////
strategy(title="SMI Ergodic Oscillator")
fastPeriod = input(4, minval=1)
slowPeriod = input(8, minval=1)
SmthLen = input(3, minval=1)
TopBand = input(0.5, step=0.1)
LowBand = input(-0.5, step=0.1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xPrice = close
xPrice1 = xPrice - xPrice[1]
xPrice2 = abs(xPrice - xPrice[1])
xSMA_R = ema(ema(xPrice1,fastPeriod),slowPeriod)
xSMA_aR = ema(ema(xPrice2, fastPeriod),slowPeriod)
xSMI = xSMA_R / xSMA_aR
xEMA_SMI = ema(xSMI, SmthLen)
pos = iff(xEMA_SMI < xSMI, -1,
iff(xEMA_SMI > xSMI, 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(xSMI, color=green, title="Ergotic SMI")
plot(xEMA_SMI, color=red, title="SigLin")