После последнего обновления MQL5 до версии 1978 ОТ 23 января 2019 года перестали работать вызываемые булевы функции.

 

Здравствуйте.

Непонятно почему, но вызываемые булевы функции при компиляции файла выдают ошибку: syntax error: type expected   

Кто подскажет причину проблемы?

Как это устранить?

 
Valeriy Medvedev:

Здравствуйте.

Непонятно почему, но вызываемые булевы функции при компиляции файла выдают ошибку: syntax error: type expected   

Кто подскажет причину проблемы?

Как это устранить?

Коды в студию!

 

Код:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool OpenPos(const string   v_sym,
             const int      v_tip,
             const double   v_lot,
             const double   v_pr=NULL,
             const int      v_stop=NULL,
             const int      v_take=NULL,
             const int      v_ind=WRONG_VALUE,
             const string   v_comm=NULL,
             )
  {
//m_trade.SetExpertMagicNumber(Magic*1000+((v_ind!=WRONG_VALUE) ?v_ind :0));
   m_trade.SetExpertMagicNumber(Magic);
   double   op=NULL,sl=NULL,tp=NULL;
   switch(v_tip)
     {
      case 0:
         for(int i=0; i<NamTry; i++)
           {
            op=NormD(v_sym,SymbolInfoDouble(v_sym,SYMBOL_ASK));
            if(!FreeMoney(v_sym,ORDER_TYPE_BUY,op,v_lot))
               return(false);
            sl=(v_stop>NULL) ? (op-NormE(v_sym,v_stop)*SymbolInfoDouble(v_sym,SYMBOL_POINT)) : NULL;
            tp=(v_take>NULL) ? (op+NormE(v_sym,v_take)*SymbolInfoDouble(v_sym,SYMBOL_POINT)) : NULL;
            if(m_trade.Buy(NormL(v_sym,v_lot),v_sym,op,sl,tp,(v_comm==NULL) ?compos :v_comm))
               return(true);
            Sleep(100);
           }
         break;
      case 1:
         for(int i=0; i<NamTry; i++)
           {
            op=NormD(v_sym,SymbolInfoDouble(v_sym,SYMBOL_BID));
            if(!FreeMoney(v_sym,ORDER_TYPE_SELL,op,v_lot))
               return(false);
            sl=(v_stop>NULL) ? (op+NormE(v_sym,v_stop)*SymbolInfoDouble(v_sym,SYMBOL_POINT)) : NULL;
            tp=(v_take>NULL) ? (op-NormE(v_sym,v_take)*SymbolInfoDouble(v_sym,SYMBOL_POINT)) : NULL;
            if(m_trade.Sell(NormL(v_sym,v_lot),v_sym,op,sl,tp,(v_comm==NULL) ?compos :v_comm))
               return(true);
            Sleep(100);
           }
         break;
     }
   return(false);
  }

А это вызов этой функции:

RefreshRates();
            if(!OpenPos(sy[i].Name(),trend.At(i),lot.At(i),NULL,NULL,TakeProfit,index+1,"(Histo(1) = "+DoubleToString(my_ind.Histo(1),0)+")"))
              {
               //FileWrite(h,"Недостаточно средств для открытия позиции..."+open_order);
               fl_money=false;
               continue;
              }
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

После последнего обновления MQL5 до версии 1978 ОТ 23 января 2019 года перестали работать вызываемые булевы функции.

Valeriy Medvedev, 2019.01.31 11:08

Код:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool OpenPos(const string   v_sym,
             const int      v_tip,
             const double   v_lot,
             const double   v_pr=NULL,
             const int      v_stop=NULL,
             const int      v_take=NULL,
             const int      v_ind=WRONG_VALUE,
             const string   v_comm=NULL,
             )

Запятая.

 
fxsaber:

Запятая.

Спасибо. А до этого работал...
 
Valeriy Medvedev:
Спасибо. А до этого работал...

Компилятор изменился, стал более строго проверять синтаксис.

 
khorosh:

Компилятор изменился, стал более строго проверять синтаксис.

Это хорошо.
Причина обращения: