Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
  • Sign in / Register
  • MKI. Известные проблемы MetaTrader MetaEditor MQL4 MQL5 MKI. Известные проблемы MetaTrader MetaEditor MQL4 MQL5
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 52
    • Issues 52
    • List
    • Boards
    • Service Desk
    • Milestones
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar

GitLab 15.0 is launching on May 22! This version brings many exciting improvements, but also removes deprecated features and introduces breaking changes that may impact your workflow. To see what is being deprecated and removed, please visit Breaking changes in 15.0 and Deprecations.

  • FXcoder
  • MKI. Известные проблемы MetaTrader MetaEditor MQL4 MQL5MKI. Известные проблемы MetaTrader MetaEditor MQL4 MQL5
  • Issues
  • #27
Closed
Open
Created Sep 23, 2019 by FXcoder@fxcoderOwner

Один и тот же файл не может компилироваться как MQL4 и MQL5

Проблема

С некоторых пор мой код не отличается для MQL4 и MQL5. Новые возможности MQL5 нужны крайне редко, и без них можно обходиться. С другой стороны, MQL4 достаточно близок к MQL5. В итоге можно писать код так, чтобы он компилировался и почти одинаково работал в MT4 и MT5. Однако для MT4 код компилируется только из файлов с расширением .mq4, а для MT5 - .mq5. Приходится иметь два файла с одинаковым содержимым.

Решение

  1. Связать файлы жесткой ссылкой (пока использую этот метод с утилитой для принудительной синхронизации)
    • минус: будет проблема с системами контроля версий (вернее, клиенскими программами), т.к. они зачастую при откате изменений пересоздают файл
    • минус: система (win7x64, win10x64) не сразу обновляет информацию об обновлении файлов, связанных жесткой ссылкой, требуется обращение (хотя бы чтение свойств) ко всем "синонимам"
  2. Копировать вручную.
    • минус: просто неудобно, и можно ошибиться
  3. Найти какую-нибудь программу-синхронизатор
    • минус: после пары случаев удаления инфы такими программами доверия ко всему классу таким программ нет
  4. Мягкая ссылка.
    • минус: кажется, это вообще не работает с MT
  5. Писать в основном коде только минимальную обёртку для вызова методов класса индикатора в файлах .mqh (этот вариант кажется лучшим)
    • минус: сложнее отлаживать, после внесения правок нужно всегда переключаться на основной файл для компиляции, либо использовать Ctrl+F7, если открыт только скрипт с инклюдами
    • минус: каждый индикатор сразу разбивается как минимум на 2 файла
    • плюс: можно придумать интерфейс для вызова из робота, это будет работать быстрее, чем через iCustom
    • минус: всё равно приходится синхронизировать основной файл

Идеальным решением было бы наличие общего расширения для MQL4 и MQL5 плюс директива, указывающая платформы назначения.

Edited Apr 16, 2020 by FXcoder
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking