双移动平均线策略,通过建立m日和n日移动平均线,这两条移动平均线在价格移动期间必须有交叉点。如果是m>n ,则n日移动平均线“向上交叉”m日移动平均线是买入点,反之亦然。该策略基于不同周期移动平均线的交叉点,掌握交易标的的强弱时刻,并执行交易。短期移动平均线向上交叉长期移动平均线称为“买点”,反之亦然。好的,现在我们可以建立一个简单的策略,金叉买入,死叉卖出。
现在我们将使用商品期货螺纹钢指数过去一年的日K线为回测数据源。让我们来看看移动平均线的力量。
如果交易标的是数字货币,以下代码基本不用改动任何地方,只需要把交易标的在发明者量化平台设置成你想要交易的数字货币交易对,然后选好交易所即可。
单一移动平均策略
单一移动平均线也可以作为交易策略。事实上,它是双移动平均线的变体。当下的价格将被视为另一根移动平均线。
MA5^^MA(C, 5);
CROSS(C, MA5), BK;
CROSSDOWN(C, MA5), SP;
AUTOFILTER;
以上是一个基于单根均线的简单的开仓和平仓策略。其回测结果如下图所示。虽然看起来不错,但只要考虑到滑点和佣金费用,结果就会很糟糕。
双移动平均线策略
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
CROSS(MA5,MA10),BK;
CROSSDOWN(MA5,MA10),BP;
CROSS(MA10,MA5),SK;
CROSSDOWN(MA10,MA5),SP;
AUTOFILTER;
采用这种简单的策略,没有优化,结果不理想,利润如下
双移动平均线策略的小幅改善
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
CROSS(MA5,MA10)&&MA10>REF(MA10,1)&&REF(MA10,1)>REF(MA10,2)&&MA5>REF(MA5,1)&&REF(MA5,1)>REF(MA5,2),BK;
CROSSDOWN(MA5,MA10),BP;
CROSS(MA10,MA5)&&MA10<REF(MA10,1)&&REF(MA10,1)<REF(MA10,2)&&MA5<REF(MA5,1)&&REF(MA5,1)<REF(MA5,2),SK;
CROSSDOWN(MA10,MA5),SP;
AUTOFILTER;
与原策略相比,这里添加了确认条件。例如,如果策略想做多,要求MA10和MA5在过去两个时期都处于上升趋势,过滤掉一些反复出现的短期信号并提高中标率。
最终的回测结果表现良好
移动平均线差值策略
MA1:=EMA(C,33)-EMA(C,60);//计算33周期和60周期指数之间的平均差值为MA1
MA2:=EMA(MA1,9);//计算9周期MA1指数的平均值
MA3:=MA1-MA2;//计算MA1和MA2之间的差异为MA3
MA4:=(MA(MA3,3)*3-MA3)/2;//计算MA3的3周期和MA3的一半的平均值的3倍的差值
MA3>MA4&&C>=REF(C,1),BPK;//当MA3大于MA4且收盘价不低于前一K线的收盘价时,平仓和开仓多头。
MA3<MA4&&C<=REF(C,1),SPK;//当MA3小于MA4且收盘价不大于前一K线的收盘价时,平仓和开仓空头。
AUTOFILTER;
移动平均线中的长短期均线相减的结果是什么?策略研究依赖于这种不断的尝试。MA4实际上是MA3前两个时期的平均值。
当MA3的当前值大于前两个期间的平均值时,做多,这里增加了当前价格大于前一个K线收盘价的过滤条件,这提高了中标率。你可以自己试试。
消除这种情况的效果几乎没有影响。具体的回测结果如下:
三条移动平均线策略
使用双移动平均线,我们自然会想到三条移动平均线的结果,三条移动平均线有更多的过滤条件。
MA1: MA(C, 10);
MA2: MA(C, 30);
MA3: MA(C, 90);
MA1>MA2&&MA2>MA3, BPK;
MA1<MA2&&MA2<MA3, SPK;
AUTOFILTER;
以上是最简单的三条均线策略源代码,短期,中期和长期均线,开仓多头以的条件是:满足短期 >中期,中期>长期。这个策略其实仍然是两个移动平均线的想法。回测结果如下:
通过引入这五种策略,我们可以看到均线策略是如何演变的。单一移动平均线策略很容易反复触发。有必要增加过滤条件。不同的条件产生不同的策略,但移动平均线策略的性质没有改变。短期代表短期趋势,长期代表长期趋势,而交叉代表趋势的突破。
以这些策略为例,估计读者可以轻松激发他们自己的移动平均线策略的改进。