Новая версия платформы MetaTrader 5 build 5370: улучшения в веб-версии - страница 10
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
После запуска этого скрипта .
Спасибо, воспроизвел.
Также в тестере стратегий при открытии настроек (F8) те же функции не действуют.
b5370, в некоторых случаях написание входного параметра макроса вызывает тормоза в ME.
Почему это связано с библиотекой - не знаю. Просьба исправить.
Строка для поиска: Uluchshenie 143.b5370, в некоторых случаях написание входного параметра макроса вызывает тормоза в ME.
Почему это связано с библиотекой - не знаю. Просьба исправить.
Строка для поиска: Uluchshenie 143.Не могу понять норма это или нет?
При компиляции вылетает
Но при обычной работе эксперта, переключения таймфреймов, изменения настроек робота, ошибки нет.
Ошибка только при компиляции.
Не могу понять норма это или нет?
При компиляции вылетает
Но при обычной работе эксперта, переключения таймфреймов, изменения настроек робота, ошибки нет.
Ошибка только при компиляции.
При переключении графика советник не переинициализируется, индикатор - удаляется и строится новый. Т.е. в советнике при переключении периода графика остаётся ранее созданный экземпляр класса. В индикаторе - нет (в индикаторе будет ошибка утечки памяти).
Если нужна переинициализация созданных объектов, то создайте такой метод и вызывайте в OnDeinit()
При перекомпиляции - советник, естественно, переинициализируется. Соответственно, и объекты-потеряшки появляются. Но, если в OnDeinit() советника добавить delete b, то потеряшек не будет.
Возьмите за правило, что если есть один new в коде, обязательно должен быть один соответствующий delete. Сколько new - ровно столько и delete.
При переключении графика советник не переинициализируется, индикатор - удаляется и строится новый. Если нужна переинициализация созданных объектов, то создайте такой метод и вызывайте в OnDeinit()
При перекомпиляции - советник, естественно, переинициализируется. Соответственно, и объекты-потеряшки появляются. Но, если в OnDeinit() советника добавить delete b, то потеряшек не будет.
Возьмите за правило, что если есть один new в коде, обязательно должен быть один соответствующий delete. Сколько new - ровно столько и delete.
Да спасибо я это понимаю.
Вопрос в том что при перекомпиляции, я так понимаю не вызывается Деструктор. Разве это правильно?
Разве компиляция не должна работать последовательно и очищать правильно все данные ?Да спасибо я это понимаю.
Вопрос в том что при перекомпиляции, я так понимаю не вызывается Деструктор. Разве это правильно?
Деструктор должен вызываться при снятии программы с графика - так и проверять нужно - запустив советник, снять его с графика. Но у Вас нет удаления объекта при деинициализации. Отсюда и потеряшка - не вызывается деструктор. Так же деструкторы должны срабатывать при delete объекта.
В общем решение простое - всегда должна быть пара new - delete.
Разве компиляция не должна работать последовательно и очищать правильно все данные ?
При перекомпиляции программа снимается с графика. Всё и работает последовательно:
При перекомпиляции программа снимается с графика. Всё и работает последовательно:
Благодарю.
Тогда почему при пустом OnDeinit() при смене ТаймФрейма не вылетает эта же ошибка ?
Почему при смене ТаймФрейма деинициализачия и деструкторы отрабатываею верно, а при компиляции нет ?
Я всё таки склоняюсь к багу компилятора, который при перекомпиляции программы не правильно уничтожает обьекты.Тогда почему при пустом OnDeinit() при смене ТаймФрейма не вылетает эта же ошибка ?
Это же советник?
Так он не снимается с графика при смене периода графика. Утечка памяти происходит только тогда, когда программа прекращает работу и снимается с графика.