该策略命名为“移动平均线跨度反转”,它通过计算不同周期移动平均线之间的交叉情况,判断行情反转的时机,采取适当的做多做空操作。
该策略同时计算3条移动平均线,分别是:
当快速移动平均线从下方上穿慢速移动平均线时,说明短期行情开始反转为多头;当快速移动平均线从上方下穿慢速移动平均线时,说明短期行情开始反转为空头。
为了过滤假突破,策略还引入了第4条移动平均线,即长期趋势过滤器(周期参数tlenght)。只有当价格处于该移动平均线之上时,才考虑做多信号;只有当价格处于该移动平均线之下时,才考虑做空信号。
具体交易规则如下:
当快速移动平均线上穿慢速移动平均线,而慢速移动平均线又上穿最慢速移动平均线时(短期多头信号),同时价格高于长期趋势过滤器时,做多入市;当快速移动平均线下穿慢速移动平均线时,平掉多头仓位。
当快速移动平均线下穿慢速移动平均线,而慢速移动平均线又下穿最慢速移动平均线时(短期空头信号),同时价格低于长期趋势过滤器时,做空入市;当快速移动平均线上穿慢速移动平均线时,平掉空头仓位。
该策略具有以下优势:
该策略也存在以下风险:
解决方法:
该策略还可从以下方面进行优化:
该策略基于移动平均线的金叉死叉进行反转交易,同时引入长期趋势过滤器指导交易方向,能有效识别市场反转时机。从回测结果看,该策略收益性较好,有一定的实盘应用价值。后续可从参数选择、指标过滤、止损机制等方面进行优化,使策略更加稳健实用。
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average Trap", overlay=true) flenght = input.int(title="Fast MA Period", minval=1, maxval=2000, defval=3) llenght = input.int(title="Slower MA Period", minval=1, maxval=2000, defval=5) sslenght = input.int(title="Slowest MA Period", minval=1, maxval=2000, defval=8) tlenght = input.int(title="Trend Filter MA Period", minval=1, maxval=2000, defval=200) ssma = ta.sma(close, sslenght) fma = ta.sma(close, flenght) sma = ta.sma(close, llenght) tma = ta.sma(close, tlenght) plot(fma, color=color.red) plot(sma, color=color.white) plot(ssma, color=color.green) plot(tma, color=color.maroon, linewidth=2) short = (fma > sma and sma > ssma) and close < tma long = (fma < sma and sma < ssma) and close > tma closeshort = fma < sma and sma < ssma closelong = fma > sma and sma > ssma if long strategy.entry("long", strategy.long) if closelong strategy.close("long") if short strategy.entry("short", strategy.short) if closeshort strategy.close("short") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)