Ошибки, баги, вопросы - страница 2682
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Баг МТ5 (build 2367) Не соответствие приоритетов выполнения шаблонных функций в MQL в сравнении с шаблонными функциями в С++ (online: https://onlinegdb.com/B172m1PLL).
Похоже, что в рамках исправления бага, исправлена ошибка компиляции, однако приоритет выполнения перегруженных шаблонных функций так и не приведен к поведению в С++.
Столкнулся с прикольной проблемой. В макрос нельзя передать шаблонный тип с несколькими типами-параметрами, потому что препроцессор не знает, что имеет дело с шаблоном и считает параметры по запятым.
Описание проблемы и её решение для C++ нашел на SO.
Попробовал на MQL, но к сожалению не работает. Компилятор дает ошибку "undeclared identifier" для переменной описываемой переданным типом.
Пока обошелся дополнительным производным классом, но может поправить как в C++?
Oops. Нашел решение. Вот так работает:
#define COMMA() ,
Вопрос снимается.Баг МТ5 (build 2367) расположение перегруженных шаблонных функций влияет на результат компиляции.
Изначальный тикет в рамках которого велись работы - https://www.mql5.com/ru/forum/1111/page2655#comment_15119627
С++ online (https://onlinegdb.com/BJzbH2DLL).
Дефекты в работе кеша шаблонной функции/класса:
(исправлено MT5(build 2368)) *** (up) Undefined Behavior, создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...
(исправлено MT5(build 2368)) * Compile Error, баг при передаче в качестве const ref template аргумента указателя на функцию.
(исправлено MT5(build 2368)) * Compile Error, объект B<int> можно создать после объекта класса B<void*>, но если сделать это перед, то возникает ошибка компиляции.
Дефекты в работе шаблонной функции/класса:
(исправлено MT5(build 2368)) *** (up) Compile Error, баг внутри шаблонной функции, переданный указатель в рамках операции явного приведения типа ведет себя как класс в остальных случаях - как указатель.
(исправлено MT5(build 2368)) ** (up) Compile Error, баг при попытке доступа к internal class для шаблонного параметра шаблонной функции.
(не исправлено MT5(build 2368)) *** Compile Error, Основная претензия к неуместному выводу warning - "deprecated behavior, hidden method calling will be disabled in a future MQL compiler version". Текущая реализация - это стрельба с пушки по воробьям.
(не исправлено MT5(build 2368)) ** Compile Error, баг касается возвращаемого значения шаблонной функции, когда возвращаемое значение - internal class, расположенный внутри шаблонного класса, тип параметра которого задается типом аргумента шаблонной функции.
(не исправлено MT5(build 2368)) ** Compile Error, баг связанный с пространством имен и области видимости в шаблонном конструкторе при вызове базового класса, когда используется одно и то же имя класса при наследовании и в internal class.
(не исправлено MT5(build 2368)) * Compile Error, баг при вызове шаблонной функции с явным указанием типов аргументов, когда вызов выполняется из перегруженной нешаблонной функции.
(не исправлено MT5(build 2368)) Compile Error, баг при определении internal class - отсутствует возможность явно сослаться на глобальное пространство имен при указании базового класса.
(исправлено MT5(build 2368)) ** Compile Error, баг с генерацией кода шаблонного класса при использовании internal class.
(исправлено MT5(build 2368)) * Compile Error, баг при генерации шаблонного метода/класса, процесс "автозамены" шаблонного параметра выходит за пределы скоупа в основной код программы.
(исправлено MT5(build 2368)) * Compile Error, баг с отсутствием автоматической генерации кода шаблонного класса, когда шаблонный класс выступает в качестве return value для шаблонного метода.
(исправлено MT5(build 2368)) * Compile Error, баг при передаче internal struct в шаблонную функцию, полученный тип данных невозможно использовать как базовый тип данных для другой internal struct в шаблонном классе.
(исправлено MT5(build 2368)) * Compile Error, не выполняется проверка на наличие повторно использованных имен шаблонных типов при объявлении шаблонной функции внутри шаблонного класса, что приводит к неожидаемому поведению.
(исправлено MT5(build 2368)) Compile Error, множество дефектов связанных с return "in place created" object, когда объектом выступает шаблонный класс/структура.
(не исправлено MT5(build 2368)) * (It's not a bug, it's a feature) в конструкторе базового класса невозможно выполнить explicit typecast по приведению указателя на объект базового класса к указателю на родительский класс.
Дефекты связанные с несоответствием приоритетов вызовов перегруженных функций в MQL в сравнении с С++:
(исправлено MT5(build 2368)) ** (up) Compile Error, приоритет вызовов перегруженных шаблонных функций в действительности зависит от типа шаблонного параметра, который, в теории ни как не должен влиять на результат компиляции.
(исправлено MT5(build 2368)) ** (up) Compile Error, когда первая из перегруженных шаблонных функций использует полностью специализированный шаблонный базовый класс, а вторая - неспециализированный шаблонный базовый класс.
(не исправлено MT5(build 2368)) ** Compile Error, при генерации кода шаблонной функции возникает ошибка компиляции несмотря на то, что имеется перегруженная шаблонная функция с подходящей сигнатурой для передаваемых параметров.
(не исправлено MT5(build 2368)) * Compile Error, "ambiguous call to overloaded function" при вызове перегруженных шаблонных функций с разным количеством шаблонных параметров.
(исправлено MT5(build 2368)) *** Compile Error, когда есть наследование классов A <= B <= C <= D и реализованы две overloading функции, например одна c параметра А*, а вторая с B*, то передача в такую функцию объекта C* или D* в MQL вызывает ошибку компиляции "ambiguous call to overloaded function".
(исправлено MT5(build 2368)) ** Runtime, Несоответствие приоритетов для вызовов перегруженных шаблонных функций.
Дефекты связанные с медленным выполнением функций, работой оптимизатора кода:
(исправлено MT5(build 2368)) ** Runtime, большой overhead при добавлении по одному элементу в массив с помощью ArrayResize, не смотря на то, что память для них была заранее зарезервирована, например для структур аж до 7-ми раз медленнее.
Предложения:
(new) ссылка - о внедрении поддержки intellisense для функциональности namespace на основе работы intellisense для статических методов в классах.
ссылка - о предоставлении возможности передавать литералы и временные переменные в виде const ref аргументов функции.
ссылка - при перемещении файлов проекта во вкладке "Project", для перемещаемых файлов, которые открыты и находятся во вкладках ME, автоматически обновлять их путь расположения.
ссылка - о необходимости введения в MQL typedef declaration функциональности.
ссылка - о предоставлении возможности принудительной генерации дефолтных конструкторов копирования и операторов присвоения.
Раньше все работало, видимо что-то поломалось в рамках исправлений других дефектов.
Баг МТ5 (build 2368) ошибка компиляции при вызове оператора присвоения через явное указание базового класса. Проблема проявляется для шаблонного класса, у которого шаблонный параметр выступает базовым классом.
Раньше все работало, видимо что-то поломалось в рамках исправлений других дефектов.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2020.03.22 10:04
mq5 - норм. mq4 - сломали. Можно взять TypeToBytes_ExampleScript.mq4 отсюда. Компилируется только в случае, если расширение поменять на mq5.
2368 - ничего не изменилось.
Через один MT5-терминал всегда мог зайти на счет любого брокера. Если возникала проблема с первым заходом, то просто делал средствами Терминала поиск соответствующего брокера, автоматически получая данные его торговых серверов. После чего сразу мог без проблем логиниться.
Сегодня впервые столкнулся с ситуацией (новый брокер), что ничего не помогает. Не зайти. В лог пишет.
Скачиваю родной Терминал брокера - заходит на ура. А мой исследовательский Терминал - ни в какую. Впервые такое.
Подскажите, как сделать, чтобы не родной Терминал мог подключиться к торговому счету?
Подскажите, как сделать, чтобы не родной Терминал мог подключиться к торговому счету?
в мт4 нужно было файл серверов server.ini скопировать в другой терминал, чтоб торговые серверы не искать
в мт5 не знаю