
该策略命名为“移动平均线跨度反转”,它通过计算不同周期移动平均线之间的交叉情况,判断行情反转的时机,采取适当的做多做空操作。
该策略同时计算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)