首页 > 解决方案 > 一次只有一个 EA 工作。只要有交易,其他的就不会开放

问题描述

Orderselect 用于控制 EA 开启的交易数量。我没有使用 OrdersTotal,因为它会产生阻塞其他 EA 的问题。现在看来 OrdersSelect 也做了同样的事情。我需要每个 EA 只打开两个交易并允许其他 EA 也打开它们的交易。

  void OnTick()
    {
       double movingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,1);     
       double movingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,0);       
       double lastmovingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,1);          
       double movingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,1);   
       double movingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,1);    
    for(int b=0;b<OrdersTotal();b++)
   {
    if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES) == true)
      { 
      if (OrderMagicNumber() != MagicB)
        {
        if((lastmovingAverageFB<lastmovingAverageSB) && (movingAverageFB > movingAverageSB)) 
          {
           b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB1*_Point,NULL,128,0,Green);
           b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB2*_Point,NULL,128,0,Green);
          }
         else if((lastmovingAverageFS>lastmovingAverageSS)&&(movingAverageFS<movingAverageSS))
        {
           b = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS1*_Point,NULL,128,0,Red);
           b = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS2*_Point,NULL,128,0,Red);      
        } 
        }
       }   
    }

标签: mql4

解决方案


推荐阅读