Почему перестал компилироваться скрипт или что изменилось в функции MessageBox()

 
Несколько месяцев назад написал и пользуюсь им простой и удобный скрипт для вывода параметров контракта по текущему инструменту в окно.
Не надо лезть в параметры символа, кроме того, можно открыть несколько окон по разным инструментам либо по одному у разных дилеров и сравнить. Вот его код:
//+------------------------------------------------------------------+
//|                                                        Param.mq4 |
//|                                                          Valmars |
//|                                                    valmars@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Valmars"
#property link      "valmars@bk.ru"
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
  MessageBox("Размер контракта в базовой валюте инструмента = " + DoubleToStr(MarketInfo(Symbol(),MODE_LOTSIZE),0) + "\n" +
             "Спрэд в пунктах = " + DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD),0)+  "\n" +
               "Уровень стоп-лосса/тейк-профита в пунктах = " + DoubleToStr(MarketInfo(Symbol(),MODE_STOPLEVEL),0) +  "\n" + 
             "Размер пункта в валюте котировки = " + DoubleToStr(Point,Digits) +  "\n" + 
               "Минимальный шаг изменения цены  = "  + DoubleToStr((MarketInfo(Symbol(),MODE_TICKSIZE)),Digits)+  "\n" + 
               "Размер минимального изменения цены  в валюте котировки = " + DoubleToStr(MarketInfo( Symbol(),MODE_TICKVALUE),2) + "\n" +
               "Размер свопа для длинных позиций = " + DoubleToStr(MarketInfo( Symbol(),MODE_SWAPLONG),2) + "\n" +
               "Размер свопа для коротких позиций = " + DoubleToStr(MarketInfo( Symbol(),MODE_SWAPSHORT),2)
                   , "Параметры инструмента  " + Symbol()+ "  для стандартного лота",);  
 
   return(0);
  }
//+------------------------------------------------------------------+

И вот сейчас решил поправить заголовок окна с "Параметры инструмента" на более точное "Параметры контракта". Меняю одно слово, компилирую и получаю ошибку: ')' - parameter expected C:\Program Files\Alpari\experts\scripts\Param_Instr. mq4 (23, 78)
Сравниваю код в двух редакторах с двух терминалов (визуально), ничего не изменилось.
Вопрос: почему код , который раньше удовлетворял компилятор, перестал его удовлетворять ?
Ранее скомпилированный код по пржнему прекрасно работает.
 
Обратите внимание на ..... лота",);
 
Уберите запятую " для стандартного лота",); :)
 
// MessageBox() example: This code works well


//+------------------------------------------------------------------+
//|                                                  !MarketInfo.mq4 |
//+------------------------------------------------------------------+
//
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
//----
 double digs = MarketInfo(Symbol(), MODE_DIGITS);
//
 string str_ans1 = 
  "Symbol: " + Symbol()
   +"; " +  "\n" + 
  "Time: " + TimeToStr(MarketInfo(Symbol(), MODE_TIME), TIME_MINUTES)
   +"; " +  "\n" + 
  "Low: " + DoubleToStr(MarketInfo(Symbol(), MODE_LOW), digs)
   + ", " +
  "High: " + DoubleToStr(MarketInfo(Symbol(), MODE_HIGH), digs)
   + ", " +
  "Bid: " + DoubleToStr(MarketInfo(Symbol(), MODE_BID), digs)
   + ", " +
  "Ask: " + DoubleToStr(MarketInfo(Symbol(), MODE_ASK), digs)
   + "; " + "\n";
//
 string str_ans2 = 
  "Point: " +  DoubleToStr(MarketInfo(Symbol(), MODE_POINT), digs)
   + ", " +
  "Digits: " +  DoubleToStr(MarketInfo(Symbol(), MODE_DIGITS), 0)
   + ", " +
  "Spread: " +  DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0)
   + ", " + 
  "Stop Level: " +  DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 0)
   + ", " +
  "Lot Size: " +  DoubleToStr(MarketInfo(Symbol(), MODE_LOTSIZE), 0)
   + "; " +  "\n" + 
  "Tick Value: " +  DoubleToStr(MarketInfo(Symbol(), MODE_TICKVALUE), digs)
   + ", " + 
  "Tick Size: " +  DoubleToStr(MarketInfo(Symbol(), MODE_TICKSIZE), digs)
   + "; " +  "\n";
//
 string str_ans3 = 
  "Swap Long: " +  DoubleToStr(MarketInfo(Symbol(), MODE_SWAPLONG), digs)
   + ", " +
  "Swap Short: " +  DoubleToStr(MarketInfo(Symbol(), MODE_SWAPSHORT), digs)
   + "; " +  "\n" +
  "Start: " + TimeToStr(MarketInfo(Symbol(), MODE_STARTING), TIME_DATE)
   + ", " + 
  "Expiry: " + TimeToStr(MarketInfo(Symbol(), MODE_EXPIRATION), TIME_DATE)
   + "; " +  "\n" +
  "Trade Allowed: " +  DoubleToStr(MarketInfo(Symbol(), MODE_TRADEALLOWED), 0);
//
 MessageBox(str_ans1 + str_ans2 + str_ans3, "MarketInfo: " + Symbol(), MB_OK);
//----
 return(0);
}
//+------------------------------------------------------------------+
 
В новой версии компилятор стал отлавливать больше ошибок. В данном случае - лишняя запятая в параметрах функции.
 
Renat писал (а):
В новой версии компилятор стал отлавливать больше ошибок. В данном случае - лишняя запятая в параметрах функции.

Извините, запятая - это не ошибка. Сначала решил проверить , не изменилось ли что-либо в определении функции. Вот оно:

int MessageBox( string text=NULL, string caption=NULL, int flags=EMPTY)

Запятая отделяет не используемый в скрипте, но подразумеваемый по-умолчанию параметр flags.
Или теперь если нет параметра, то не надо и ставить запятую перед ним. Такие параметры по-умолчанию применяются во многих функциях.
 
Это однозначная ошибка. Попробуйте сами в С/C++ или аналогичных языках.
Причина обращения: