La stratégie d'extraction de tendance de filtrage de bande est une stratégie de suivi de tendance d'actions basée sur des filtres de bande.
La stratégie construit d'abord une moyenne mobile double exponentielle en réglant les paramètres Longueur et Delta pour contrôler la longueur de la moyenne mobile et la douceur. Puis elle utilise un ensemble de transformations mathématiques pour extraire la composante de tendance de la série de prix et la stocker dans la variable xBandpassFilter. Enfin, elle calcule la moyenne mobile simple de xBandpassFilter, xMean, comme indicateur pour les entrées et les sorties.
La sensibilité des entrées et sorties peut être contrôlée en réglant le niveau de déclenchement.
Le raccourcissement de la longueur peut améliorer les problèmes de retard.
La stratégie est relativement stable avec de bonnes performances sur des marchés à forte tendance.
/*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")