
Die Strategie heißt Quantitative Trading Strategy based on the TSI and Hull Moving Average und basiert auf der Idee, Trends in Aktien, Kryptowährungen oder Devisen in Kombination mit dem TSI und dem Hull Moving Average zu identifizieren und ein Handelssignal zu erzeugen, wenn ein Trend beginnt.
Die Strategie nutzt die TSI-Indikatoren, um die Preisentwicklung und -dynamik zu bestimmen. Die TSI-Indikatoren basieren auf einer doppelten Gleitende Durchschnittskurve der Preisänderung. Sie erzeugen ein Kaufsignal, wenn die TSI-Werte ihren eigenen gleitenden Durchschnitt überschreiten, und ein Verkaufsignal, wenn sie untergehen.
Die Strategie verwendet auch Hull Moving Averages, um Preistrends zu ermitteln. Hull Moving Averages werden durch eine doppelte Gewichtung von Moving Averages aufgebaut, um Marktlärm effektiv zu filtern. Sie werden als Aufwärtstrend beurteilt, wenn sie eine schnelle Linie durchqueren, und als Abwärtstrend, wenn sie eine langsame Linie durchqueren.
Die Strategie überprüft außerdem die Richtung der K-Linien-Einheit, um die Tendenz zu bestätigen. Die Strategie sendet nur dann ein Handelssignal, wenn die Richtung der Indikatoren, der Hull-Signal und der K-Linien-Einheit übereinstimmt.
Die Strategie kombiniert mehrere Indikatoren für Trend, Dynamik und Durchschnittswerte, um den Beginn eines Markttrends zu erkennen und eine große Menge an Falschsignalen zu vermeiden. Der doppelte glatte gleitende Durchschnitt kann auch einen Teil des Rausches filtern.
Im Vergleich zu einem einzelnen Indikator kann die Strategie die Signalqualität erheblich verbessern, indem sie mehrere Indikatoren kombiniert filtert. Mehrere Bestätigungsbedingungen ermöglichen auch eine hohe Sicherheit der Strategie bei der Erzeugung eines Signals.
Obwohl diese Strategie effektiv ist, um Trends zu erkennen, kann sie bei Marktschwankungen zu Fehlsignalen und Überhändlungen führen. Darüber hinaus kann die falsche Einstellung der Parameter zu unnötigen Ausgleichspositionen führen.
Um das Risiko zu verringern, können die Hull-Moving-Average-Zyklus- oder TSI-Parameter entsprechend angepasst werden, oder ein Stop-Loss kann hinzugefügt werden, um den Verlust zu kontrollieren. In der Optimierung muss das Signal-Noise-Ratio berücksichtigt werden, um die besten Parameter zu erhalten.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Die Strategie kombiniert den TSI-Indikator mit dem Hull-Moving Average und erzeugt Handelssignale, nachdem die Markttrends ermittelt wurden. Die Strategie hat eine hohe Pünktlichkeit und Signalqualität. Durch die Optimierung der Parameter und die Kombination von Strategien kann die Profitabilität erheblich erhöht und das Risiko verringert werden.
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("TSI/HullMA/VWMA strategy", shorttitle="TSI/HullMA/VWMA", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
TP = input(defval=200.00, title="TargetPoint in $", type=float, step=1)
SL = input(defval=-2000.00, title="StopLoss in $", type=float, step=1)
signal = input(title="Signal Length", defval=6)
keh=input(title="HullMA cross",defval=2)
a=input(title="VWMA",defval=2)
long=35,short=35,linebuy=4,linesell=-4,ot=1,p=ohlc4[0]
double_smooth(src, long, short) =>
fist_smooth = ema(src, long)
ema(fist_smooth, short)
pc = change(p)
rvwma=vwma(p,round(a))
rvwma2=vwma(p,round(a*2))
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
hullbuy=n1>n2 and n1>n2[1] and rvwma>rvwma2
hullsell=n1<n2 and n1<n2[1] and rvwma<rvwma2
candlebuy=ohlc4[0]>ohlc4[1] and ohlc4[0]>ohlc4[2] and ohlc4[0]>ohlc4[3]
candlesell=ohlc4[0]<ohlc4[1] and ohlc4[0]<ohlc4[2] and ohlc4[0]<ohlc4[3]
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
strategy.entry("buy", true, na, when = tsi_value>ema(tsi_value, signal) and candlebuy and hullbuy)
strategy.entry("sell", false, na, when = tsi_value<ema(tsi_value, signal) and candlesell and hullsell)
strategy.close_all(when = strategy.openprofit>TP or strategy.openprofit<SL)