1、新建EA程序:打开MQL4编辑器,新建一个EA,起名MyEA,点击下一步进入编程界面
2、界面上三个函数OnInit()是初始化函数,当载入EA的时候执行一次;OnDeinit(const int reason)是当关闭EA的时候执行一次;void OnTick()函数,是当每个价格到达的时候执行;
3、在开头部分需要填写的外部可设置的参数(包括止盈,止损,交易手数,两个均线的周期 ,一个20日均线,一个5日均线)extern double TakeProfit = 50; //止盈点数extern double StopLoss = 20; //止损点数extern double Lots = 0.1; //交易手数extern double Poin; //平台最小报价单位extern int MAPeriodSlow=20; //20日移动平均extern int MAPeriodfast=5; //5日移动平均
4、在OnInit()函数中编写初始化函数,主要是为了统一不同币种最小报价单位 if (Point == 0.00001) Poin = 0.0001; //6 digits else if (Point == 0.001) Poin = 0.01; //3 digits (for Yen based pairs) else Poin = Point; //Normal
5、在OnDeinit()函数中填写逻辑和交易函数double myMAslow,my怡觎现喾MAfast,myMAslow1,myMAfast1; int i=0稆糨孝汶; myMAslow=iMA(Symbol(),0,MAPeriodSlow,0,MODE_SMA,PRICE_CLOSE,0); myMAfast=iMA(Symbol(),0,MAPeriodFast,0,MODE_SMA,PRICE_CLOSE,0); myMAslow1=iMA(Symbol(),0,MAPeriodSlow,0,MODE_SMA,PRICE_CLOSE,1); myMAfast1=iMA(Symbol(),0,MAPeriodFast,0,MODE_SMA,PRICE_CLOSE,1); //上穿买入 平掉卖单 if(myMAfast>myMAslow && myMAfast1<myMAslow1) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); if(OrdersTotal()==0) OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Poin,Ask+TakeProfit*Poin,"TF0_1",0,Green); } //下穿卖出 平掉买单 if(myMAfast<myMAslow && myMAfast1>myMAslow1) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); if(OrdersTotal()==0) OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Poin,Bid-TakeProfit*Poin,"TF0_1",0,Red); }
6、最后回测一下效果,点击测量测试,或者显示中的EA测试选项(或者Ctrl+R键),选择你的EA,选择测试货币对,点击复盘显示,选择时间周期进行测试,最后点击测试进行复盘测试。