Die Bandpass Filtering Trend Extraction Strategy ist eine Aktientrend-Tracking-Strategie, die auf Bandpass-Filtern basiert. Sie verwendet einen exponentiell gewichteten gleitenden Durchschnitt und Bandpass-Filterung, um die Preisreihen zu verarbeiten und die Trendkomponente in den Preisen als Signal für Ein- und Ausgänge zu extrahieren.
Die Strategie konstruiert zunächst einen doppelten exponentiellen gleitenden Durchschnitt, indem sie die Parameter Länge und Delta anpasst, um die Länge des gleitenden Durchschnitts und die Glätte zu steuern. Dann verwendet sie eine Reihe mathematischer Transformationen, um die Trendkomponente aus der Preisreihe zu extrahieren und in der Variablen xBandpassFilter zu speichern. Schließlich berechnet sie den einfachen gleitenden Durchschnitt von xBandpassFilter, xMean, als Indikator für Ein- und Ausgänge.
Die Empfindlichkeit von Eingängen und Ausgängen kann durch Abstimmung der Trigger-Ebene gesteuert werden.
Die Verkürzung der Länge kann Verzögerungsprobleme verbessern.
Die Strategie ist relativ stabil mit guter Performance in starken Trendmärkten. Weitere Optimierungen in mehreren Marktumgebungen können sie zuverlässiger profitabel machen.
/*backtest start: 2022-12-27 00:00:00 end: 2024-01-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 14/12/2016 // 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="Extracting The Trend Strategy Backtest") Length = input(20, minval=1) Delta = input(0.5) Trigger = input(0) reverse = input(false, title="Trade reverse") hline(Trigger, color=blue, linestyle=line) 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) pos = iff(xMean > Trigger, 1, iff(xMean < Trigger, -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="ExTrend")