Как вы думаете?

 
После открытия откна свойств эксперта и закрытием его кнопкой "ОК" должна ли происходить полная переинициализация эксперта, точно так, как будто он первый раз прикрепляется на график? Мне кажется что должно быть так. Фактически - нет.
 
Integer писал (а) >>
После открытия откна свойств эксперта и закрытием его кнопкой "ОК" должна ли происходить полная переинициализация эксперта, точно так, как будто он первый раз прикрепляется на график? Мне кажется что должно быть так. Фактически - нет.

Функция init() со значениями внешних параметров, высвеченных в окне свойств эксперта, выполняется однозначно.

Кроме того, можно добавить, что значения внешних параметров, высвеченные в окне свойств эксперта, после нажатия ОК передаются в эксперт.

Могут ведь быть и параметры, не учавствующие в функции init().

 

init выполняется, а значения переменных объявленных на уровне модуля - остаются. Еще как-то замечал, если в индикаторе нет переменных extern то init при переподключении не выполняется.

 
Integer писал (а) >>

init выполняется, а значения переменных объявленных на уровне модуля - остаются. Еще как-то замечал, если в индикаторе нет переменных extern то init при переподключении не выполняется.

Скажу Вам опираясь на практический опыт работы со своим советником:

Например, на уровне модуля объявлена булева внешняя переменная, включающая/выключающая вывод в операторе comment(...),

которая никоим образом не участвует в функции init(). При смене значения этой переменной в окне свойств эксперта и нажатие ОК, эксперт производит ввод/вывод

comment(...), согласно значению этой переменной. Иначе говоря, значения внешних переменных из окна свойств однозначно передаются в эксперт.
 

Я не про внешние переменные. Вот эксперт смотрите сами.

extern int       ExtParam1;

int TimeNow=0;

int init(){
   Alert(TimeNow);
   return(0);
}
int start(){
   TimeNow=TimeCurrent();
   Alert("Цена изменилась, можно переподключить эксперта");
   return(0);
}
У меня после переподключения TimeNow не равно нулю.
 
Integer писал (а) >>

Я не про внешние переменные. Вот эксперт смотрите сами.

У меня после переподключения TimeNow не равно нулю.

Ну, правильно, эта переменная будет равна TimeCurrent().

Терминал не трогает глобальные (глобальные - в смысле переменные объявленные внешне по отношению ко всем функциям) переменные.

В противном случае с глобальными переменными, которые доступны всем функциям эксперта, было бы очень затруднительно работать.

Представте себе, что каждое открытие окна свойств эксперта, будет сбрасывать глобальные переменные на начальное значение - ведь работа всех

функций эксперта по изменению этих переменных будет сведена к нулю, и эксперт просто сойдет с ума.


 
Об этом и пишу. Но считаю, что должна быть полная инициализация, так, как будто эксперт только что установлен на график.
 
Integer писал (а) >>
Об этом и пишу. Но считаю, что должна быть полная инициализация, так, как будто эксперт только что установлен на график.

Кому как. У меня, например, в советнике есть глобальные переменные, задающие ритм работы всем функциям эксперта.

Одновременно есть внешние параметры, которые я часто меняю для изменения разного рода уровней. Мне, в принципе, неприемлемо, чтобы при открытие окна

свойств эксперта, глобальные переменные сбрасывались - эксперт немедленно растеряется....

 
Это не метод. Если нужно сохранять какую-то информацию, нужно принимать соответсвующие меры по ее сохранению. Если комп придется перезагружать, все потеряется. Это не хороший подход к принципу написания экспертов.
 
Integer писал (а) >>
Это не метод. Если нужно сохранять какую-то информацию, нужно приниимать соответсвующие меры по ее сохранению. Если комп придется перезагружат, все потеряется. Это не хороший подход к принципу написания экспертов.

Совершенно верно. Хранение необходимой текущей информации у меня организовано на самом Торговом сервере.

Но вот представьте себе, что непосредственно после определения значения глобальной переменной, определяющей направление торговли и доступной

всем функциям эксперта, работа которых напрямую зависит от ее значения, Вы открываете окно свойств эксперта.

Что происходит в этот момент ? Терминал прекращает передавать управление эксперту, зафиксировав при этом точку останова.

После закрытия окна свойств нажатием ОК, терминал вновь передает управление эксперту в точку останова, однако, если, при этом он сбросит упомянутую переменную,

то логика работы всех функций эксперта будет нарушена.

Иными словами, разработчики учли значимость глобальных переменных и приняли, на мой взгляд, правильное решение, которое не приводит к изменению алгоритма эксперта

при каждом открытие окна свойств.

 
У моих экспертов логика работы в таких случаях не нарушается.
Причина обращения: