Особенности языка mql5, тонкости и приёмы работы - страница 309
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 5200: расширение OpenBLAS и усиление контроля в MQL5
Ilyas, 2025.08.04 14:08
Для однозначности, операция 'TYPE NAME = INITIALIZER', больше не будет разбиваться на две операции DECL + ASSIGNMENT, а останется одной 'DECL [has initializer]'
Если требуется объявить переменную и вызвать для неё оператор =, разбивайте операцию на две части вручную: DECL; ASSIGNMENT; (да, с констаностью переменной придётся расстаться)
Аналогично.
Если возникает необходимость инициализировать статический объект через оператор копирования, то это возможно сделать таким приемом.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2025.08.26 08:32
Появление неявного конструктора копирования позволяет делать такие записи.
Однако, использование такой возможности теряет совместимость с MQL4.
Обратите внимание на такие конструкции в своих исходниках. После b5200 они могут прекратить работать, как раньше. При этом компилятор ничего не сообщит об этом.
Пример такой опасности разного выполнения ДО и ПОСЛЕ b5200.
Поэтому внимательно смотрите функции, где идет возврат объекта.
Недокументированная константа:
MQL_GLOBAL_COUNTER
Возвращает уникальное значение счетчика, которое увеличивается каждый раз, когда любая MQL-программа (советник, скрипт, индикатор) вызывает MQLInfoInteger(MQL_GLOBAL_COUNTER).
Считайте, что это монотонно увеличивающийся глобальный счетчик запусков во всей сессии терминала MetaTrader, а не только в рамках одного эксперта или графика.
Счетчик начинается с 1 при запуске терминала и увеличивается каждый раз, когда новый экземпляр MQL-программы вызывает MQLInfoInteger( MQL_GLOBAL_COUNTER).
Период счетчика представляет собой 32-битное знаковое целое число в диапазоне [1, 2147483647].
Примеры использования
Засеивание ГПСЧ значением, которое отличается для каждого запуска программы (чтобы избежать одинаковых последовательностей при одновременном запуске нескольких советников/скриптов).
Создание уникальных идентификаторов для всех скриптов/ЭА без риска коллизии.
Пример
Если вы запустите этот скрипт несколько раз, вы увидите растущие числа, например:
Важно:
Это глобальное значение для терминальной сессии, оно не сбрасывается для каждого графика или эксперта.
Как только вы перезапустите MetaTrader, счетчик вернется к 1.
Короче говоря:
MQLInfoInteger(MQL_GLOBAL_COUNTER) дает вам уникальное, увеличивающееся целое число каждый раз, когда MQL-программа вызывает функцию MQLInfoInteger .
(Как это было обнаружено: см. https://www. mql5.com/en/code/56055)
Недокументированная константа:
MQL_GLOBAL_COUNTER
Спасибо за информацию!
MQL_GLOBAL_COUNTER
Спасибо за информацию!
Интересно, реализован ли атомарный доступ к этому счетчику. Если 2 или больше индикаторов работают на одном инструменте, получат ли они разные цифры?
Если 2 или больше индикаторов работают на одном инструменте, получат ли они разные цифры?
Разные. На график прикреплены 2 индикатора Buttons, у первого сверху уникальный ID "Buttons01", у второго "Buttons02".
Спасибо за информацию!
Интересно, а реализован ли атомарный доступ к этому счетчику? Если 2 или более индикатора работают на одном инструменте, будут ли они получать разные числа?
Индикаторы для данного инструмента работают в одном потоке, поэтому они выполняются последовательно, а не параллельно.