5.5 实战:均线交叉EA

第 36 节 / 共 36 节 课程:Mt4编程语言
我们来写一个完整的EA:双均线交叉策略。当快线上穿慢线时买入,下穿时卖出。
//+------------------------------------------------------------------+
//|                                           MaCross EA             |
//+------------------------------------------------------------------+
#property copyright "MyEA"
#property version "1.00"
#property strict
input double Lots=0.1;
input int FastMA=5;
// 快线周期
input int SlowMA=20;
// 慢线周期
input int StopLoss=50;
input int TakeProfit=100;
input int MagicNumber=8888;
int OnInit(){
    Print("双均线EA已启动");
    return INIT_SUCCEEDED;
}
void OnTick(){
    double fast1=iMA(NULL,0,FastMA,0,MODE_SMA,PRICE_CLOSE,1);
    double slow1=iMA(NULL,0,SlowMA,0,MODE_SMA,PRICE_CLOSE,1);
    double fast0=iMA(NULL,0,FastMA,0,MODE_SMA,PRICE_CLOSE,0);
    double slow0=iMA(NULL,0,SlowMA,0,MODE_SMA,PRICE_CLOSE,0);
     if(fast1 < slow1 && fast0 > slow0){
        CloseAllSells();
        OpenBuy();
    }
    else if(fast1 > slow1 && fast0 < slow0){
        CloseAllBuys();
        OpenSell();
    }
}
void OpenBuy(){
    double sl=Bid - StopLoss*Point;
    double tp=Bid+TakeProfit*Point;
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,sl,tp,"MaCross",MagicNumber,0,clrBlue);
}
void OpenSell(){
    double sl=Ask+StopLoss*Point;
    double tp=Ask - TakeProfit*Point;
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl,tp,"MaCross",MagicNumber,0,clrRed);
}
这个EA虽然简单,但包含了完整的EA结构:参数定义、初始化、OnTick策略逻辑、开仓和平仓。