有您的持续关注
我们会做得更好

汉化版简单的均线穿越EA



汉化版简单的均线穿越EA十分有助于新手学习研究MQL编程逻辑。感谢汉化作者!

本网收集整理智能交易EA仅为MQL4编程爱好者提供语法及相关编程技巧的学习研究之用,智能交易存在极高的风险测试请用模拟盘,请勿用于实盘。简单的均线穿越EA源码:

//+------------------------------------------------------------------+
//|                                             简单的均线穿越EA.mq4 |
//|                                     Copyright 2016, QQ:125808047 |
//+------------------------------------------------------------------+
#property copyright "www.125808047.com"
#property link      "http://www.125808047.com/"

//---------------------------------------------------------------------+
extern int    短均周期=3;
extern int    长均周期=13;
extern int    短均均模=0;
extern int    长均均模=3;
extern int    短均价类=0;
extern int    长均价类=4;
extern int    短均平移=0;
extern int    长均平移=0;
extern double 手数 = 0.01;
extern int    滑点 = 0;

int New_Bar;
int 最后时间;
int 开仓定位;
int 关仓定位;
int 单总数;
double 当前短均;
double 前一短均;
double 当前长均;
double 前一长均;
int 买单判断; 
int 卖单判断; 
bool 成功 = false;
//------------------------------主函数---------------------------------+

int start()  
   {
   买单判断=0;
   卖单判断=0;
   double 下单现价;
   int 开仓单=0;                                         // 未用
   单总数=OrdersTotal(); 
   for(int i=单总数-1; i>=0; i--)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) 
         {
         if(OrderType()==OP_BUY)
            {
            买单判断=1;                                //没用
            if(均线穿越子()==1)
               {
               下单现价=MarketInfo(Symbol(),MODE_BID); 
               成功 = OrderClose(OrderTicket(),
                          OrderLots(),
                          下单现价,
                          滑点,
                          CLR_NONE); //平买
               }
            }
         if(OrderType()==OP_SELL) 
            {
            卖单判断=1;                               //没用
            if(均线穿越子()==2)
               {
               下单现价=MarketInfo(Symbol(),MODE_ASK);
               成功 = OrderClose(OrderTicket(),
                          OrderLots(),
                          下单现价,
                          滑点,
                          CLR_NONE); //平卖
               }
            }
         }
      }
   
   New_Bar=0;                                                // 将棒 赋为0  
   if (最后时间 != Time[0])
      {
      New_Bar= 1;                                            // 将棒赋为 1
      最后时间 = Time[0];
      } 
   
   当前短均= iMA(NULL,0, 短均周期, 短均平移, 获均线类型子(短均均模), 获均线价格类型子(短均价类), 0);
   前一短均= iMA(NULL,0, 短均周期, 短均平移, 获均线类型子(短均均模), 获均线价格类型子(短均价类), 1);
   当前长均= iMA(NULL,0, 长均周期, 长均平移, 获均线类型子(长均均模), 获均线价格类型子(长均价类), 0);
   前一长均= iMA(NULL,0, 长均周期, 长均平移, 获均线类型子(长均均模), 获均线价格类型子(长均价类), 1);
   
   if (开仓前检查穿越定位子()==1 && New_Bar==1)
      {
      开买子();
      }      
   if (开仓前检查穿越定位子()==2 && New_Bar==1)
      {
      开卖子();
      }    
   return(0);
   }
     
//----------------------------穿越位置开 子函数()----------------------+

int 开仓前检查穿越定位子()
   {
   开仓定位=0;
   if ((前一短均<=当前长均 && 当前短均>当前长均) || (前一短均<当前长均 && 当前短均>=当前长均))
      {
      开仓定位=1;
      }                  
   if ((前一短均>=当前长均 && 当前短均<当前长均) || (前一短均>当前长均 && 当前短均<=当前长均))
      {
      开仓定位=2;
      }             
   return(开仓定位);
   }
   
//------------------------------均线穿越 子函数()----------------------+

int 均线穿越子()
   {
   关仓定位=0; 
   if ((前一短均>=当前长均 && 当前短均<当前长均) || (前一短均>当前长均 && 当前短均<=当前长均))
      {
      关仓定位=1;
      }                  
   if ((前一短均<=当前长均 && 当前短均>当前长均) || (前一短均<当前长均 && 当前短均>=当前长均))
      {
      关仓定位=2;
      } 
                  
   return(关仓定位);
   }
   
//--------------------------开买单 子函数()----------------------------+

int 开买子()                                                   // 注意函数类型!
   {
   if (单总数==1)
      {
      成功 = OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
      if (OrderType()==OP_BUY)  return(0);                       // 如果类型是买单时,返回,即不再开买
      }
   成功 = OrderSend(Symbol(),
             OP_BUY,
             手数, 
             Ask, 
             滑点, 
             0, 
             0, 
             "Buy: 均线穿越", 
             1, 
             0, 
             CLR_NONE);
  return(0);                                                     // 未写返回值
   }
   
//---------------------------开卖单子函数()----------------------------+

int 开卖子() 
   {
   if (单总数==1)
      {
      成功 = OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
      if (OrderType()==OP_SELL)  return(0);
      }
   成功 = OrderSend(Symbol(),
             OP_SELL, 
             手数, 
             Bid, 
             滑点, 
             0, 
             0, 
             "Sell: 均线穿越", 
             2, 
             0,
             CLR_NONE);
   return(0); 
   }
   
//----------------------均线模式选择 子函数()--------------------------+

int 获均线类型子(int 均模)
   {
      switch(均模)
        {
         case 0: return(0);
         case 1: return(1);
         case 2: return(2);
         case 3: return(3);
        }
  return(0);
   }
   
//--------------------均线使用的价格模式选择 子函数()-------------------+

int 获均线价格类型子(int 使用价格)
   {
      switch(使用价格)
        {
         case 0: return(PRICE_CLOSE);       
         case 1: return(PRICE_OPEN);
         case 2: return(PRICE_HIGH);
         case 3: return(PRICE_LOW);
         case 4: return(PRICE_MEDIAN);
         case 5: return(PRICE_TYPICAL);
         case 6: return(PRICE_WEIGHTED);
        }
   return(0);
   }
//----------------------------------------------------------------------+

如您喜欢此文章请点下面分享按钮↴峰汇在线 » 汉化版简单的均线穿越EA
上一篇:
下一篇:
分享到:更多 ()