分享

mt4一个综合智能交易系统的经典代码

 寒木萧条 2012-03-25

mt4一个综合智能交易系统的经典代码如下:

//+------------------------------------------------------------------+
//|                                                   sy_test003.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www."

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
//全局变量
int buytisun=0;
int selltisun=0;

int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   //所用到的技术指标
   double ema15M5=iMA(Symbol(),PERIOD_M15,5,0,MODE_EMA,PRICE_CLOSE,0);
   double ema30M5=iMA(Symbol(),PERIOD_M30,5,0,MODE_EMA,PRICE_CLOSE,0);
   double ema15M10=iMA(Symbol(),PERIOD_M15,10,0,MODE_EMA,PRICE_CLOSE,0);
   double ema30M10=iMA(Symbol(),PERIOD_M30,10,0,MODE_EMA,PRICE_CLOSE,0);
   double k=iStochastic(Symbol(),0,8,5,5,MODE_EMA,0,MODE_MAIN,0);
   double d=iStochastic(Symbol(),0,8,5,5,MODE_EMA,0,MODE_SIGNAL,0);
   double kp=iStochastic(Symbol(),0,8,5,5,MODE_EMA,0,MODE_MAIN,1);
   double dp=iStochastic(Symbol(),0,8,5,5,MODE_EMA,0,MODE_SIGNAL,1);
   //下buy单
   if((ema15M5>ema15M10)&&(ema30M5>ema30M10)&&(k>d)&&(kp<dp))
     {
       if((buy(1,500,500,Symbol()+"buy",1))>0)
         {
           buytisun=200;
         }
     }
     //下sell单
   if((ema15M5<ema15M10)&&(ema30M5<ema30M10)&&(k<d)&&(kp>dp))
     {
       if((sell(1,500,500,Symbol()+"sell",1))>0)
         {
           selltisun=200;
         }
     }
  
   //移动止损
   for(int i=0;i<OrdersTotal();i++)
      {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
          {
            //多单移动止损
            if(OrderComment()==(Symbol()+"buy"))
              {
                if(((Bid-OrderOpenPrice())/Point)>=buytisun)
                  {
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss()+200*Point,OrderTakeProfit()+200*Point,0,Blue)==true)
                      {
                        buytisun=buytisun+200;
                      }
                  }
              }
            //空单移动止损
            if(OrderComment()==(Symbol()+"sell"))
              {
                if(((OrderOpenPrice()-Ask)/Point)>=selltisun)
                  {
                    if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss()-200*Point,OrderTakeProfit()-200*Point,0,Blue)==true)
                      {
                        selltisun=selltisun+150;
                      }
                  }
              }
          }
      }
   return(0);
  }
//+------------------------------------------------------------------+

//下buy单自定义函数,此函数下单较方便
int buy(double lots,int sun,int ying,string commt,int mgc)
  {
    int com=0;
    int ticket=0;
    for(int i=0;i<OrdersTotal();i++)
       {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
           {
             if(OrderComment()==commt)
               {
                 com=1;
               }
           }
       }
    if(com==0)
      {
        if((sun!=0)&&(ying!=0))
          {
            ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,30,Ask-sun*Point,Ask+ying*Point,commt,mgc,0,White);
          }
        if((sun==0)&&(ying!=0))
          {
            ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,30,0,Ask+ying*Point,commt,mgc,0,White);
          }
        if((sun!=0)&&(ying==0))
          {
            ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,30,Ask-sun*Point,0,commt,mgc,0,White);
          }
        if((sun==0)&&(ying==0))
          {
            ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,30,0,0,commt,mgc,0,White);
          }
      }
      return(ticket);
  }
 
//下sell单自定义函数,此函数下单较方便
int sell(double lots,int sun,int ying,string commt,int mgc)
  {
    int com=0;
    int ticket=0;
    for(int i=0;i<OrdersTotal();i++)
       {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
           {
             if(OrderComment()==commt)
               {
                 com=1;
               }
           }
       }
    if(com==0)
      {
        if((sun!=0)&&(ying!=0))
          {
            ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,30,Bid+sun*Point,Bid-ying*Point,commt,mgc,0,Red);
          }
        if((sun==0)&&(ying!=0))
          {
            ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,30,0,Bid-ying*Point,commt,mgc,0,Red);
          }
        if((sun!=0)&&(ying==0))
          {
            ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,30,Bid+sun*Point,0,commt,mgc,0,Red);
          }
        if((sun==0)&&(ying==0))
          {
            ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,30,0,0,commt,mgc,0,Red);
          }
      }
      return(ticket);
  }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多