Diese Strategie wird
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.
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.
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.
Die Strategie kann in folgenden Aspekten optimiert werden:
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)