查看完整版本: 均线交叉EA给大家作参考。

xfxyldj 2007-8-27 20:38

均线交叉EA给大家作参考。

//+------------------------------------------------------------------+
//|                                                    OneOrder1.mq4 |
//|                                                              ldj |
//|                                        [url]http://www.metaquotes.net[/url] |
//+------------------------------------------------------------------+
#property copyright "ldj"
#property link      "http://www.metaquotes.net"
extern int         lots=1;
extern int         EMA1=7;
extern int         EMA2=10;
extern int         EMA3=62;
extern int         timeF=0;
static bool W1,W2,D1,D2,H1,H2,Buy,Sell;
static int  magic;
static double TimeX[3];
static int X[3];
int     MA_Model            =1;
int     PRICE_Model         =0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   X[0]=0;
   X[1]=0;
   X[2]=0;
   D1=false;
   D2=false;
   magic=1;
   TimeX[0]=Time[0];
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if (MAX (EMA1,EMA2,timeF,1)==-1)
   {
     if (SearchOrder (magic,OP_BUY)>0)
     CloseOrder(SearchOrder (magic,OP_BUY));
     
   }
   if (MAX (EMA1,EMA2,timeF,1)==1)
   {
     if (SearchOrder (magic,OP_SELL)>0)
     CloseOrder(SearchOrder (magic,OP_SELL));
     
   }
   if (MAX (EMA1,EMA2,timeF,1)==1 && TimeX[0]!=Time[0])
   {
     if (!OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"D1",magic,0))
     Alert( "OrderSend Error #", GetLastError() );
     TimeX[0]=Time[0];
   }
   if (MAX (EMA1,EMA2,timeF,1)==-1 && TimeX[0]!=Time[0])
   {
     if (!OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,0,"D1",magic,0))
     Alert( "OrderSend Error #", GetLastError() );
     TimeX[0]=Time[0];
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| SearchOrder function                                             |
//+------------------------------------------------------------------+
int SearchOrder (int Magic,int k)
  {
//----
   int i=0;
   for ( int z = OrdersTotal() - 1; z >= 0; z -- )
   {
     if ( !OrderSelect( z, SELECT_BY_POS ) )
     {
       Print("OrderSelect(", z, ",SELECT_BY_POS) - Error #",GetLastError() );
       continue;
     }
     if (OrderSymbol()!=Symbol())continue;
     if (OrderMagicNumber() != Magic )continue;
     if ( OrderType()==k ) i=OrderTicket();
   }
//----
   return(i);
  }
//+------------------------------------------------------------------+
//| CloseOrder function                                              |
//+------------------------------------------------------------------+
int CloseOrder(int _OrderTicket)
  {
//----
   if ( !OrderSelect( _OrderTicket, SELECT_BY_TICKET ) )
   {
     Print("OrderSelect(",OrderTicket(), ",SELECT_BY_POS) - Error #",GetLastError() );
   }
   if (!OrderClose(OrderTicket(), OrderLots(), Bid, 3))
   {
     Print("OrderClose(",OrderTicket(), ",SELL) - Error #",GetLastError() );
   }
//----
   return(1);
  }
//+------------------------------------------------------------------+
//| MAX function                                                     |
//+------------------------------------------------------------------+
int MAX (int MAFast,int MASlow,int PX,int j)
  {
//----
   double MAF[2],MAS[2];
   int i=0;
   MAF[0]=iMA(NULL,PX,MAFast,0,MA_Model,PRICE_Model,0+j);
   MAF[1]=iMA(NULL,PX,MAFast,0,MA_Model,PRICE_Model,1+j);
   MAS[0]=iMA(NULL,PX,MASlow,0,MA_Model,PRICE_Model,0+j);
   MAS[1]=iMA(NULL,PX,MASlow,0,MA_Model,PRICE_Model,1+j);
   if (MAF[0]>MAS[0]  &&  MAF[1]<MAS[1]) i=1;
   if (MAF[0]<MAS[0]  &&  MAF[1]>MAS[1]) i=-1;
   
//----
   return(i);
  }
//+------------------------------------------------------------------+

[[i] 本帖最后由 xfxyldj 于 2008-1-19 14:20 编辑 [/i]]

waynex 2007-8-27 20:40

学习了~:yct63

dongke 2007-8-27 20:46

欧。够详细。。。:yct47

lilyblue 2007-10-31 09:11

谢谢分享!

axdw745 2007-11-26 02:45

MT4教程里也有一个均线系统的code例子。

流浪的猫 2007-11-26 15:11

谢谢:yct38

绿竹翁 2007-11-26 16:05

马上看看效果

genho 2007-12-5 18:40

请问它下单交易的时间周期?

蔚蓝tk 2007-12-5 20:19

学习:yct35

fys86 2007-12-19 12:08

谢谢分享奉献:yct45

gwy 2008-1-5 11:07

xiexie!
页: [1]
查看完整版本: 均线交叉EA给大家作参考。