Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления - страница 37

 
Putnik #:

Был такой случай. Навигатор сложился в узкую линию. Т.е. окно заузилось на столько, что превратилось в линию. Может быть у вас такой же случай. Попробуйте растянуть. Слевой или справой стороны.

На 5135 тоже было такое. вроде с лева шкерился. 
 
Stanislav Korotky #:

Спасибо за замечание, но не всё так просто.

float хранит от 6 до 9 значащих цифр (в среднем 7, но в зависимости от конкретного хранимого значения могут быть удачные и неудачные отклонения), поэтому использовать напрямую NormalizeDouble(value, 8) нельзя. Во-первых, здесь 8 - это количество знаков после запятой, а не количество значащих цифр (они могут быть и в целой части, если значение больше 1). Во-вторых, даже если вообразить поправку на размер целой части, требуемое количество колеблется от 6 до 9, а не константа 8.

Интересно, а почему для MqlTickBidAskLastVolume выбрали ulong volume;?

Сейчас занимаюсь криптой и в текущем инструменте объемы с десятичными знаками. И для объемов точно хватит 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.

 
Vladislav Boyko # :

Господа разработчики, кажется, я понял, в чем проблема. Я заметил, что у всех mqh файлов, для которых не работает diff, кодировка "UTF-16 LE BOM". У нормальных mqh файлов кодировка "UTF-8".

Визард генерирует mqproj с кодировкой " UTF-16 LE BOM ". Я подозреваю, что если вы заставите визард генерировать mqproj файлы в "UTF-8" кодировке то для них будет работать diff.

Git может хранить и версионировать любые типы файлов, включая UTF-16 LE с BOM, но он не интерпретирует кодировку так, как можно было бы ожидать от текстовых операций, таких как сравнение, слияние или фильтрация содержимого.
 
Forester #:
Интересно, а почему для MqlTickBidAskLastVolume выбрали ulong volume;?

Сейчас занимаюсь криптой и в текущем инструменте объемы с десятичными знаками. И для объемов точно хватит float, т.к. для них точность менее важна, чем для цен. Т.е. экономим еще 4 байта с каждого тика.
Себе делаю с float volume_real;

Компрессор делался только для цен, объемы копируются как есть, потому что они в оригинале целочисленные (ulong MqlTick::volume). Потеря точности для объемов - вопрос обсуждаемый. Вероятно, кому-то не понравится, что объемы выше 16777215 станут кодироваться неточно (в целой части), да еще и с дробной частью. Если объемы не важны, то можно вообще воспользоваться MqlTickBidAsk, где объемов нет.

 
fxsaber #:

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.

 
Alain Verleyen #:
Git может хранить и версионировать любые типы файлов, включая UTF-16 LE с BOM, но он не интерпретирует кодировку так, как можно было бы ожидать от текстовых операций, таких как сравнение, слияние или фильтрация содержимого.

Я не разбираюсь в этом, я просто нашел закономерсность, что у "плохих" файлов обычно кодировка, отличная от UTF-8.

У меня 2 вопроса к MetaQuotes:

  1. Почему если я вручную пересоздам mqproj файл, то diff для него начнет работать?
  2. Почему визард не может сразу сгенерировать нормальный mqproj файл?

Здесь diff работает (потому что я пересоздал файл), а для предыдущих комитов diff не работает (потому что визард и "binary file not shown").

На видео ниже создание того репозитория с нуля и доказательства.

ver 1.3 · 4a42844208
ver 1.3 · 4a42844208
  • boyvlad
  • forge.mql5.io
diff-iss
 
Vladislav Boyko #:
Здесь diff работает (потому что я пересоздал файл), а для предыдущих комитов diff не работает (потому что визард и "binary file not shown").

Аа, ну MetaEditor не может открыть тот пересозданный файл теперь. Я сонный, поэтому не проверил сразу. mqh файлы я "лечил" пересозданием - для них это работает.

Vladislav Boyko #:
Почему если я вручную пересоздам mqproj файл, то diff для него начнет работать?
diff начнет работать, а MetaEditor работать перестанет, как оказалось.
 
А если открыть в ME и "сохранить как" UTF-8, вместо пересоздания?
 
Vladislav Boyko # :

Я не разбираюсь в этом, я просто нашел закономерсность, что у "плохих" файлов обычно кодировка, отличная от UTF-8.

Мне кажется, мы говорим об одном и том же, возможно, просто недопонимание перевода.

Я просто хочу подтвердить то, что вы обнаружили.