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

 
Renat Fatkhullin #:

Вы же сами 16 битное число сдвигали на 48 разрядов.

Тем более, что компилятор явно об этом писал.

Тут тоже путаница с битностью чисел в стандартной библиотеке. Часть в лонг и в коде все под лонг заложено, но в 3 или 4 местах перепутали и поставили инт. В итоге в 2 раза число правильно работающих элементов снижено.
https://www.mql5.com/ru/forum/1111/page3690#comment_58774387

Исправленный рабочий код CheckGroup.mqh приведен, осталось только скопировать.

Спасибо автору, который добросовестно рисовал сетку цен на графике до Terminal MetaTrader 5 build 5370.
Спасибо автору, который добросовестно рисовал сетку цен на графике до Terminal MetaTrader 5 build 5370.
  • 2025.12.17
  • www.mql5.com
взятом с базы форума здоровья и долголетия его автору , который добросовестно рисовал сетку цен на графике до Terminal MetaTrader 5 x64 build 5485 started for MetaQuotes Ltd. Новая версия платформы MetaTrader 5 build 5370 улучшения в веб-версии
 
После нажатия F1 на функции, повторное нажатие F1 может сделать - раскрытие дерева справочника?  сейчас оно раскрывает, но справка уходит в самый свой заголовок
 
Aleksei Kuznetsov # :

Тут тоже путаница с битностью чисел в стандартной библиотеке. Часть в лонг и в коде все под лонг заложено, но в 3 или 4 местах перепутали и поставили инт. В итоге в 2 раза число правильно работающих элементов снижено.
https://www.mql5.com/ru/forum/1111/page3690#comment_58774387

Исправленный рабочий код приведен, осталось только скопировать.

Об этой ошибке уже сообщалось.
 
Renat Fatkhullin #:

Положите в другое место файл, можете прямо на десктоп вместо ссылки.

Мы вычищаем рабочие каталоги от старого мусора.

Как ни странно, но до этого я и сам додумался. А если совсем честно, то туда я засунул этот файл исключительно для проверки, удалится-ли он при обновлении. А тот который для чтения лежит в другом месте.

Только вот почему Вы посчитали, что для меня этот вопрос самый главный, на него ответили а другие проигнорировали…

 
Stanislav Korotky #:

Без оптимизации такая же проблема.

Рекомендуете боевые советники компилировать на b5430? Судя по Вашим сообщениям, сейчас ситуация - авось.
 

Много работал со справкой, когда писал эту библиотеку, потому что там почти весь исходник - это копи-паста из справки.


До обновления посмотрел, как происходил алгоритм работы старого варианта справки.

  • Набираю CopyTicksRange в ME.
  • Жму F1 и появляется диалог.
  • Мне не нужен матричный вариант, поэтому выбираю второй вариант.
  • Открывается справка, делаю CTRL+C.
  • Жму ALT+TAB и делаю CTRL+V в ME.

Шагов, вроде, много, но делается за секунду-другую все.


Теперь о результате после обновления на b5812.

В ME открылось просто это.


Поэтому два вопроса.

  1. Как сделать, чтобы открывалась справка не про матричный вариант CopyTicksRange?
  2. Как через клавиатуру отключить справку, чтобы попасть в полноформатный ME? Пробовал CTRL+TAB, CTRL+F4, CTRL+W, ESC.


Сейчас пока не получается быстро написать такую же библиотеку.

Memory
Memory
  • 2026.02.12
  • www.mql5.com
Мониторинг потребления памяти.
 
Stanislav Korotky #:

Точка останова уезжает на следующую инструкцию.

Постоянно с этим сталкиваюсь. Приходится придумывать каждый раз обходные пути, чтобы все же добраться до проблемного места. Например, выставляю раньше точку останова, а затем через F11 дохожу до нужной строки.

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

 
Nikolai Semko #:
Да, я не чувствую. К сожалению, я не использую VIM, хотя и хотел бы иметь такой скил. 
А при чем тут VIM, если переключение через Ctrl+Tab, если бы справка была в отдельном окне.
 
fxsaber #:


  1. Как сделать, чтобы открывалась справка не про матричный вариант CopyTicksRange?

Наверное только через жо ой, через поиск будет быстрей…


 
Renat Fatkhullin #:

Вы же сами 16 битное число сдвигали на 48 разрядов.

Тем более, что компилятор явно об этом писал.

Ну так программа от этого не должна портиться в других никак не связанных местах и выполнять инструкции непредсказуемым образом.

То, что выведено предупреждение - это хорошо, в переменной при выполнении будет не то, что ожидалось (из-за невнимательности) - и это должен быть единственный эффект, а не куча побочки.

PS.

Вот код до правки:

   int nonzero = 0;
   ushort symcode = 0;
   ulong volcode = 0;
   for(int k = 0; k < ArraySize(x); k++)
   {
      if(x[k]) // <- out of bounds
      {
         const uint minlots = (uint)(x[k] / SymbolInfoDouble(tradables[k], SYMBOL_VOLUME_MIN) + DBL_EPSILON);
         symcode |= (ushort)((k % 16) << (nonzero * 4));
         volcode |= ((minlots % 4096) << (nonzero * 12));
         nonzero++;
      }
   }
   ulong hash = (symcode << 48) | volcode;

Программа падает в подсвеченной строке с невероятной ошибкой так как заголовок цикла не отрабатывает как надо. Если добавить требуемый каст (ulong) в последнюю строку, проблема с циклом пропадает. Это нормально?

В зависимости от того, как отредактируешь несколько строк после этого фрагмента - начинаются чудеса в другом месте - с тем самым if(a * b < 0), который перестает правильно работать - программа проваливается внутрь него при отрицательных a и b.