Нужна помощь

 

Помогите исправить две ошибки.

Выдаёт:

')' - unexpected end of program    Test advisor on TMA_Fair.mq4    143    9
'{' - unbalanced parentheses    Test advisor on TMA_Fair.mq4    53    2


//+------------------------------------------------------------------+

//|                                     Test advisor on TMA_Fair.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//------------------параметры советника -------------------------------
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;

//------- Внешние параметры индикатора -------------------------------
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;
//------- Внешние параметры индикатора -------------------------------
double PRICE_HIGH,PRICE_LOW,SL,TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
 {
   PRICE_HIGH= iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
   PRICE_LOW = iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

   if(CountSell()==0 && Bid>=PRICE_HIGH)
     {
      ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,"TMA_Fair робот",Magic,0,Red);
      if(ticket>0)
      {
         SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
         TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на продажу!");
        }
        }

//+------------------------------------------------------------------+
   if(CountBuy()==0 && Ask<=PRICE_LOW)
     {
      ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,0,0,"TMA_Fair робот",Magic,0,Blue);
      if(ticket>0)
        {
         TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
         SL = NormalizeDouble(Ask-StopLoss*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на покупку!");
        }
     }
   )
//+------------------------------------------------------------------+
   if(Ask<=PRICE_LOW && CountSell>0)
     {
      for(int i=OrdersTotal()-1; i>=0; 1--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Black))
                  Print("Ошибка открытия ордера на продажу!");
           }
        }
     }
 
//+------------------------------------------------------------------+

   if(Bid>=PRICE_HIGH && CountBuy>0)
     {
      for(int i=OrdersTotal()-1; i>=0; 1--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black))
                  Print("Ошибка открытия ордера на покупку !");
           }
        }
     }
//+------------------------------------------------------------------+
   int CountSell()
     {
      int count=0;

      for(int trade=OrdersTotal()-1; trade>=0; trade--)
        {
         if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
               count++;
           }
        }
      return(count);
     }
//+------------------------------------------------------------------+
   int CountBuy()
     {
      int count=0;

      for(int trade=OrdersTotal()-1; trade>=0; trade--)
        {
         if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
               count++;
           }
        }
      return(count);
        }
//+------------------------------------------------------------------+
Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 

Перевести ошибки  не пробовали ?

У вас не соблюден баланс скобок, из-за этого компилятор думает, что еще что-то должно быть дальше. О чем вам и сообщает.

Найдите фигурную скобку, которая закрывает функцию OnTick() - я не пойму, где она должна быть.

Реально мелких ошибок в советнике больше, когда вы поправите скобки - они вылезут.
 
 
И код выкладывайте в нормальном виде, я в таком даже смотреть не стал. В редакторе вверху есть кнопка SRC, нажмите ее и в окне копируйте код, будет красиво.
 
Игорь:

Помогите исправить две ошибки.

Выдаёт:

')' - unexpected end of program    Test advisor on TMA_Fair.mq4    143    9
'{' - unbalanced parentheses    Test advisor on TMA_Fair.mq4    53    2


//+------------------------------------------------------------------+

//|                                     Test advisor on TMA_Fair.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//------------------параметры советника -------------------------------
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;

//------- Внешние параметры индикатора -------------------------------
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;
//------- Внешние параметры индикатора -------------------------------
double PRICE_HIGH,PRICE_LOW,SL,TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
 {
   PRICE_HIGH= iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
   PRICE_LOW = iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

   if(CountSell()==0 && Bid>=PRICE_HIGH)
     {
      ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,"TMA_Fair робот",Magic,0,Red);
      if(ticket>0)
      {
         SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
         TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на продажу!");
        }
        }

//+------------------------------------------------------------------+
   if(CountBuy()==0 && Ask<=PRICE_LOW)
     {
      ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,0,0,"TMA_Fair робот",Magic,0,Blue);
      if(ticket>0)
        {
         TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
         SL = NormalizeDouble(Ask-StopLoss*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на покупку!");
        }
     }
   )
//+------------------------------------------------------------------+
   if(Ask<=PRICE_LOW && CountSell>0)
     {
      for(int i=OrdersTotal()-1; i>=0; 1--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Black))
                  Print("Ошибка открытия ордера на продажу!");
           }
        }
     }
 
//+------------------------------------------------------------------+

   if(Bid>=PRICE_HIGH && CountBuy>0)
     {
      for(int i=OrdersTotal()-1; i>=0; 1--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black))
                  Print("Ошибка открытия ордера на покупку !");
           }
        }
     }
//+------------------------------------------------------------------+
   int CountSell()
     {
      int count=0;

      for(int trade=OrdersTotal()-1; trade>=0; trade--)
        {
         if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
               count++;
           }
        }
      return(count);
     }
//+------------------------------------------------------------------+
   int CountBuy()
     {
      int count=0;

      for(int trade=OrdersTotal()-1; trade>=0; trade--)
        {
         if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
               count++;
           }
        }
      return(count);
        }
//+------------------------------------------------------------------+

Закрытие фунцкии void OnTick() происходило  после оператора условий if(CountBuy(), если я ставлю скобки после фунцкии void OnTick(),

то у меня Выходят ошибки при компилировании :

'if' - expressions are not allowed on a global scope    Test advisor on TMA_Fair.mq4    72    4
'if' - expressions are not allowed on a global scope    Test advisor on TMA_Fair.mq4    86    4
'if' - expressions are not allowed on a global scope    Test advisor on TMA_Fair.mq4    101    4

Я понимаю, что ошибка в операторе условий, но исправить не могу (я только начинаю учить язык MQL4)

 
Игорь:
 

Я понимаю, что ошибка в операторе условий, но исправить не могу (я только начинаю учить язык MQL4)

Да нет. После того, как вы поставили скобки после условия - у вас получились три if-оператора вне функций. О чем вам и сообщили.

У вас кроме ошибки в операторе условий - главная ошибка - баланс скобок.

Функция OnTick() должна открываться скобкой, и закрываться ответной. И после этой ответной скобки - должны стоять только описание функций расчета позиций - каждая также открываться скобкой, и закрываться ответной. В вашем же случае - операторы if - непонятно к чему относятся.

Рекомендую сперва все заключить в комментарии (/*.... */ ) -от начала и до конца, и сперва только расставить скобки. Чтобы компилировалось в этом случае без ошибок - с пустыми функциями. А потом, постепенно раскомментаривать строки, проверяя, как будет проходить компиляция.

Вобще, рекомендую поглядеть на код, и по КАЖДОЙ строке задать самому себе вопрос - "зачем эта строка здесь, что она делает".
 
Игорь:

Закрытие фунцкии void OnTick() происходило  после оператора условий if(CountBuy(), если я ставлю скобки после фунцкии void OnTick(),

то у меня Выходят ошибки при компилировании :

'if' - expressions are not allowed on a global scope    Test advisor on TMA_Fair.mq4    72    4
'if' - expressions are not allowed on a global scope    Test advisor on TMA_Fair.mq4    86    4
'if' - expressions are not allowed on a global scope    Test advisor on TMA_Fair.mq4    101    4

Я понимаю, что ошибка в операторе условий, но исправить не могу (я только начинаю учить язык MQL4)


void OnTick()
  {
   PRICE_HIGH= iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
   PRICE_LOW = iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

   if(CountSell()==0 && Bid>=PRICE_HIGH)
     {
      ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,"TMA_Fair робот",Magic,0,Red);
      if(ticket>0)
        {
         SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
         TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на продажу!");
        }
     }

//+------------------------------------------------------------------+
   if(CountBuy()==0 && Ask<=PRICE_LOW)
     {
      ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,0,0,"TMA_Fair робот",Magic,0,Blue);
      if(ticket>0)
        {
         TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
         SL = NormalizeDouble(Ask-StopLoss*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на покупку!");
        }
     }
//+------------------------------------------------------------------+
   if(Ask<=PRICE_LOW && CountSell()>0)
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Black))
                  Print("Ошибка открытия ордера на продажу!");
           }
        }
     }
//+------------------------------------------------------------------+

   if(Bid>=PRICE_HIGH && CountBuy()>0)
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black))
                  Print("Ошибка открытия ордера на покупку !");
           }
        }
     }
  }
//+------------------------------------------------------------------+
int CountSell()
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
George Merts:

Да нет. После того, как вы поставили скобки после условия - у вас получились три if-оператора вне функций. О чем вам и сообщили.

У вас кроме ошибки в операторе условий - главная ошибка - баланс скобок.

Функция OnTick() должна открываться скобкой, и закрываться ответной. И после этой ответной скобки - должны стоять только описание функций расчета позиций - каждая также открываться скобкой, и закрываться ответной. В вашем же случае - операторы if - непонятно к чему относятся.

Рекомендую сперва все заключить в комментарии (/*.... */ ) -от начала и до конца, и сперва только расставить скобки. Чтобы компилировалось в этом случае без ошибок - с пустыми функциями. А потом, постепенно раскомментаривать строки, проверяя, как будет проходить компиляция.

Вобще, рекомендую поглядеть на код, и по КАЖДОЙ строке задать самому себе вопрос - "зачем эта строка здесь, что она делаСпасибо з
George Merts:

Да нет. После того, как вы поставили скобки после условия - у вас получились три if-оператора вне функций. О чем вам и сообщили.

У вас кроме ошибки в операторе условий - главная ошибка - баланс скобок.

Функция OnTick() должна открываться скобкой, и закрываться ответной. И после этой ответной скобки - должны стоять только описание функций расчета позиций - каждая также открываться скобкой, и закрываться ответной. В вашем же случае - операторы if - непонятно к чему относятся.

Рекомендую сперва все заключить в комментарии (/*.... */ ) -от начала и до конца, и сперва только расставить скобки. Чтобы компилировалось в этом случае без ошибок - с пустыми функциями. А потом, постепенно раскомментаривать строки, проверяя, как будет проходить компиляция.

Вобще, рекомендую поглядеть на код, и по КАЖДОЙ строке задать самому себе вопрос - "зачем эта строка здесь, что она делает".


 
Игорь:
Спасибо за всем помощь
 

Закоментил всё, оставил только две пары скобок

//int OnInit()
  {
//   if(Digits==3 || Digits==5)
     {
      //      TakeProfit *=10;
      //      StopLoss   *=10;
      //      Slippage   *=10;
     }
//   return(INIT_SUCCEEDED);
  }

При компиляции вышла ошибка: ')' - not all control paths return a value    Test advisor on TMA_Fair.mq4    40    1

(   ')' - не все пути управления возвращают значение Советник по тестированию на TMA_Fair.mq4 40 1    )

 
Игорь:

Закоментил всё, оставил только две пары скобок

//int OnInit()
  {
//   if(Digits==3 || Digits==5)
     {
      //      TakeProfit *=10;
      //      StopLoss   *=10;
      //      Slippage   *=10;
     }
//   return(INIT_SUCCEEDED);
  }

При компиляции вышла ошибка: ')' - not all control paths return a value    Test advisor on TMA_Fair.mq4    40    1

(   ')' - не все пути управления возвращают значение Советник по тестированию на TMA_Fair.mq4 40 1    )

Попробуйте заменить int на void или раскомментировать return(INIT_SUCCEEDED);

А вообще то прежде, чем писать программы следует определить цель: 1) научиться программировать - тогда надо начинать с простейших программ. или 2) заработать - тогда это в другом мес

 
Игорь:

//+------------------------------------------------------------------+

//|                                     Test advisor on TMA_Fair.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//------------------параметры советника -------------------------------
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;

//------- Внешние параметры индикатора -------------------------------
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;
//------- Внешние параметры индикатора -------------------------------
double PRICE_HIGH,PRICE_LOW,SL,TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   PRICE_HIGH= iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,1,0);
   PRICE_LOW = iCustom(NULL,0,"TMA_Fair",TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,2,0);

   if(CountSell()==0 && Bid>=PRICE_HIGH)
     {
      ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,"TMA_Fair робот",Magic,0,Red);
      if(ticket>0)
        {
         SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
         TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на продажу!");
        }
     }

//+------------------------------------------------------------------+
   if(CountBuy()==0 && Ask<=PRICE_LOW)
     {
      ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,0,0,"TMA_Fair робот",Magic,0,Blue);
      if(ticket>0)
        {
         TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
         SL = NormalizeDouble(Ask-StopLoss*Point, Digits);

         if(OrderSelect(ticket,SELECT_BY_TICKET))
            if(!OrderModify(ticket,OrderOpenPrice(),SL,TP,0))
               Print("Ошибка модификации ордера на покупку!");
        }
     }
//+------------------------------------------------------------------+
   if(Ask<=PRICE_LOW && CountSell()>0)
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Black))
                  Print("Ошибка открытия ордера на продажу!");
           }
        }
     }

//+------------------------------------------------------------------+

   if(Bid>=PRICE_HIGH && CountBuy()>0)
     {
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black))
                  Print("Ошибка открытия ордера на покупку !");
           }
        }
     }
  }
//+------------------------------------------------------------------+
int CountSell()
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
Причина обращения: