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 |//+------------------------------------------------------------------+voidOnStart()
{
//---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 вызывается функция MatrixArangePrint("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 3127
cannot apply template, did you forget template specialization? test_doc_templates.mq5 3323
wrong parameters count, 2 passed, but 3 requires test_doc_templates.mq5 3520void VectorArange(vector&,T,T) test_doc_templates.mq5 1963 errors, 0 warnings 30
Видимо, компилятор стал построже с шаблонами. Но это ладно... Почему тогда не принимаетпараметр по умолчанию?
Вот такой вариант работает.
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 |//+------------------------------------------------------------------+voidOnStart()
{
//---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 вызывается функция MatrixArangePrint("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]
*/
}
как-то спрашивал : неплохо-бы в alglib добавить варианты с const &InterpolantShell . Без этого многое нельзя использовать в const-методах классов. Внутреннее состояние не меняется, но const нет, значит нельзя
или alglib совсем заброшен и надо потихоньку от него уходить?
Sergey Golubev #: Обычно авторизуются не в этом месте (не в чатах, так как были посты о том, что в чатах иногда не получается), а в Tools - Options - Community
После обновления при запуске терминала МТ5 у меня перестал работать автоматический вход. До обновления такой проблемы не было. Про Tools - Options - Community мне известно. )
Без изменение самого enum. Есть подозрение что как-то связано с обновлением терминала, то есть компилятор/терминал обновился + сервис пересобран = параметр сброшен. Если экземпляр сервиса в этот момент был выключен, то вероятность сброса параметра выше, почти гарантированно.
Ближе лоцировать сложно, блуждающий баг и пересекается с обновлениями
способно затормозить, полностью завесить и даже скрашить терминал
достигается примерно следующими действиями: создать кастомный инструмент с путём Custom/Group1/name , налить тики+бары , через какое-то время удалить оставив историю.
Потом снова создать. И вот видимо тут терминалу плохеет: создаётся инструмент у которого уже есть история. Сам по себе терминал потормозит и продолжит как не бывало, а менюшка больше не работает.
2) При переключении между счетами : если подключаться к отличному от текущего счету из панели "Навигатор", то в окне "Подключение" указывается верный сохраненный ранее соответствующий сервер.
Но если выполнять подключение через "Логин" в трее программы, то при выборе другого счета в окне "Подключение" в строке сервера остается указанным текущий, а не соответствующий выбранному счету (хотя пароль подставляется верный).
Быстрым логином между счетами через трей терминала пользоваться стало совершенно невозможно.
Это очень не удобно и не единообразно. Прошу Вас исправить эту досадную ошибку.
MetaTrader 5 x64 build 5836 started for MetaQuotes Ltd.
Windows 11 build 26200, 12 x AMD Ryzen 5 5500U with Radeon, AVX2, 10 / 15 Gb memory, 155 / 475 Gb disk, UAC, GMT+10
Очень досадно.
Проблема, исправленная буквально несколько билдов ранее снова мешает работе.
Очень прошу обратить внимание разработчиков.
Словно какой-то вредитель вкрался в команду метаквотов, возвращающий исправленные баги ;-) (оффтоп)
По хелпам:
build 5800 (17 Apr 2026)
Беру пример из Документации:
и получаю при компиляции:
Видимо, компилятор стал построже с шаблонами. Но это ладно... Почему тогда не принимает параметр по умолчанию?
Вот такой вариант работает.
как-то спрашивал : неплохо-бы в alglib добавить варианты с const &InterpolantShell . Без этого многое нельзя использовать в const-методах классов. Внутреннее состояние не меняется, но const нет, значит нельзя
или alglib совсем заброшен и надо потихоньку от него уходить?
Обычно авторизуются не в этом месте (не в чатах, так как были посты о том, что в чатах иногда не получается),
а в Tools - Options - Community
После обновления при запуске терминала МТ5 у меня перестал работать автоматический вход. До обновления такой проблемы не было. Про Tools - Options - Community мне известно. )
С уважением, Владимир.
Alexey Viktorov #:
Володя, проверь тут
Привет, Алексей! ОК. Завтра посмотрю, т.к. сейчас нет возможности.
С уважением, Владимир.
если в параметрах сервиса (по крайней мере сервиса) первым стоит enum , то при перекомпиляции он часто(не всегда причём) сбрасывается.
Без изменение самого enum. Есть подозрение что как-то связано с обновлением терминала, то есть компилятор/терминал обновился + сервис пересобран = параметр сброшен. Если экземпляр сервиса в этот момент был выключен, то вероятность сброса параметра выше, почти гарантированно.
Ближе лоцировать сложно, блуждающий баг и пересекается с обновлениями
меню Custom в символах
способно затормозить, полностью завесить и даже скрашить терминал
достигается примерно следующими действиями: создать кастомный инструмент с путём Custom/Group1/name , налить тики+бары , через какое-то время удалить оставив историю.
Потом снова создать. И вот видимо тут терминалу плохеет: создаётся инструмент у которого уже есть история. Сам по себе терминал потормозит и продолжит как не бывало, а менюшка больше не работает.
Перезапуск терминала не помогает.
1) ...
2) При переключении между счетами : если подключаться к отличному от текущего счету из панели "Навигатор", то в окне "Подключение" указывается верный сохраненный ранее соответствующий сервер.
Но если выполнять подключение через "Логин" в трее программы, то при выборе другого счета в окне "Подключение" в строке сервера остается указанным текущий, а не соответствующий выбранному счету (хотя пароль подставляется верный).
Быстрым логином между счетами через трей терминала пользоваться стало совершенно невозможно.
Это очень не удобно и не единообразно. Прошу Вас исправить эту досадную ошибку.
Очень досадно.
Проблема, исправленная буквально несколько билдов ранее снова мешает работе.
Очень прошу обратить внимание разработчиков.
Словно какой-то вредитель вкрался в команду метаквотов, возвращающий исправленные баги ;-) (оффтоп)