使用MQL4限制每对交易

时间:2018-06-28 02:23:29

标签: logic mql4 algorithmic-trading metatrader4 mql5

我想在MQL4中使用我的EA来限制MT4中的数量或交易/订单。我希望每个货币对的限制不是全部货币对,例如:如果条件/逻辑匹配,那么将在连接有EA的每种货币上执行2笔交易。

这是我尝试过的代码,但是它限制了连接了EA的所有货币对的交易。

    //+------------------------------------------------------------------+
//|                                                         psar.mq4 |
//|                                                              MSZ |
//|                                                             nill |
//+------------------------------------------------------------------+
#property copyright "MSZ"
#property link      "nill"
#property version   "1.00"
#property strict
#define MAX_ORDERS 5
input int TP=10;
input int SL=30;
input double lot=1;
void OnTick()
  {
//---
   double SAR;
static int Ticket=0;
SAR=iSAR(Symbol(),0,0.02,0.2,0);
if(OrdersTotal()<=MAX_ORDERS)
{
    if(SAR>Open[0])
    {
    Ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,10,Ask+SL*Point,Ask-TP*Point,"Done By MSZ.Inc");
         if(Ticket<0)
         {
         Alert("Error In Opening Order");
         }
         else
         {
      Alert("Sell Order Executed");
     }
      //Alert("Its Sell Signal");

    }

   else if(SAR<Open[0])
    {
     Ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,10,Bid-SL*Point,Bid+TP*Point,"Done By MSZ.Inc");
         if(Ticket<0)
         {
         Alert("Error In Opening Order");
         }
         else
         {
      Alert("Buy Order Executed");
     }
    }
    }
    else
    {
    Alert("Orders Limits reached");
    }
  }
//+------------------------------------------------------------------+

我希望它在附有EA的每个图表上执行5个订单。

2 个答案:

答案 0 :(得分:0)

**if(OrdersTotal()<=MAX_ORDERS)**

由于=符号,这最多可以发送6笔交易。它还将在满足<=条件之前随时进行买卖交易。澄清一下,您是想对冲吗?您的 MAX_ORDERS 被定义为预处理程序指令。 input int MAX_ORDERS =5;才能更改此值。

答案 1 :(得分:0)

#define MAX_ORDERS 5 在 ea 脚本开头输入 this 后是否需要在脚本后面添加 **if(OrdersTotal()<=MAX_ORDERS