该策略是一种基于股票或其他金融资产的净值时间序列数据,通过动态计算效率比(ER)作为指数移动平均(EMA)的平滑因子,从而自适应地调整上下轨,实现买卖信号的触发。该策略的主要思路是利用净值数据本身包含的全部信息,通过计算净值变化的复杂程度(ER)来动态调整EMA平滑因子,进而得到动态变化的上下轨。当价格突破上轨时开仓做多,突破下轨时平仓。
该策略通过动态计算效率比(ER)作为指数移动平均(EMA)的平滑因子,自适应地调整上下轨,实现买卖信号的触发。该策略充分利用了净值时间序列数据包含的信息,不需要过多参数设置和优化,方法简洁自然,可以灵活应对市场变化,有效控制回撤。但是该策略对于极端行情的适应性还有待进一步考察,在实际应用中需要注意标的的选择。未来可以从计算方法、开平仓条件、参数优化、策略组合等方面对该策略进行进一步优化和完善,提高策略的稳健性和盈利能力。
/*backtest start: 2023-03-26 00:00:00 end: 2024-03-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy('Equity control', 'EC') // study('Exponential bands', 'EB', overlay = true) er(src) => var start = src var total = 0.0 total += abs(src - nz(src[1], src)) net = abs(src - start ) net / total pine_ema(src, alpha) => mean = 0.0 dev = 0.0 mean := na(mean[1]) ? src : (1 - alpha) * mean[1] + alpha * src dev := na(dev [1]) ? 0 : (1 - alpha) * dev [1] + alpha * abs(src - mean) [mean, dev] src = input(close) a = er (src ) [mean, dev] = pine_ema(src, a) dev_lower = mean - dev dev_upper = mean + dev // plot(dev_lower, 'lower deviation', color.silver, 2, plot.style_stepline) // plot(mean , 'basis' , color.purple, 1, plot.style_stepline) // plot(dev_upper, 'upper deviation', color.silver, 2, plot.style_stepline) if src > dev_upper strategy.entry('event', true, comment = 'on') if src < dev_lower strategy.close('event', comment = 'off') plot(strategy.equity) //bigDope