Ошибки, баги, вопросы - страница 3345
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Print(pow(0,0))
Ещё и
Это даже как-то обосновывается.
Может проблема в МТ5?
Позиция ПОКУПКА была закрыта по цене покупки, которой нет на графике.
https://www.mql5.com/en/forum/449559
Я пару раз писал про баги, а оказывалось, что сам виноват. Теперь опасаюсь так писать.
Объясните мне кто знает.
Почему, при попытке установить базовую валюту и валюту прибыли функцией CustomSymbolSetString устанавливается вообще что попало?
Причём не важно, создаётся символ с пустыми свойствами или скопированными с символа источника.
Проблема ещё в том, что даже если оставить базовую валюту и валюту прибыли скопированные с символа источника, то при любом изменении спецификации
хоть смене сессий CustomSymbolSetSessionQuote(), хоть любом другом изменении, базовая валюта и валюта прибыли, становятся не правильными.
В чём причина?
Попробовал в другом терминале. Ошибка повторяется, но уже частично.
Добрый день.
В последних версиях терминала появился такой деффект:
Как я понимаю функция SocketSend работает асинхронно. Какой бы большой буффер данных не передавался ей на вход, она сразу возвращает управление, а реальная передача данных происходит фоном для эксперта.
Если в этот момент позвать функцию SocketIsConnected то она возвращает false, при этом в _LastError 0.
Это новое (и на мой взгляд неверное) поведение поломало имеющийся код. Для себя проблему решил отправкой данных маленькими кусками, но хотелось бы услышать мнение кого-то из команды разработчиков.
Спасибо.
Ошибка при компиляции, а в другом случае нормально: А какая принципиальная разница между (1) и (2) ?
Если объявляете статическую переменную, то следует ее и определить.
Попробуйте добавить в класс метод обращающийся к переменной и уже получите ошибку компиляции в коде класса
А принципиальная разница между вашими случаями (1) и (2) следующая (очень грубо):
Во втором случае вы объявляете глобальную переменную-экземпляр класса. Компилятору необходимо выделить память для нее и всего связанного с классом и здесь же компилятор пытается понять куда указывает имя `A::i`.
А в первом случае вы объявляете глобальную переменную-указатель на экземпляр класса. Здесь компилятору надо выделить память только для указателя, а сам объект будет создан уже в процессе выполнения программы.
Если объявляете статическую переменную, то следует ее и определить.
Определил ниже, почему ошибка не исчезла?
И в чем тогда уже принципиальная разница между: и ???Определил ниже, почему ошибка не исчезла?
До того как Вы определили A::i компилятору нужно создать глобальный экземпляр класса и ему нужно знать куда ссылается A::i. Мне кажется такой ситуации не возникло бы, если бы MQL5 код сначала компилировался в объектные файлы, а потом компоновался в исполняемый (на пример как в С/С++).
А на вопрос про принципиальную разницу я ответил в предыдущем сообщении. Здесь ровно та же самая ситуация в певом случае имеем только указатель на экземпляр (объект) класса, во втором сам экземпляр.
А на вопрос про принципиальную разницу я ответил в предыдущем сообщении. Здесь ровно та же самая ситуация в певом случае имеем только указатель на экземпляр (объект) класса, во втором сам экземпляр.
Возвращаюсь к первоначальному примеру:
Почему С\С++ создает исполняемый файл без ошибок, а в MQL ошибка уже на этапе компиляции?
Вы объяснили, почему в MQL возникает ошибка - компилятору чего то там не хватает, а почему в C\C++ всего хватает?