Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1030

 
abeiks:

Здравствуйте.

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

a как удаляете?

 
valenok2003:

Подскажите народ в чем ошибка в этой строке? раньше компилировал без сообщений об ошибке, теперь - '{' - expression expected

заранее благодарен

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};


Запятые посчитай.
 
AlexeyVik:

Запятые посчитай.
С запятыми все правильно, это запись такая - сколько бы массив не содержал элементов, все заполнятся нулями.
 
abeiks:

Здравствуйте.

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

Нажмите в терминале F3, и вручную удалите эту переменную. Она же один раз создана, и находится в окружении - от-туда её и считывает советник. Или я вас не правильно понял? Вы в самом коде индикатора просто убрали создание глобальной переменной терминала, но до этого её уже создавали этим индикатором?
 
artmedia70:
Нажмите в терминале F3, и вручную удалите эту переменную. Она же один раз создана, и находится в окружении - от-туда её и считывает советник.
Спасибо! Не знал.
А как в самом эксперте делать такую проверку и удалять? Например если я нечаянно закрою индикатор, то эксперт всё время будет получать эту последнюю переменную и если там сигнал на открытие позиций...
 
valenok2003:

a как удаляете?


Я делал так, но на верно не правильно:

 if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 
 
valenok2003:
С запятыми все правильно, это запись такая - сколько бы массив не содержал элементов, все заполнятся нулями.
Ну, не знаю, может в С++ который я не изучал никогда так правильно, но mql только С-подобный. И во-вторых измерение массива переменной задавать нельзя, хотя в твоём примере MAX_NUM_ORDER может и не переменная...
 
valenok2003:

Подскажите народ в чем ошибка в этой строке? раньше компилировал без сообщений об ошибке, теперь - '{' - expression expected

заранее благодарен

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

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

ArrayInitialize(Arr_Tickets, 0);

 
abeiks:

Я делал так, но на верно не правильно:

if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 

А что тут написано?

Если нет глобальной переменной с именем Test_1, то удалить её...

 
abeiks:
Спасибо! Не знал.
А как в самом эксперте делать такую проверку и удалять? Например если я нечаянно закрою индикатор, то эксперт всё время будет получать эту последнюю переменную и если там сигнал на открытие позиций...
Если при нечаянном удалении индикатора должны удаляться глобальные переменные, созданные этим индикатором, то в функции OnDeinit() индикатора должно быть прописано удаление этих глобальных переменных.
При этом нужно проверить, что это не переключение таймфрейма, а именно удаление индикатора с графика.