Ошибки, баги, вопросы - страница 2258
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нужна возможность отслеживать изменения свойств всех графиков, а не только того, на котором размещена MQL-программа.
Сделайте костыль через таймер.
Сделайте костыль через таймер.
Не хочется делать костыль. Разработчики MQ могут расширить возможности.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Anatoli Kazharski, 2018.08.20 08:11
Нужна возможность отслеживать изменения свойств всех графиков, а не только того, на котором размещена MQL-программа.
Сейчас событие CHARTEVENT_CHART_CHANGE не содержит никаких других параметров:
Событие
Значение параметра id
Значение параметра lparam
Значение параметра dparam
Значение параметра sparam
Событие изменения размеров графика или изменения свойств графика через диалог свойств
CHARTEVENT_CHART_CHANGE
—
—
—
//---
Для отслеживания этого события на других открытых графиках можно было бы включать мониторинг, указав идентификатор нужного графика.
Например, вот так:
В качестве lparam-параметра может быть идентификатор графика, на котором были изменения. В качестве sparam-параметра название символа.
Ошибка при выполнении:
Результат: Ожидалось:
A::f<int>:1 A::f<int>:1
A::f<int>:753790661 A::f<int>:2
A::f<int>:Error:4007
А так:
нормально. А какая разница? С чего вдруг размер массива стал равен 753790660 (вместо единицы) и как следствие память вдруг закончилась (4007) ? MT5\1881\32
Более того... если в первом варианте удалить в классе буквально три символа - результат также будет нормальным
Спасибо за сообщение.
Исправлено.
Для работы в текущем билде не указывайте скоп класса при объявлении его методов.
Сообщения об остальных ошибках связаны с этой и после внесённых исправлений не воспроизводятся.
пример из справки не работает:
https://www.mql5.com/ru/docs/basis/function/operationoverload
не работает пример в самом низу страницы, со слов:
Другой пример перегрузки операции индексирования - работа с матрицами. Матрица представляет собою двумерный динамический массив, размеры массивов заранее неопределены. Поэтому нельзя объявить массив вида array[][] без указания размера второго измерения и затем передавать этот массив в качестве параметра. Выходом может служить специальный класс CMatrix, который содержит в себе массив объектов класса CRow.
компилятор пишет:
object of 'CMatrix' cannot be returned, copy constructor 'CMatrix::CMatrix(const CMatrix &)' not found tst.mq5 244 14
object of 'CMatrix' cannot be returned, copy constructor 'CMatrix::CMatrix(const CMatrix &)' not found tst.mq5 261 11
object of 'CMatrix' cannot be returned, copy constructor 'CMatrix::CMatrix(const CMatrix &)' not found tst.mq5 281 14
object of 'CMatrix' cannot be returned, copy constructor 'CMatrix::CMatrix(const CMatrix &)' not found tst.mq5 303 11
4 error(s), 0 warning(s) 5 1
Ошибка при компиляции (ME\1881\32)
А так:
нормально. А какая разница?Это не причина.
this сильно помогает при чтении кода и помогает избегать ошибок в некоторых ситуациях.Замечу что this в MQL не везде работает:
что в С++ компилируется без ошибки
Замечу что this в MQL не везде работает:
что в С++ компилируется без ошибки
В C++ знают толк в извращениях. Возможно, где-то в макросах такое может быть использовано, но не напрямую.
Возможно, где-то в макросах такое может быть использовано, но не напрямую.
Макросы тут совершенно ни при чем - замените this на обычный указатель и будет точно такой же синтаксис:
В MQL нельзя явно обратиться к b.A::x, а в С++ можно. К чему такое ограничение?Макросы тут совершенно ни при чем - замените this на обычный указатель и будет точно такой же синтаксис:
В данном случае оправдано. Вариант с this - не ясно, зачем так писать. Когда A:: и так обо всем говорит.