существует. В период t 0 - t 1 исполняется специальная функция init() эксперта, в
результате чего создаётся GV-переменная Quantity, значение которой в момент t 1 равно 1.
Последующие тики по валютному инструменту EUR/USD запускают на исполнение
специальную функцию start(). Однако в период t 0 - t 6 в клиентском остаётся всего один
эксперт, поэтому значение значение GV-переменной Quantity не изменяется.
В момент t 6 в окно финансового инструмента GBP/USD присоединяется второй эксперт.
В результате исполнения его функции init() значение GV-переменной Quantity изменяется
и в момент t 7 становится равным 2. После этого в момент t 8 в окно USD/CHF
присоединяется третий эксперт, в результате чего в момент t 9 значение GV-переменной
Quantity становится равным 3.
В момент t 10 трейдер принимает решение о выгрузке советника из окна EUR/USD.
Обратите внимание, последний раз переменная Experts в эксперте, работающем в этом
окне, была изменена в период исполнения функции start(), запущенной на втором тике,
т.е. в период t 4 - t 5. В момент t 10 значение переменной Experts в эксперте, работающем в
окне EUR/USD, остаётся равным 1. Поэтому при исполнении специальной функции
deinit() этого эксперта GV-переменная Quantity будет удалена в результате исполнения
строк:
if (Experts ==1) // Если эксперт один..
GlobalVariableDel(Quantity); //..удаляем GV-перемен
Таким образом, несмотря на то, что в клиентском терминале остаются подключёнными
два эксперта, GV-переменная удалена! Нетрудно понять, какие последствия это событие
будет иметь для расчётов в работающих экспертах. При исполнении функции start() в этих
экспертах будет установлено, что текущее значение переменной New_Experts равно нулю,
поэтому и новое текущее значение переменной Experts также обнулится. В результате
окажется, что значение переменной Money вычислить не представляется возможным, т.к.
в формуле, используемой для расчёта, переменная Experts стоит в знаменателе. Таким
образом, дальнейшие расчёты в экспертах пойдут по ложному пути со всеми
вытекающими последствиями.
Кроме того, при исполнении функции deinit() экспертов (при выгрузке из окон GBP/USD и
USD/CHF) GV-переменная будет снова открыта, но получит значение -1 (минус единица)
после выгрузки одного из них, и -2 при выгрузке последнего. Это приведёт к получению
отрицательного значения переменной Money. Важным также является то, что после
выгрузки всех экспертов GV-переменная Quantity останется открытой в клиентском
223