можно ли из start() вызвать init()?

 

Можно ли из start() вызвать init()? Что при этом происходит?

Не приведет ли это к зависанию терминала?

Спасибо.

 
valenok2003:

можно ли из start() вызвать init()?

Не приведет ли это к зависанию терминала?

Сергей, а чем вызван страх "что нельзя"? Вы же не собираетесь на каждом тике производить переинициализацию? ;)
 
TarasBY:
Сергей, а чем вызван страх "что нельзя"? Вы же не собираетесь на каждом тике производить переинициализацию?


предполагаю, что автоматом произойдет рекурсия start(); с непредсказуемыми последствиями
 
valenok2003:

предполагаю, что автоматом произойдет рекурсия start(); с непредсказуемыми последствиями
...это интересное предположение, НО init() и start() - это самостоятельные функции (хотя и специальные), и вызов одной из другой, описанный "катаклизм" не вызовут. В индикаторах часто использую такую конструкцию. В советниках такой необходимости не возникало. :)
 
TarasBY:
...это интересное предположение, НО init() и start() - это самостоятельные функции (хотя и специальные), и вызов одной из другой, описанный "катаклизм" не вызовут. В индикаторах часто использую такую конструкцию. В советниках такой необходимости не возникало. :)


У меня такая необходимость возникла в советнике. Это связано с возможностью удаления пользователем GV-переменных врукопашную, тогда потребуется восстановить данные без лишних запросов.
 
valenok2003:

У меня такая необходимость возникла в советнике. Это связано с возможностью удаления пользователем GV-переменных врукопашную, тогда потребуется восстановить данные без лишних запросов.
Логика: "если в индикаторе проблем не возникает, значит, и в советнике их быть не должно". Пробуйте, потом расскажите. :)
 
TarasBY:
Логика: "если в индикаторе проблем не возникает, значит, и в советнике их быть не должно". Пробуйте, потом расскажите. :)

)))))))) отпишусь, я бы уже проверил, да воскресенье )))
 

Можно вызывать.

И рекурсии не будет.

init() вызывается при запуске, а start() при поступлении тика.

Причем start() автоматом вслед за init() не запускается.

 
все эти "страшные" непонятки можно утихомирить, если принять модель, что выполняемая mql-программа воспринимается (и обрабатывается) терминалом как DLL со стандартным набором [отдельных!] вызываемых функций. сами по себе функции друг друга не вызывают, если только mql-программист этого не прописал. никакой-такой левой рекурсии. терминалом функции автоматически вызываются при формировании в терминале событий им соответствующих.
 
valenok2003:

Можно ли из start() вызвать init()? Что при этом происходит?

Не приведет ли это к зависанию терминала?

Спасибо.


1.Можно.

2.При этом происходит вызов функции.

3. К зависанию терминала не приводит, если только ваш init() не подвешивает терминал.

 
Вечный init )))
Причина обращения: