462 
Аналогичные вычисления выполняются и для другого подокна - индикатора Momentum 
(блоки 8 - 10). В конце функции Main() все имеющиеся графические объекты 
перерисовываются в результате исполнения WindowRedraw(). 
Легко заметить, что программное управление графическими объектами в подокнах 
предполагает использование глобальных переменных (можно также использовать static). 
В подобных случаях при составлении программ необходимо внимательно следить за тем, 
какие значения могут принимать глобальные переменные в различных случаях и какие 
последствия это может повлечь. В рассматриваемой программе в функции init() 
глобальные переменные обнуляются: 
   Win_RSI_old = 0;                    // Технический момент 
   Win_Mom_old = 0;                    // Технический момент 
Необходимость включения в программу этих строк вызвана тем, что глобальные 
переменные теряют свои значения, только если пользователь прекратил исполнение 
прикладной программы в окне финансового инструмента. Если же пользователь выполнил 
настройку внешних переменных или переключил таймфрейм, то программа проходит 
деинициализацию и последующую инициализацию, однако значения глобальных 
переменных при этом сохраняются. 
Рассмотрим, как будет работать программа, в которой указанные строки отсутствуют. 
Предположим, что на момент, когда пользователь переключил таймфрейм, в окне 
финансового инструмента были установлены оба индикатора, с номерами подокон, 
соответственно, 1 и 2. В рассматриваемом примере при деинициализации программы 
происходит удаление графических объектов. При исполнении специальной функции init() 
объекты создаются в нулевом окне. В дальнейшем, при исполнении функции Main(), в 
блоках 7-8 и 9-10 выполняется сравнение найденного номера окна, в котором должны 
быть установлены объекты, и номера окна, в котором объекты находились на предыдущем 
тике. Фактически объекты установлены в нулевом окне, но значения глобальных 
переменных будут свидетельствовать о другом: их номера будут 1 и 2. В результате 
графические объекты будут оставаться в основном окне до тех пор, пока пользователь не 
удалит и вновь не установит соответствующие индикаторы. Для того чтобы предотвратить 
нежелательное развитие событий, в программе и предусмотрено обнуление глобальных 
переменных при исполнении функции init(). Таким образом, значения этих переменных 
поставлены в соответствие ситуации.