Новая версия платформы MetaTrader 5 build 5800: Улучшенный торговый диалог и удобная работа с CSV в MetaEditor - страница 26

 

По хелпам:

  • добавили масштабирование текста
  • добавили навигацию, включая  Alt+ стрелки
  • добавили печать
  • добавили поиск на странице
  • добавили закрытие окна хелпа по Esc

 

build 5800 (17 Apr 2026)

Беру пример из Документации:

template<typename T>
void MatrixArange(matrix<T> &mat,T value=0.0,T step=1.0)
  {
   for(ulong i=0; i<mat.Rows(); i++)
     {
      for(ulong j=0; j<mat.Cols(); j++,value+=step)
         mat[i][j]=value;
     }
  }
template<typename T>
void VectorArange(vector<T> &vec,T value=0.0,T step=1.0)
  {
   for(ulong i=0; i<vec.Size(); i++,value+=step)
      vec[i]=value;
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  int size_m=3, size_k=4;
  matrix  m(size_m,size_k,MatrixArange,-2.,0.1); // сначала создаётся неинициализированная матрица размером size_m x size_k, 
  Print("matrix m \n",m);                        // затем вызывается функция MatrixArange, с параметрами, перечисленными при инициализации
  matrixf m_float(5,5,MatrixArange,-2.f,0.1f);   // после создания матрицы типа float вызывается функция MatrixArange
  Print("matrix m_float \n",m_float);
  vector  v(size_k,VectorArange,-10.0);          // после создания вектора вызывается VectorArange с одним параметром, второй параметр - по умолчанию
  Print("vector v \n",v);  
  /*
   matrix m 
   [[-2,-1.9,-1.8,-1.7]
    [-1.6,-1.5,-1.399999999999999,-1.299999999999999]
    [-1.199999999999999,-1.099999999999999,-0.9999999999999992,-0.8999999999999992]]
   matrix m_float 
   [[-2,-1.9,-1.8,-1.6999999,-1.5999999]
    [-1.4999999,-1.3999999,-1.2999998,-1.1999998,-1.0999998]
    [-0.99999976,-0.89999974,-0.79999971,-0.69999969,-0.59999967]
    [-0.49999967,-0.39999968,-0.29999968,-0.19999969,-0.099999689]
    [3.1292439e-07,0.10000031,0.20000032,0.30000031,0.4000003]]
   vector v 
   [-10,-9,-8,-7]
  */ 
  }

и получаю при компиляции:

cannot apply template, did you forget template specialization?  test_doc_templates.mq5  31      27
cannot apply template, did you forget template specialization?  test_doc_templates.mq5  33      23
wrong parameters count, 2 passed, but 3 requires                test_doc_templates.mq5  35      20
   void VectorArange(vector&,T,T)                               test_doc_templates.mq5  19      6
3 errors, 0 warnings            3       0

Видимо, компилятор стал построже с шаблонами. Но это ладно... Почему тогда не принимает параметр по умолчанию?


Вот такой вариант работает.

template<typename T>
void MatrixArange(matrix<T> &mat, T value = 0.0, T step = 1.0)
   {
   for(ulong i = 0; i < mat.Rows(); i++)
      {
      for(ulong j = 0; j < mat.Cols(); j++, value += step)
         mat[i][j] = value;
      }
   }
template<typename T>
void VectorArange(vector<T> &vec, T value = 0.0, T step = 1.0)
   {
   for(ulong i = 0; i < vec.Size(); i++, value += step)
      vec[i] = value;
   }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
   {
//---
   int size_m = 3, size_k = 4;
   matrix m(size_m, size_k, MatrixArange<double>, -2., 0.1); // сначала создаётся неинициализированная матрица размером size_m x size_k,   
   Print("matrix m \n", m);                       // затем вызывается функция MatrixArange, с параметрами, перечисленными при инициализации
   matrixf m_float(5, 5, MatrixArange<float>, -2.f, 0.1f); // после создания матрицы типа float вызывается функция MatrixArange
   Print("matrix m_float \n", m_float);
   vector  v(size_k, VectorArange<double>, -10.0, 1.0);        // после создания вектора вызывается VectorArange с одним параметром, второй параметр - по умолчанию
   Print("vector v \n", v);
   /*
    matrix m
    [[-2,-1.9,-1.8,-1.7]
     [-1.6,-1.5,-1.399999999999999,-1.299999999999999]
     [-1.199999999999999,-1.099999999999999,-0.9999999999999992,-0.8999999999999992]]
    matrix m_float
    [[-2,-1.9,-1.8,-1.6999999,-1.5999999]
     [-1.4999999,-1.3999999,-1.2999998,-1.1999998,-1.0999998]
     [-0.99999976,-0.89999974,-0.79999971,-0.69999969,-0.59999967]
     [-0.49999967,-0.39999968,-0.29999968,-0.19999969,-0.099999689]
     [3.1292439e-07,0.10000031,0.20000032,0.30000031,0.4000003]]
    vector v
    [-10,-9,-8,-7]
   */
   }
Документация по MQL5: Init / Методы матриц и векторов
Документация по MQL5: Init / Методы матриц и векторов
  • www.mql5.com
Инициализирует матрицу или вектор. Параметры rows [in]  Количество строк. cols [in]  Количество столбцов. func_name [in]  ...
 

как-то спрашивал : неплохо-бы в alglib добавить варианты с const &InterpolantShell . Без этого многое нельзя использовать в const-методах классов. Внутреннее состояние не меняется, но const нет, значит нельзя

или alglib совсем заброшен и надо потихоньку от него уходить?

 
Sergey Golubev #:
Обычно авторизуются не в этом месте (не в чатах, так как были посты о том, что в чатах иногда не получается), 
а в Tools - Options - Community

После обновления при запуске терминала МТ5 у меня перестал работать автоматический вход. До обновления такой проблемы не было. Про Tools - Options - Community мне известно. )

С уважением, Владимир. 

 

Alexey Viktorov #:

Володя, проверь тут

Привет, Алексей! ОК. Завтра посмотрю, т.к. сейчас нет возможности.

С уважением, Владимир.

 

если в параметрах сервиса (по крайней мере сервиса) первым стоит enum , то при перекомпиляции он часто(не всегда причём) сбрасывается.

enum ENUM_MY_PARAM = {
  PARAM_1 = 1,
  PARAM_2 = 100,
  PARAM_3 = 300
};
input ENUM_MY_PARAM MY_PARAM = PARAM_1;
void OnStart() {
  .....
}

Без изменение самого enum. Есть подозрение что как-то связано с обновлением терминала, то есть компилятор/терминал обновился + сервис пересобран = параметр сброшен. Если экземпляр сервиса в этот момент был выключен, то вероятность сброса параметра выше, почти гарантированно.

Ближе лоцировать сложно, блуждающий баг и пересекается с обновлениями 

 

меню Custom в символах 


способно затормозить, полностью завесить и даже скрашить терминал

достигается примерно следующими действиями: создать кастомный инструмент с путём Custom/Group1/name , налить тики+бары , через какое-то время удалить оставив историю.

Потом снова создать.  И вот видимо тут терминалу плохеет: создаётся инструмент у которого уже есть история. Сам по себе терминал потормозит и продолжит как не бывало, а менюшка больше не работает.

Перезапуск терминала не помогает.