Strategi Ekstraksi Tren Bandpass Filtering adalah strategi pelacakan tren saham berdasarkan filter bandpass.
Strategi ini pertama-tama membangun rata-rata bergerak eksponensial ganda dengan menyesuaikan parameter Panjang dan Delta untuk mengontrol panjang rata-rata bergerak dan kelancaran. Kemudian menggunakan serangkaian transformasi matematis untuk mengekstrak komponen tren dari seri harga dan menyimpannya dalam variabel xBandpassFilter. Akhirnya, menghitung rata-rata bergerak sederhana dari xBandpassFilter, xMean, sebagai indikator untuk entri dan keluar.
Sensitivitas input dan output dapat dikontrol dengan mengatur tingkat Trigger.
Memperpendek panjang dapat memperbaiki masalah lag.
Strategi ini relatif stabil dengan kinerja yang baik di pasar tren yang kuat. Optimasi lebih lanjut di beberapa lingkungan pasar dapat membuatnya lebih menguntungkan.
/*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")