据说是比较好的mt4样本

楼主  收藏   举报   帖子创建时间:  2019-05-05 05:26 回复:0 关注量:870
样本EA代码,功能齐全
  稍作修改即得成品
  
  //+------------------------------------------------------------------+                                 
  //|                                       大家要顶呀,我是新手,支持我!
  //+------------------------------------------------------------------+
  #property copy* "Copy* 2009 tom 的EA"
  #property link     
  extern string    basic1="==== MegaTrend参数 ====================";
  extern    int period=15;
  extern   int   method=3;                         // MODE_SMA
  extern  int    pr*=0;
  extern string    basic="==== Basic Settings ====================";
  extern double    TakeProfit=100;
  extern double    Stoploss=50;
  extern double    原始手数=0.1;
          double   Lots;
  extern int       加仓次数=2;
  extern string    averages="==== MA Settings ====================";
  extern int       FastPeriod=5;                   // Period for calculating MA
  extern int       FastShift=0;                    // Shift the MA over X number of bars
  extern int       FastType=0;                     // 0: ** moving average
                                                   // 1: Exponential moving average
                                                   // 2: Smoothed moving average
                                                   // 3: Linear weighted moving average
                                                   
  extern int       FastApplication=0;              // 0: Close pr*
                                                   // 1: Open pr*
                                                   // 2: High pr*
                                                   // 3: Low pr*
                                                   // 4: Median pr*, (high+low)/2
                                                   // 5: Typical pr*, (high+low+close)/3
                                                   // 6: Weighted close pr*, (high+low+close+close)/4
  extern int       SlowPeriod=21;
  extern int       SlowShift=0;
  extern int       SlowType=0;
  extern int       SlowApplication=0;
  extern string    manage="==== Order Management ====================";
  extern int       BreakEvenAtProfit=0;
  extern int       BreakEvenShift=0;               // Move the breakeven point up or down around the order open pr*
  extern int       TrailingStop=30;
  extern bool      onlyTrailAfterProfit=false;     // Trailing Stop will only trails when order is profitable
  extern string    account="==== Account Settings ====================";
  extern int       MinimumEquity=0;                // New orders will be disabled if equity drops below minimum
  extern int       MinimumBalance=0;               // New orders will be disabled if balance drops below minimum
  extern string    activity="==== EA Activity Settings ====================";
  extern bool      DisableClosingOrders=false;    // If true, the order closing section of the EA will not run
  extern bool      DisableNewOrders=false;        // If true, the order creating section of the EA will not run
  extern int       ConcurrentOrdersMax=1;         // Maximum number of orders at any one time
  extern string    id="==== Identity Settings ====================";
  extern int       ExpertID=127792141;            // Magic number: for identifying an EA's orders
  extern bool      TimeSpecific=false;            // If true, Time frames are considered in determining
                                                  // whether an order belongs to the EA or not
                                                  
                                                  
                                                  
         string    ExpertName="www.imt4.com";    // Expert name: for aesthetic purposes
  int BuySellSig=-1; //买卖信号
  datetime lastTradeTime = 0;
  //+------------------------------------------------------------------+
  //| expert initialization function                                   |
  //+------------------------------------------------------------------+
  int init()
    {
     Comment(ExpertName + " is waiting for the next tick to begin.");
     return(0);
    }
  //+------------------------------------------------------------------+
  //| expert deinitialization function                                 |
  //+------------------------------------------------------------------+
  int deinit()
    {
     return(0);
    }
  //+------------------------------------------------------------------+
  //| expert start function                                            |
  //+------------------------------------------------------------------+
  int start()
    {
    手数加倍计算();
     Comment(ExpertName + " has started.");
     int buyOrders=0, sellOrders=0, buyPending=0, sellPending=0;
     checkOrderStatus(buyOrders, sellOrders, buyPending, sellPending);
     int instantOrders = buyOrders + sellOrders;
     int pendingOrders = buyPending + sellPending;
     int allOrders     = instantOrders + pendingOrders;
     advancedStopManager(instantOrders);
  //+------------------------------------------------------------------+
  //| variable and indicator declaration                               |
  //+------------------------------------------------------------------+
     if (FastType3)
        FastType=0;
     if (FastApplication6)
        FastType=0;
     if (SlowType3)
        SlowType=0;
     if (SlowApplication6)
        SlowType=0;
        
     
  BuySellSig=BuyorSell();
  //Print(BuySellSig);
  //+------------------------------------------------------------------+
  //| close existing orders under apprpriate conditions                |
  //+------------------------------------------------------------------+
     if (DisableClosingOrders==false && allOrders>0)  {
  //+------------------------------------------------------------------+
  //+------------------------------------------------------------------+
     if (sellOrders==1)
        if (BuySellSig==0)
           closeSellOrder();
     if (buyOrders==1)
        if (BuySellSig==1)
           closeBuyOrder();
      
        
  //+------------------------------------------------------------------+
  //+------------------------------------------------------------------+
        }
  //+------------------------------------------------------------------+
  //| create new orders                                                |
  //+------------------------------------------------------------------+
     if (newOrderPrevention(allOrders) == false && Time[0] != lastTradeTime)  {
  //+------------------------------------------------------------------+
  //+------------------------------------------------------------------+
     if (buyOrders==0)
        if (BuySellSig==0)
        {
           lastTradeTime = Time[0];
           sendBuyOrder();
        }
     if (sellOrders==0)
        if (BuySellSig==1)
        {
           lastTradeTime = Time[0];
           sendSellOrder();
        }
  //+------------------------------------------------------------------+
  //+------------------------------------------------------------------+
        }
     return(0);
    }
   
  //+------------------------------------------------------------------+
  //| middle-man modules                                               |
  //+------------------------------------------------------------------+
  void sendBuyOrder() // Standard Version 1.71
  { versatileOrderTaker(1, Ask); }
     
  //+------------------------------------------------------------------+
  void sendSellOrder() // Standard Version 1.71
  { versatileOrderTaker(2, Bid); }
  //+------------------------------------------------------------------+
  void closeSellOrder() // Standard Version 1.71
  { versatileOrderCloser(2); }
  //+------------------------------------------------------------------+
  void closeBuyOrder() // Standard Version 1.71
  { versatileOrderCloser(1); }
  //+------------------------------------------------------------------+
  //+------------------------------------------------------------------+
  //| modules and functions                                            |
  //+------------------------------------------------------------------+
  void trailingStopManager() // Standard Version 1.71
  {
     
     int cnt, total = OrdersTotal();
     for(cnt=0;cnt0 && orderBelongsToMe())
        {
           if (OrderType()==OP_BUY)
           {
              if ((Bid-OrderOpenPr*()>

据说是比较好的mt4样本

据说是比较好的mt4样本
oint*TrailingStop) || onlyTrailAfterProfit==false)
              {
                 if (OrderStopLoss()Point*TrailingStop) || onlyTrailAfterProfit==false)
              {
                 if ((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    OrderModify(OrderTicket(),OrderOpenPr*(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
              }
           }
        }  
     }
  }
  //+------------------------------------------------------------------+
  void breakEvenManager() // Standard Version 1.71
  {
     for(int cnt=0;cnt0 && orderBelongsToMe())
        {
           if (OrderType()==OP_BUY)
           {
              if (Bid-OrderOpenPr*()>=Point*BreakEvenAtProfit)
              {
                 if (OrderStopLoss()!=OrderOpenPr*() + BreakEvenShift*Point)
                    OrderModify(OrderTicket(),OrderOpenPr*(),OrderOpenPr*()+ BreakEvenShift*Point,OrderTakeProfit(),0,Green);
              }
           }
           else if (OrderType()==OP_SELL)
           {
              if (OrderOpenPr*()-Ask>=Point*BreakEvenAtProfit)
              {
                 if (OrderStopLoss()!=OrderOpenPr*() - BreakEvenShift*Point)
                    OrderModify(OrderTicket(),OrderOpenPr*(),OrderOpenPr*()- BreakEvenShift*Point,OrderTakeProfit(),0,Red);
              }
           }
        }
     }
  }
     
  //+------------------------------------------------------------------+
  // Standard Version 1.71
  void checkOrderStatus(int& buyOrders,int& sellOrders,int& buyPending, int& sellPending)
  {
     for(int cnt=OrdersTotal();cnt>=0;cnt--)
     {
        OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
        if ( orderBelongsToMe() )
        {  
           if (OrderType()==OP_BUY)
              {buyOrders++;}
           else if (OrderType()==OP_SELL)
              {sellOrders++;}
           else if (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)
              {buyPending++;}
           else if (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)
              {sellPending++;}
        }
     }
  }
  //+------------------------------------------------------------------+
  void advancedStopManager(int instantOrders) // Standard Version 1.71
  {
      
     if (instantOrders>=1)
     {
        if (BreakEvenAtProfit>0)
           breakEvenManager();
        if (TrailingStop>0)
           trailingStopManager();
      }
  }
  //+------------------------------------------------------------------+
  bool orderBelongsToMe() // Standard Version 1.71
  {
     if (OrderSymbol()==Symbol() && OrderMagicNumber()==**MagicGenerator() )
         return (true);
     else
        return (false);
  }
  //+------------------------------------------------------------------+
  int **MagicGenerator() // Standard Version 1.71
  {
     int truMagic;
     
     if (TimeSpecific)
        truMagic = ExpertID + (Period()*17 + 203);
     else
        truMagic = ExpertID;      
     return (truMagic);
  }
  //+------------------------------------------------------------------+
  string commentString() // Standard Version 1.71
  {
     string tfString, fullComment;
     
     switch (Period())  
     {   
        case 1:      tfString = "1 Min";    break;
        case 5:      tfString = "5 Min";    break;
        case 15:     tfString = "15 Min";   break;  
        case 30:     tfString = "30 Min";   break;  
        case 60:     tfString = "1 Hour";   break;  
        case 240:    tfString = "4 Hour";   break;  
        case 1440:   tfString = "Daily";    break;  
        case 10080:  tfString = "Weekly";   break;  
        case 40320:  tfString = "Monthly";  break;  
        default:     tfString = "Unknown";   
     }
     fullComment=StringConcatenate(ExpertName, ": ", tfString);
     return (fullComment);
  }
  
  未完,见2楼
打赏