当往mt4图表上插入一条移动平均线(Moving Average)后,整个图表就含有两个主要对象,一是插入的这条移动平均线,二是蜡烛图(或者K线图)。这时候整个图表看起来比较简洁,当然,也可以说简单。
如果就以这一条均线结合k线价格来开发EA,看起来是有些单纯,可能盈利的概率也不是很大,但作为一种爱好,也不凡研究研究,折腾折腾。
要根据这种图表信号开发EA,首先要获取价格及K线的相关数据,假设插入的是一条200SMA,那就先用iMA()函数获取几个单位均线的值,如:
double MA_200_0 = iMA(Symbol(),0, 200, 0, MODE_SMA, PRICE_CLOSE, 0);
double MA_200_1 = iMA(Symbol(),0, 200, 0, MODE_SMA, PRICE_CLOSE, 1);
double MA_200_2 = iMA(Symbol(),0, 200, 0, MODE_SMA, PRICE_CLOSE, 2);
当然,也可以定义一个数组,然后结合for循环来获取所需的均线值。iMA()函数中的参量,根据策略的不同来变更参数类型。
要比较价格和均线的变化,那还需要获取K线相关的价格,主要是四个:开盘价iOpen、收盘价iClose、最低价iLow、最高价iHigh。如:
double Open_0 = iOpen(Symbol(),0, 0);
double Open_1 = iOpen(Symbol(),0, 1);
double Open_2 = iOpen(Symbol(),0, 2);
double Close_0 = iClose(Symbol(),0, 0);
double Close_1 = iClose(Symbol(),0, 1);
double Close_2 = iClose(Symbol(),0, 2);
double Low_0 = iLow(Symbol(),0, 0);
double Low_1 = iLow(Symbol(),0, 1);
double Low_2 = iLow(Symbol(),0, 2);
double High_0 = iHigh(Symbol(),0, 0);
double High_1 = iHigh(Symbol(),0, 1);
double High_2 = iHigh(Symbol(),0, 2);
上面函数中的0、1、2分别是指从图表右侧开始第一、第二、第三个K线所对应的数据值,包括均线也是如此排序。
作为一条均线,其最简单的交易思路是价格站稳均线上方买入,站稳下方卖出。如:
if(Close_0 > MA_0 && Close_1 > MA_1)//简单定义两个单位价格站稳均线上方
if(Close_0 < MA_0 && Close_1 < MA_1)//简单定义两个单位价格站稳均线下方
进一步控制买卖条件,可以定义均线处于上升状态买入,下降状态卖出。如:
if(MA_0 > MA_1 && MA_1 > MA_2)//简单定义两个单位均线在上升
if(MA_0 < MA_1 && MA_1 < MA_2)//简单定义两个单位均线在下降
有些策略可以要求定义均线由下往上突破均线为买入信号,由上往下突破为卖出信号,那就定义突破的概念。如:
if(Close_0 > MA_0 && Close_1 > MA_1 && Open_1 < MA_1 && High_2 < MA_2)//简单定义价格由下往上突破均线
if(Close_0 < MA_0 && Close_1 < MA_1 && Open_1 > MA_1 && Low_2 > MA_2)//简单定义价格由上往下突破均线
当然,这种定义有些简单,如果有需要可以进一步定义之前若干个单位K线价格和均线的位置来实现是在一段涨跌过后才出现的突破信号。
一些严谨的策略,可能需要限制开仓时价格离均线的距离,太远了入场容易止损。这点也不难理解,也很好定义。用输入变量定义一个距离参数,然后比较价格和均线加减这个距离。如:
input int Max_Point = 200;//开仓价格离均线的最大距离
Ask <= MA_0 + (Max_Point*Point)//限制买单价格必须小于设定的距离
Bid >= MA_0 - (Max_Point*Point)//限制卖单价格必须在设定的距离上方
对于单一的顺信号止损止盈的策略,它有个难以避免的结果,那就是资金会在市场无常的波动中慢慢被止损掉。于是,很多纠错类的策略就出来了。如马丁、倍投等等。
在用一条均线研发马丁类的EA时,可以根据均线的突破信号作为第一单开仓信号,开仓后可以根据某些特定的限制条件来进行加仓。
如果是顺势加仓,那么入场后,可以定义均线在上升,价格在均线上方来持续加仓。
当然,不管是顺势加仓还是逆势加仓,都要合理的控制风险。加仓类的策略,大部分时候容易获利出场。
对于利用一条均线倍投类的策略,不多见,但也不能说没有研究的价值,以严谨的突破信号开仓,错了下个信号加倍投注,总会有对的时候,前提依然是要研究能容忍多少次连错。