Новая версия платформы MetaTrader 5 build 4620: исправления ошибок в MQL5 и новые методы OpenBLAS - страница 23
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В очередной раз наткнулся на пару глюков, которые удалось решить только потому что уже не в первый раз. Нелогичность поведения системы не укладывается в голове, поэтому периодически забываю о подвохе.
Вот казалось бы простая функция:
Но не верьте своим глазам. Текстовый файл, созданный таким образом, не сможет открыть MetaEditor - точнее он открывает для него вкладку, но содержимое не показывает. Все дело в том, что в массив (и в файл) попадает терминальный 0. Все другие текстовые редакторы открывают такой файл спокойно.
Если предположить тривиальное решение:
получим новый баг - если в тексте есть нелатинские буквы, то в файл запишется не весь текст, потому что аргументы функции StringToCharArray относятся к буферу (!), а не строке и при кодировке в utf-8 буфер увеличивается по сравнению со строкой.
Окончательное решение (с багами, которые я еще не нашел):
...
Вот казалось бы простая функция:
Но не верьте своим глазам. Текстовый файл, созданный таким образом, не сможет открыть MetaEditor...
...Окончательное решение (с багами, которые я еще не нашел):
В очередной раз наткнулся на пару глюков, которые удалось решить только потому что уже не в первый раз. Нелогичность поведения системы не укладывается в голове, поэтому периодически забываю о подвохе.
Вот казалось бы простая функция:
Но не верьте своим глазам. Текстовый файл, созданный таким образом, не сможет открыть MetaEditor - точнее он открывает для него вкладку, но содержимое не показывает. Все дело в том, что в массив (и в файл) попадает терминальный 0. Все другие текстовые редакторы открывают такой файл спокойно.
Если предположить тривиальное решение:
получим новый баг - если в тексте есть нелатинские буквы, то в файл запишется не весь текст, потому что аргументы функции StringToCharArray относятся к буферу (!), а не строке и при кодировке в utf-8 буфер увеличивается по сравнению со строкой.
Окончательное решение (с багами, которые я еще не нашел):
Если не указывать параметр кодовой страницы, по умолчанию будет использована codepage=CP_ACP
Тогда всё работает.
Если не указывать параметр кодовой страницы, по умолчанию будет использована codepage=CP_ACP
Тогда всё работает.
Этот файл непереносим в общемировом масштабе - текст будет виден нормально только у тех, у кого CP_ACP совпадает с вашей операционкой (в данном случае 1251). Например, если грек по гречески что-то сохранит с вашим кодом, то мы уже не прочитаем.
Я в недоумении. Ниже код, который в двух вариантах макроса должен, ИМХО, давать один и тот же результат, но дает разные. Почему-то портится последовательность инициализации.
Пример с макросами - упрощенный. В реальности желаемый результат нужно получить не через макрос, а через вызов более сложной функции, поэтому нужны круглые скобки.
Ниже код, который в двух вариантах макроса должен, ИМХО, давать один и тот же результат, но дает разные.
Да, воспроизводится.
В МТ4, к стати, оба варианта макроса дают одинаковый результат.
Да, воспроизводится.
В МТ4, к стати, оба варианта макроса дают одинаковый результат.
Даже в C++ работает как надо для обоих вариантов:
Выводит:
Даже в C++ работает как надо:
Надеюсь, исправление данной ошибки в MQL5 не сломает сложно-уловимые места написанного кода.
Надеюсь, исправление данной ошибки в MQL5 не сломает сложно-уловимые места написанного кода.
Да, что-то нет особой надежды, что это поправят. Обошел, сделав функцию на все 3 аргумента в инициализаторе (prepend(p.path, "/", t), надо будет переобозвать). Жалко, что день потратил на выявление бага. Обычно в таких элементарных вещах не ждешь подвоха.
Ренат, добрый день!, а что нужно убрать/почистить/исправить в барах и тиках, чтобы работало.
ссылка на исходник вопроса https://www.mql5.com/ru/forum/474452/page18#comment_550763811_ выгрузить историю по инструменту тики + бары
2_ убрать ошибочные
3_ закинуть в свой инструмент.
Может у Вас скрипт есть какой или хотя бы на скрине / пеинт покажите, что надо исправлять в данных.
Заранее спасибо!
Проблема массовая, я еще тикеров могу накидать, где это происходит)
По хорошему, надо эту проверку внутрь mql5 тестера впихнуть, чтобы "качество истории" мерил, а то он 100% пишет. ага)) охотно верим
Проблема, судя по всему, в том, что Финамовцы проставили Тиковый объем = 1 в минутках. Кроме этого они еще чего-то намихинировали в Тиковых данных на склейках, да так, что в тестере склейки использовать стало невозможно ни в режиме баров, ни в режиме тиков.
Ну и про качество истории конечно смешно:
Тест на ALLFUTSi с 01.01.2024 по 31.08.2024 в логе:
При этом в отчете:

38 272 511 тиков было, 281 567 стало. Качество истории 100% :)