- Список сообщений об ошибках
- Как теперь выводить деньги с MQL5.com?
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
После открытия откна свойств эксперта и закрытием его кнопкой "ОК" должна ли происходить полная переинициализация эксперта, точно так, как будто он первый раз прикрепляется на график? Мне кажется что должно быть так. Фактически - нет.
Функция init() со значениями внешних параметров, высвеченных в окне свойств эксперта, выполняется однозначно.
Кроме того, можно добавить, что значения внешних параметров, высвеченные в окне свойств эксперта, после нажатия ОК передаются в эксперт.
Могут ведь быть и параметры, не учавствующие в функции init().
init выполняется, а значения переменных объявленных на уровне модуля - остаются. Еще как-то замечал, если в индикаторе нет переменных extern то init при переподключении не выполняется.
init выполняется, а значения переменных объявленных на уровне модуля - остаются. Еще как-то замечал, если в индикаторе нет переменных extern то init при переподключении не выполняется.
Скажу Вам опираясь на практический опыт работы со своим советником:
Например, на уровне модуля объявлена булева внешняя переменная, включающая/выключающая вывод в операторе comment(...),
которая никоим образом не участвует в функции init(). При смене значения этой переменной в окне свойств эксперта и нажатие ОК, эксперт производит ввод/вывод
Я не про внешние переменные. Вот эксперт смотрите сами.
extern int ExtParam1; int TimeNow=0; int init(){ Alert(TimeNow); return(0); } int start(){ TimeNow=TimeCurrent(); Alert("Цена изменилась, можно переподключить эксперта"); return(0); }У меня после переподключения TimeNow не равно нулю.
Я не про внешние переменные. Вот эксперт смотрите сами.
У меня после переподключения TimeNow не равно нулю.Ну, правильно, эта переменная будет равна TimeCurrent().
Терминал не трогает глобальные (глобальные - в смысле переменные объявленные внешне по отношению ко всем функциям) переменные.
В противном случае с глобальными переменными, которые доступны всем функциям эксперта, было бы очень затруднительно работать.
Представте себе, что каждое открытие окна свойств эксперта, будет сбрасывать глобальные переменные на начальное значение - ведь работа всех
функций эксперта по изменению этих переменных будет сведена к нулю, и эксперт просто сойдет с ума.
Об этом и пишу. Но считаю, что должна быть полная инициализация, так, как будто эксперт только что установлен на график.
Кому как. У меня, например, в советнике есть глобальные переменные, задающие ритм работы всем функциям эксперта.
Одновременно есть внешние параметры, которые я часто меняю для изменения разного рода уровней. Мне, в принципе, неприемлемо, чтобы при открытие окна
свойств эксперта, глобальные переменные сбрасывались - эксперт немедленно растеряется....
Это не метод. Если нужно сохранять какую-то информацию, нужно приниимать соответсвующие меры по ее сохранению. Если комп придется перезагружат, все потеряется. Это не хороший подход к принципу написания экспертов.
Совершенно верно. Хранение необходимой текущей информации у меня организовано на самом Торговом сервере.
Но вот представьте себе, что непосредственно после определения значения глобальной переменной, определяющей направление торговли и доступной
всем функциям эксперта, работа которых напрямую зависит от ее значения, Вы открываете окно свойств эксперта.
Что происходит в этот момент ? Терминал прекращает передавать управление эксперту, зафиксировав при этом точку останова.
После закрытия окна свойств нажатием ОК, терминал вновь передает управление эксперту в точку останова, однако, если, при этом он сбросит упомянутую переменную,
то логика работы всех функций эксперта будет нарушена.
Иными словами, разработчики учли значимость глобальных переменных и приняли, на мой взгляд, правильное решение, которое не приводит к изменению алгоритма эксперта
при каждом открытие окна свойств.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования