Ограничьте торговлю по каждой паре с помощью MQL4

Я хочу ограничить количество сделок/ордеров в MT4, используя мой советник на MQL4. Я хочу, чтобы лимит был на каждую пару, а не на все пары, например: если условие/логика совпадают, то будут выполнены 2 сделки в каждой валюте, к которой прикреплен советник.

Это код, который я пробовал, но он ограничивает сделки на всех парах, к которым подключен советник.

    //+------------------------------------------------------------------+
//|                                                         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");
    }
  }
//+------------------------------------------------------------------+

Я хочу, чтобы он выполнял 5 ордеров на каждом графике, к которому прикреплен советник.


person MSZ900    schedule 28.06.2018    source источник


Ответы (2)


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

Это может отправить до 6 сделок из-за знака =. Он также будет пополнять сделки на покупку или продажу в любое время, пока не будет выполнено условие <=. Чтобы уточнить, вы имеете в виду хеджирование? Ваш MAX_ORDERS определен как директива препроцессора. input int MAX_ORDERS =5;, чтобы иметь возможность изменить это значение.

person Community    schedule 14.05.2019

#define MAX_ORDERS 5 После ввода этого в начале скрипта ea необходимо добавить **if(OrdersTotal()‹=MAX_ORDERS позже в скрипте

person Ayoola Paul    schedule 08.04.2021