Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления - страница 37
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Был такой случай. Навигатор сложился в узкую линию. Т.е. окно заузилось на столько, что превратилось в линию. Может быть у вас такой же случай. Попробуйте растянуть. Слевой или справой стороны.
Спасибо за замечание, но не всё так просто.
float хранит от 6 до 9 значащих цифр (в среднем 7, но в зависимости от конкретного хранимого значения могут быть удачные и неудачные отклонения), поэтому использовать напрямую NormalizeDouble(value, 8) нельзя. Во-первых, здесь 8 - это количество знаков после запятой, а не количество значащих цифр (они могут быть и в целой части, если значение больше 1). Во-вторых, даже если вообразить поправку на размер целой части, требуемое количество колеблется от 6 до 9, а не константа 8.
Сейчас занимаюсь криптой и в текущем инструменте объемы с десятичными знаками. И для объемов точно хватит float, т.к. для них точность менее важна, чем для цен. Т.е. экономим еще 4 байта с каждого тика.
Себе делаю с float volume_real;
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 5100: Переход на Git и хаб разработчиков MQL5 Algo Forge, темная тема и улучшения интерфейса
Vladislav Boyko, 2025.06.03 00:58
Визард генерирует поврежденные файлы, для которых не отображается diff на сайте.
Мне удалось воспроизвести только для .mqproj файла, но у меня есть как минимум пара mqh файлов с той-же проблемой.
Господа разработчики, кажется, я понял, в чем проблема. Я заметил, что у всех mqh файлов, для которых не работает diff, кодировка "UTF-16 LE BOM". У нормальных mqh файлов кодировка "UTF-8".
Визард генерирует mqproj с кодировкой "UTF-16 LE BOM". Я подозреваю, что если вы заставите визард генерировать mqproj файлы в "UTF-8" кодировке то для них будет работать diff.
Господа разработчики, кажется, я понял, в чем проблема. Я заметил, что у всех mqh файлов, для которых не работает diff, кодировка "UTF-16 LE BOM". У нормальных mqh файлов кодировка "UTF-8".
Визард генерирует mqproj с кодировкой " UTF-16 LE BOM ". Я подозреваю, что если вы заставите визард генерировать mqproj файлы в "UTF-8" кодировке то для них будет работать diff.
Интересно, а почему для MqlTickBidAskLastVolume выбрали ulong volume;?
Сейчас занимаюсь криптой и в текущем инструменте объемы с десятичными знаками. И для объемов точно хватит float, т.к. для них точность менее важна, чем для цен. Т.е. экономим еще 4 байта с каждого тика.
Себе делаю с float volume_real;
Компрессор делался только для цен, объемы копируются как есть, потому что они в оригинале целочисленные (ulong MqlTick::volume). Потеря точности для объемов - вопрос обсуждаемый. Вероятно, кому-то не понравится, что объемы выше 16777215 станут кодироваться неточно (в целой части), да еще и с дробной частью. Если объемы не важны, то можно вообще воспользоваться MqlTickBidAsk, где объемов нет.
8 - это моя ошибка. Должно быть digits, которое нужно сохранять. Немного изучив реальные тики (от EURUSD до крипты и экзотики), пришел к выводу, что шести байтов должно хватать, чтобы мочь восстановить последовательность нормализованных bid/ask и time_msc. Т.е. массив MqlTick[] можно ужать примерно в 10 раз при относительно дешевой (ZIP - эффективнее, но дорогой) распаковке.
Положил предполагаемые правки на форуме:
Forum on trading, automated trading systems and testing trading strategies
Scripts: TickCompressor
Stanislav Korotky, 2025.07.02 11:49
Suggested edits with NormalizeDouble in decompress-es attached.Git может хранить и версионировать любые типы файлов, включая UTF-16 LE с BOM, но он не интерпретирует кодировку так, как можно было бы ожидать от текстовых операций, таких как сравнение, слияние или фильтрация содержимого.
Я не разбираюсь в этом, я просто нашел закономерсность, что у "плохих" файлов обычно кодировка, отличная от UTF-8.
У меня 2 вопроса к MetaQuotes:
Здесь diff работает (потому что я пересоздал файл), а для предыдущих комитов diff не работает (потому что визард и "binary file not shown").
На видео ниже создание того репозитория с нуля и доказательства.
Здесь diff работает (потому что я пересоздал файл), а для предыдущих комитов diff не работает (потому что визард и "binary file not shown").
Аа, ну MetaEditor не может открыть тот пересозданный файл теперь. Я сонный, поэтому не проверил сразу. mqh файлы я "лечил" пересозданием - для них это работает.
Почему если я вручную пересоздам mqproj файл, то diff для него начнет работать?
Я не разбираюсь в этом, я просто нашел закономерсность, что у "плохих" файлов обычно кодировка, отличная от UTF-8.
Мне кажется, мы говорим об одном и том же, возможно, просто недопонимание перевода.
Я просто хочу подтвердить то, что вы обнаружили.