萌新小学生,正在学习EA编程,自己编了一个,请各位大神指教!

 
//+------------------------------------------------------------------+
//|                                                   MyEMA.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
extern double   MyLot=0.01;            //下单量
string          MySymbol="0";          //货币对
extern int      EMA1=14;               //EMA1
extern int      EMA2=42;               //EMA2
extern int      TimeF=PERIOD_M30;      //图表周期
extern int      SLPoint=0;             //止损点数
extern int      TPPoint=0;             //止盈点数
double          TPPrice=0.0;           //止盈价格
double          SLPrice=0.0;           //止损价格
int             Slippage;              //滑点
int             Magic=356735;          //魔术号
int             ticket;                //买卖信号
bool            Alarm=false;           //启动警报
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
int start()
  {
//主程序
   double maShort;
   double maLong;
   double maShort1;
   double maLong2;
   int    i,r,total;
   int    BuyTypelot=0;
   int    SellTypelot=0;
   bool   result=false;
   MySymbol=Symbol();
   maShort=iMA(MySymbol,TimeF,EMA1,0,MODE_SMA,PRICE_CLOSE,0);
   maLong=iMA(MySymbol,TimeF,EMA2,0,MODE_SMA,PRICE_CLOSE,0);
   maShort1=iMA(MySymbol,TimeF,EMA1,0,MODE_SMA,PRICE_CLOSE,1);
   maLong2=iMA(MySymbol,TimeF,EMA2,0,MODE_SMA,PRICE_CLOSE,1);
   total=OrdersTotal();
//统计多单、空单的数量
   for(i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==MySymbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()<=OP_BUY)
              {
               BuyTypelot++;
               Print("多单数量:", BuyTypelot);
               return(0);
              }
            else
              {
               SellTypelot++;
               Print("空单数量:",SellTypelot);
               return(0);
              }
           }
        }
     }
//如果多单小于1,金叉时下多单
   if(BuyTypelot<1)
     {
      if(maShort>maLong&&maShort1<maLong2&&Close[0]>maShort)
        {
         ticket=OrderSend(MySymbol,OP_BUY,MyLot,MarketInfo(MySymbol,MODE_ASK),Slippage,SLPrice,TPPrice,"下多单",Magic,0,SYMBOL_ARROWUP);
         if(ticket<0)
           {
            if(Alarm)
              {Alert("下多单没有成功!",GetLastError());}
           }
         else
           {
            if(Alarm)
              {Alert("已经成功下了多单!");}
           }
         return(0);
        }
     }
//如果空单小于1,死叉时下空单
   if(SellTypelot<1)
     {
      if(maShort<maLong&&maShort1>maLong2&&Close[0]<maShort)
        {
         ticket=OrderSend(MySymbol,OP_SELL,MyLot,MarketInfo(MySymbol,MODE_BID),Slippage,SLPrice,TPPrice,"下空单",Magic,0,SYMBOL_ARROWDOWN);
         if(ticket<0)
           {
            if(Alarm)
              {Alert("下空单没有成功!",GetLastError());}
           }
         else
           {
            if(Alarm)
              {Alert("已经成功下了空单!");}
           }
         return(0);
        }
     }
   total=OrdersTotal();
   for(r=0; r<total; r++)
     {
      if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))
        {
         //选择符合要求的订单
         if(OrderSymbol()==MySymbol&&OrderMagicNumber()==Magic)
           {
            //如果出现死叉信号,卖出
            if(maShort<maLong && maShort1>maLong2 &&Close[0]<maShort&& OrderType()==OP_BUY)
              {
               result=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
               if(result=false)
                 {
                  Print("多单平仓未成功!",GetLastError());
                  return(0);
                 }
              }
            if(maShort>maLong && maShort1<maLong2&&Close[0]<maShort&& OrderType()==OP_SELL)
              {
               result=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
               if(result=false)
                 {
                  Print("空单平仓未成功!",GetLastError());
                  return(0);
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

 
你学多久了 能编出这个
 
学了一两月,我C语言的底子,上面的有很多问题,我又修改了
 
major6933:
学了一两月,我C语言的底子,上面的有很多问题,我又修改了

娱乐型ea吗

 
写的很不错!厉害高手!
 

30分鐘EMA 14穿42, 很好啊

有試過PZ CrossMA 嗎

 
Sze Shing Fong #:

30分鐘EMA 14穿42, 很好啊

有試過PZ CrossMA 嗎

正在用