11 12
发新话题
打印

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

本主题由 xfxyldj 于 2008-1-18 23:07 移动 本主题被作者加入到个人文集中

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

//+------------------------------------------------------------------+
//|                                                    OneOrder1.mq4 |
//|                                                              ldj |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#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);
  }
//+------------------------------------------------------------------+

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

附件

MA_Cross_EA.mq4 (4.26 KB)

2008-1-19 14:18, 下载次数: 74

TOP

学习了~
Fxss智能交易系统http://www.forexss.com/

TOP

欧。够详细。。。

TOP

谢谢分享!

TOP

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

TOP

谢谢

TOP

马上看看效果

TOP

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

TOP

学习

TOP

谢谢分享奉献

TOP

 11 12
发新话题