带通滤波反转策略是一种基于带通滤波器的股票交易策略。它通过构建一个cos和正弦函数,来模拟一个带通滤波器,并生成买入和卖出信号。当滤波器输出高于或低于某个触发水平时,该策略会进行反向操作,即买入或卖出。
该策略的核心是构建一个带通滤波器BP,它由两个参数组成:中心频率和带宽。中心频率决定了滤波器通过的主要周期,带宽决定了通过的周期范围。这些参数决定了滤波器的传递特性。
具体来说,该策略构建了以下几个变量:
根据这些变量,策略构建出了一个一阶IIR(无限脉冲响应)滤波器:
BP = 0.5*(1 - alpha)*(xPrice - xPrice[2]) + beta*(1 + alpha)*nz(BP[1]) - alpha*nz(BP[2])
当BP高于或低于TriggerLevel时,该策略会进行相反方向的操作。
该策略的主要优势有:
该策略也存在一些风险:
为了降低这些风险,可以考虑以下几个优化方法:
该策略主要可以从以下几个方面进行优化:
周期和参数自适应:根据不同周期及最近一个时间窗口的价格行情,实时调整 Length、Delta 等参数,使滤波器动态适应市场环境变化。
结合趋势判断:在带通滤波器基础上加入 MACD、MA 等技术指标判断趋势方向,避免逆势开仓。
多时间框架结合:在多个时间框架(例如 5 分钟、15 分钟、30 分钟等)部署策略,不同时间框架之间进行信号验证,提高信号准确率。
4.止损机制:设定合理的止损位置,在亏损达到止损位后主动平仓止损,有效控制单笔亏损大小。
通过以上几点优化,可以大幅提高策略的稳定性、适应性和盈利能力。
带通滤波反转策略通过构建带通滤波器,提取有用的中频信号,并在滤波器输出触发水平时,采取反向操作,捕捉价格的短期反转机会。该策略相对简单,通过参数优化可以适应多种市场环境。主要优化方向包括自适应滤波器、趋势判断、多时间框架组合及止损机制等。
/*backtest start: 2024-01-16 00:00:00 end: 2024-01-23 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 24/11/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... // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="Bandpass Filter Reversed Strategy") Length = input(20, minval=1) Delta = input(0.5) TriggerLevel = input(0) xPrice = hl2 hline(TriggerLevel, color=blue, linestyle=line) beta = cos(3.14 * (360 / Length) / 180) gamma = 1 / cos(3.14 * (720 * Delta / Length) / 180) alpha = gamma - sqrt(gamma * gamma - 1) BP = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2]) pos = iff(BP > TriggerLevel, -1, iff(BP <= TriggerLevel, 1, nz(pos[1], 0))) if (pos == 1) strategy.entry("Long", strategy.long) if (pos == -1) strategy.entry("Short", strategy.short) barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(BP, color=red, title="Bandpass Filter Strategy")