Ошибки, баги, вопросы - страница 1516

 
zaskok3:

Хватит прикидываться, что ничего не понимаете: фоново можно утащить с флешки. Есть еще масса способов. Главное - утащить. Даже не обязательно это делать на самом чужом компе.

Вы передали свои пароли, включили сохранение(привязку) паролей на чужой компьютер и назвали это дырой. При этом до последнего скрывали, что сами включили сохранение паролей.

Вывод закономерен - на выход за рецидив уже десятка ваших клонов.

 
Renat Fatkhullin:
Планируется ли внести изменения в функционал MetaEditor выделение переменных, в отладчике создание автоматически всех используемых переменных? Как в IDE Qt Creator или VS.
 
coderex:
Планируется ли внести изменения в функционал MetaEditor выделение переменных, в отладчике создание автоматически всех используемых переменных? Как в IDE Qt Creator или VS.
Да, обязательно.
 
Renat Fatkhullin:
Да, обязательно.
Интересно как скоро ?
 
Slawa:
Проверьте, пожалуйста заявку #1416121 по инициализации глобальных/статических переменных!
 
Alexey Kozitsyn:
Проверьте, пожалуйста заявку #1416121 по инициализации глобальных/статических переменных!

В очередь. Заявка всего лишь двухчасовой давности.

Вообще, такие вопросы надо бы задавать на форуме. Так как многих может коснуться. Позволю себе Вас процитировать и тут же отвечу

Здравствуйте. Поправьте, если я не прав. Статические и глобальные переменные инициализируются один раз перед запуском программы (т.е. функцией OnInit()). Соответственно, если происходит деинициализация программы (вызов функции OnDeinit()), то программа должна "забыть" значения глобальных/статических переменных и перед следующим запуском OnInit() инициализировать их начальными значениями.

Обнаружил интересный факт в советниках на mql4. Если там объявить глобальные/статические переменные, то, например, при смене входных параметров, т.е. после функции OnDeinit(), значения этих переменных не сбрасываются. А вот в индикаторах - сбрасываются. Как быть, что делать? Похоже на ошибку.

Проверил на mql5 (билд 1241 х64) - аналогично. В экспертах - не сбрасываются, в индикаторах - сбрасываются.

Это запланированное поведение. Боле того, явно описано в документации

Загрузка и выгрузка индикаторов

Индикаторы загружаются в следующих случаях:

прикрепление индикатора к графику;

запуск терминала (если индикатор был прикреплен к графику перед предыдущим закрытием терминала);

загрузка шаблона (если в шаблоне указан прикрепленный к графику индикатор);

смена профиля (если индикатор прикреплен к одному из графиков профиля);

смена символа и/или периода графика, к которому прикреплен индикатор;

после удачной перекомпиляции индикатора, если данный индикатор был прикреплен к графику.

изменение входных параметров индикатора.

Индикаторы выгружаются в следующих случаях:

при откреплении индикатора от графика;

закрытие терминала (если индикатор был прикреплен к графику);

загрузка шаблона, если к графику прикреплен индикатор;

закрытие графика, к которому был прикреплен индикатор;

смена профиля, если индикатор прикреплен к одному из графиков сменяемого профиля;

смена символа и/или периода графика, к которому прикреплен индикатор;

изменение входных параметров индикатора.

Выгрузка и загрузка предполагают полную переинициализацию всего.

В пятёрке, как Вы правильно заметили, ситуация аналогичная

Правда, в четвёрке так сложилось исторически, и при переходе на новый MQL4 мы сначала поменяли это поведение (чтобы было, как у экспертов, то есть, ожидаемое Вами поведение). Но возникло множество вопросов с прежними индикаторами, которые заложились именно на такую, прежнюю, инициализацию. Вынуждены были вернуть

В пятёрке так сложилось сразу из-за архитектуры. При смене параметров старый индикатор с прежними параметрами уничтожается, а новый индикатор с изменёнными параметрами создаётся.

Input переменные
Input переменные
  • docs.mql4.com
Input переменные
 
Slawa:
В очередь. Заявка всего лишь двухчасовой давности.

На всякий случай здесь продублировал.

Это запланированное поведение. Боле того, явно описано в документации.

Просто я смотрел вот сюда и сюда. И считаю, что это логично, т.к. я работаю со статическим классом памяти. И, опять же, логично, что если есть "подвох" в виде устоявшихся приемов по отношению к разным типам программ, его хорошо было бы описать также в документации к статическому классу памяти (статическим и глобальным переменным).

Добавьте пожалуйста в замечания.

 
Alexey Kozitsyn:

На всякий случай здесь продублировал.

Просто я смотрел вот сюда и сюда. И считаю, что это логично, т.к. я работаю со статическим классом памяти. И, опять же, логично, что если есть "подвох" в виде устоявшихся приемов по отношению к разным типам программ, его хорошо было бы описать также в документации к статическому классу памяти (статическим и глобальным переменным).

Добавьте пожалуйста в замечания.

Какое замечание? Про загрузку-выгрузку программ?
 
Slawa:
Какое замечание? Про загрузку-выгрузку программ?
Про то, что инициализацию статических и глобальных переменных вызывают разные события в индикаторах и советниках. Добавьте, соответственно, в параграф про глобальные и статические переменные, в подраздел "замечания".
 

Справка МТ5:

IsStopped
 
Проверяет принудительное завершение работы mql5-программы.
 
bool  IsStopped();
 
Возвращаемое значение
 
Возвращает true, если в системной переменной _StopFlag содержится значение, отличное от 0. Ненулевое значение записывается в переменную _StopFlag, если поступила команда завершить выполнение mql5-программы. 
В этом случае необходимо как можно быстрее завершить работу программы, в противном случае программа будет завершена принудительно извне через 3 секунды.

Только что проверил - индикатор удаляется с графика, но продолжает работать 3 секунды, 10 секунд, 3 минуты... (IsStopped там не проверялся, вопрос не об этом)

1) Почему в справке написано про принудительное завершение 3 секунды, а в реальности это так не работает

2) Почему бы процессы (скрипты, индикаторы, советники, агенты тестера) не завершать принудительно при их удалении с графика, остановке пользователем теста и т.д.?

Причина обращения: