Quantitative Handelsstrategie auf der Grundlage von TSI-Indikatoren und Hull- gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2023-12-18 16:56:22
Tags:

img

Übersicht

Diese Strategie wird Quantitative Trading Strategy Based on TSI Indicator and Hull Moving Average genannt. Die Hauptidee besteht darin, Trends in Aktien, Kryptowährungen oder Forex zu identifizieren, indem der TSI-Indikator und der Hull-Bewegungsdurchschnitt kombiniert werden und Handelssignale generiert werden, wenn ein Trend beginnt.

Strategie Logik

Die Strategie verwendet den TSI-Indikator, um Preistrends und -dynamik zu bestimmen. Der TSI-Indikator basiert auf einem doppelt glätteten gleitenden Durchschnitt der Preisänderungsrate. Er erzeugt Kaufsignale, wenn der TSI-Wert über seinen gleitenden Durchschnitt überschreitet, und Verkaufssignale, wenn er darunter überschreitet.

Die Strategie verwendet auch den Hull Moving Average, um Preistrends zu bestimmen. Der Hull Moving Average wird mit doppelt gewichteten gleitenden Durchschnitten konstruiert und kann Marktlärm effektiv filtern. Ein Aufwärtstrend wird identifiziert, wenn die schnelle Linie über die langsame Linie überschreitet, und ein Abwärtstrend, wenn er darunter überschreitet.

Wenn der TSI-Indikator ein Signal erzeugt, wenn der Hull Moving Average den Trend in der gleichen Richtung bestätigt, werden entsprechende Handelssignale ausgelöst. Darüber hinaus überprüft die Strategie auch die Richtung der Kerzenkörper, um den Trend zu bestätigen.

Analyse der Vorteile

Durch die Kombination von Indikatoren für Trend, Dynamik und gleitende Durchschnitte kann diese Strategie den Beginn von Markttrends effektiv erkennen und übermäßige falsche Signale vermeiden.

Im Vergleich zu Single-Indikator-Strategien filtert diese Strategie Signale, indem sie mehrere Indikatoren kombiniert, was die Qualität der Signale erheblich verbessern kann.

Risikoanalyse

Obwohl diese Strategie Trendauftritte effektiv erkennen kann, kann sie während der Marktkonsolidierung einige falsche Signale und einen Überhandel erzeugen.

Um Risiken zu reduzieren, können die Parameter der Rumpfperiode oder der TSI entsprechend angepasst werden. An Kontrollverluste können auch Stopps hinzugefügt werden. Bei Optimierungen muss darauf geachtet werden, ein hohes Signal-Rausch-Verhältnis für die besten Parameter zu gewährleisten.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren Sie die Parameter des Hull Moving Average, um Kurven zu glätten und falsche Signale zu filtern
  2. Optimierung der TSI-Parameter zur Balance zwischen Empfindlichkeit und Stabilität
  3. Hinzufügen von Stop-Loss-Strategien zur Kontrolle der Verlustgröße
  4. Anpassen der Signallänge, um kurzfristiges Rauschen zu filtern
  5. Prüfung auf verschiedenen Produkten und Zeitrahmen
  6. Einbeziehung anderer Indikatoren für die Signalüberprüfung

Schlussfolgerung

Diese Strategie kombiniert den TSI-Indikator und den Hull Moving Average, um nach Bestätigung von Markttrends Handelssignale zu erzeugen. Die Strategie hat ein hohes Timing und Signalqualität. Durch Parameteroptimierung und Strategiekombination kann die Rentabilität bei gleichzeitiger Senkung der Risiken erheblich verbessert werden. Die Strategie eignet sich für die Identifizierung von mittelfristigen bis langfristigen Trends und hat vielversprechende Anwendungsperspektiven, insbesondere auf den Kryptowährungs- und Devisenmärkten.


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

Mehr