Удалить *.chr чарты в каталоге данных MQL5\Profiles\Charts\Default (или другое имя активного профиля), запустить и обновиться через Help -> Check for updates или
Удалить *.chr чарты в каталоге данных MQL5\Profiles\Charts\Default (или другое имя активного профиля), запустить и обновиться через Help -> Check for updates или
Vladislav Boyko #: [edit] При пересоздании бранча через сайт с другим parent commit, похоже, без удаления local repo обойтись нельзя. Сейчас попробую показать...
Создал проект через визард
Создал через редактор dev branch и запушил 2 комита
Никогда не пользовался. По сути это происходило само собой 20 лет существования МТ. Теперь надо вносить значительные правки для взаимодействия 2-х функций работающих с 1-байтовыми данными, которые раньше хорошо взаимодейстововали и теперь перестанут.
Можно пример кода union для динамических массивов? Как полученый из WebRequest char[] перeдать в CryptDecode , который принимает uchar[]? Я не представляю как это сделать... Нам в любом случае надо иметь 2 массива char и uchar, чтобы отдавать их функциям.
И эта задача появится не только у меня - в соседней ветке проблема с JASON библиотекой. Всем ее пользователям видимо придется вноосить аналогичные изменения.
Думаю проще добавить перегрузку в WebReques .
Да, решение с ArraySwap, будет интереснее. ArraySwap это бесплатно в плане производительности, т.к. меняются просто указатели двух массивов. При этом дело имеем с динамическими массивами не знал что:
Если на момент создания проекта в редакторе не открыто ни одного файла, то после создания проекта вкладки отображены не будут. Я имею в виду эти вкладки: .
Проверил еще раз, уточнение: после создания проекта вкладки не будут отображены если в момент создания проекта не существовало ни одной вкладки. То есть, если есть открытый документ, но его окно не развернуто, то вкладок тоже не будет.
Но это супер ерунда; вот это, например, сильно важнее, как по мне.
Билд 4885. Если в новом исправлено - сообщите. Но сомневаюсь, т.к. обновлений долго не было.
Баг с таймером. Если запускать с параметром quick=true, то функция работает очень быстро и таймер всегда срабатывает через 100мс.
Баг при quick=false: EventSetMillisecondTimer(100); вызывает OnTimer() не через 100 мс, а через время от предыдущего вызова до нового + 100 мс. Аналогично и EventSetTimer(1) не через 1 сек, а с дополнительной паузой.
Например если после предыдущего вызова, некий код работал 5 секунд, то следущий сработает через паузу 5 сек 100мс:
2025.06.0411:01:12.364 OnTimer via 4108 ms - момент предыдущего вызова OnTimer() и его остановки через EventKillTimer() и начало работы медленной функции на 5 секунд
2025.06.0411:01:17.3645) Work time: 4999 ms - через 5 сек фунция завершила работу
2025.06.0411:01:17.364 start timer - и запустила таймер EventSetMillisecondTimer(100);
2025.06.0411:01:22.472 OnTimer via 5107 ms - таймер сработал через 5.1 секунды, а не через 0.1 секунды
Эксперт:
inputbool quick = false;
voidOnInit(){downloads();}
voidOnDeinit(constint reason){ EventKillTimer();}
ulong mcs;
voidOnTimer() {
Print("OnTimer via ", (GetMicrosecondCount()-mcs)/1000," ms");
EventKillTimer();
downloads();
}
int i=1;
void downloads(){
if(quick){Print("start timer quick");}//быстрая функцияelse{//почему то тормозит перед запуском следущего OnTimer на время от предыдущго вызова
mcs = GetMicrosecondCount();
Sleep(i*1000); //медленные расчетыPrint(i,") Work time: ", (GetMicrosecondCount()-mcs)/1000," ms");
Print("start timer");
}
i++; if(i==10){Print("Finish!!!"); EventKillTimer();return;}
mcs = GetMicrosecondCount();
EventSetMillisecondTimer(100);
}
Полный вывод в лог:
2025.06.0411:00:52.823 start timer
2025.06.0411:00:53.9401) Work time: 994 ms
2025.06.0411:00:53.940 start timer
2025.06.0411:00:54.040 OnTimer via 99 ms
2025.06.0411:00:56.0432) Work time: 2002 ms
2025.06.0411:00:56.043 start timer
2025.06.0411:00:58.140 OnTimer via 2096 ms
2025.06.0411:01:01.1393) Work time: 2998 ms
2025.06.0411:01:01.139 start timer
2025.06.0411:01:04.249 OnTimer via 3109 ms
2025.06.0411:01:08.2554) Work time: 4005 ms
2025.06.0411:01:08.255 start timer
2025.06.0411:01:12.364 OnTimer via 4108 ms
2025.06.0411:01:17.3645) Work time: 4999 ms
2025.06.0411:01:17.364 start timer
2025.06.0411:01:22.472 OnTimer via 5107 ms
2025.06.0411:01:28.4726) Work time: 5999 ms
2025.06.0411:01:28.472 start timer
2025.06.0411:01:34.578 OnTimer via 6105 ms
2025.06.0411:01:41.5787) Work time: 6999 ms
2025.06.0411:01:41.578 start timer
2025.06.0411:01:48.682 OnTimer via 7103 ms
2025.06.0411:01:56.6738) Work time: 7990 ms
2025.06.0411:01:56.673 start timer
2025.06.0411:02:04.760 OnTimer via 8086 ms
2025.06.0411:02:13.7609) Work time: 8999 ms
2025.06.0411:02:13.760 start timer
2025.06.0411:02:13.760 Finish!!!
Убрать таймер не предлагайте - нужно именно так.
Работа через паузу таймером нужна для работы с графической панелью, чтобы на короткое время паузы она успела получить события нажатия кнопок и обработать их. Если работать без таймера то нажатия на кнопки вообще не срабатывают. Кнопка нужна для остановки этих медленных расчетов.
Надеюсь к релизу разработчики успеют исправить.
Добавлено: Возможно при EventKillTimer(); EventSetMillisecondTimer(100); EventSetTimer(100); надо что-то обнулить в внутреннем коде?
Выпустили обновленную версию 5062 с исправлением.
Чтобы обновиться, надо:
Приносим свои извинения за креш.
Вроде работает.
Спасибо.
Выпустили обновленную версию 5062 с исправлением.
Чтобы обновиться, надо:
Приносим свои извинения за креш.
После удаления remote branch через сайт единственный способ заставить редактор узнать об этом - снести local repository.
Скажите пожалуйста, есть ли планы изменять это? Или в обозримом будущем будем так работать?
[edit] При пересоздании бранча через сайт с другим parent commit, похоже, без удаления local repo обойтись нельзя. Сейчас попробую показать...[edit] При пересоздании бранча через сайт с другим parent commit, похоже, без удаления local repo обойтись нельзя. Сейчас попробую показать...
выполнил git pull;
запушил комит (в main)
Никогда не пользовался. По сути это происходило само собой 20 лет существования МТ.
Теперь надо вносить значительные правки для взаимодействия 2-х функций работающих с 1-байтовыми данными, которые раньше хорошо взаимодейстововали и теперь перестанут.
Можно пример кода union для динамических массивов?
Как полученый из WebRequest char[] перeдать в CryptDecode , который принимает uchar[]? Я не представляю как это сделать... Нам в любом случае надо иметь 2 массива char и uchar, чтобы отдавать их функциям.
И эта задача появится не только у меня - в соседней ветке проблема с JASON библиотекой. Всем ее пользователям видимо придется вноосить аналогичные изменения.
Думаю проще добавить перегрузку в WebReques .
Да, решение с ArraySwap, будет интереснее. ArraySwap это бесплатно в плане производительности, т.к. меняются просто указатели двух массивов. При этом дело имеем с динамическими массивами

не знал что:
выполнил git pull;
запушил комит (в main)
На видео ниже показано воспроизведение с нуля. Теперь точно каждый желающий сможет повторить.
Файл *.mp4 file был приаттачен к посту #26
------------------------
для информации
Я вам еще одну мелочь напишу сразу.
Если на момент создания проекта в редакторе не открыто ни одного файла, то после создания проекта вкладки отображены не будут. Я имею в виду эти вкладки:
.
Проверил еще раз, уточнение: после создания проекта вкладки не будут отображены если в момент создания проекта не существовало ни одной вкладки. То есть, если есть открытый документ, но его окно не развернуто, то вкладок тоже не будет.
Но это супер ерунда; вот это, например, сильно важнее, как по мне.
Редактор ошибочно думает, что mqproj файл изменен.
- Создать shared project (script)
- Поставить галочку "Display a confirmation window..."
- Сохранить файл
- Убрать галочку "Display a confirmation window..."
- Сохранить файл
- Готово, теперь редактор будет ошибочно думать, что mqproj файл изменен.
- Можно запушить интересный комит
Смотрите полное воспроизведение на видео (ниже).Билд 4885. Если в новом исправлено - сообщите. Но сомневаюсь, т.к. обновлений долго не было.
Баг с таймером.
Если запускать с параметром quick=true, то функция работает очень быстро и таймер всегда срабатывает через 100мс.
Баг при quick=false:
EventSetMillisecondTimer(100); вызывает OnTimer() не через 100 мс, а через время от предыдущего вызова до нового + 100 мс. Аналогично и EventSetTimer(1) не через 1 сек, а с дополнительной паузой.
Например если после предыдущего вызова, некий код работал 5 секунд, то следущий сработает через паузу 5 сек 100мс:
Эксперт:
Полный вывод в лог:
Убрать таймер не предлагайте - нужно именно так.
Работа через паузу таймером нужна для работы с графической панелью, чтобы на короткое время паузы она успела получить события нажатия кнопок и обработать их. Если работать без таймера то нажатия на кнопки вообще не срабатывают. Кнопка нужна для остановки этих медленных расчетов.
Добавлено: Возможно при EventKillTimer(); EventSetMillisecondTimer(100); EventSetTimer(100); надо что-то обнулить в внутреннем коде?Надеюсь к релизу разработчики успеют исправить.