Если на этом графике висит индикатор или эксперт.
я ставлю удаление этой переменной в индикаторе, и при удалении этого индикатора с графика всё ОК, переменная убирается.
НО!!! ввопрос в другом! если я не просто удалю индикатор с графика, а просто закрою вкладку с графиком например
открыт
евро - доллар, на нём есть индикатор , я закрываю вкладку а эта переменная остаётся, и собственно вопрос
возможно ли сделать так, что если закрыть вкладку тогда переменная тоже закроется, это же всё что можно сделать в индикаторе
это просто удаление
его с графика при удалении индикатора(с графика)
Спасибо!
1) Есть временные переменные, которые удаляются сами при перезагрузке терминала.
2) Нужно генерировать уникальное имя переменной для каждой копии индикатора-чарта, тогда проблем не будет.
я ставлю удаление этой переменной в индикаторе, и при удалении этого индикатора с графика всё ОК, переменная убирается.
НО!!! ввопрос в другом! если я не просто удалю индикатор с графика, а просто закрою вкладку с графиком например
открыт
евро - доллар, на нём есть индикатор , я закрываю вкладку а эта переменная остаётся, и собственно вопрос
возможно ли сделать так, что если закрыть вкладку тогда переменная тоже закроется, это же всё что можно сделать в индикаторе
это просто
удаление его с графика при удалении индикатора(с графика)
Спасибо!
Если на графике висит индикатор и если закрыть график, то у индикатора будет вызвана функция OnDeinit().
Если на графике висит индикатор и если закрыть график, то у индикатора будет вызвана функция OnDeinit().
Пожалуйста посмотрите код:
Такая проблема индикатор создаёт переменную "val". Когда я кидаю индикатор на график эта переменная создаётся, если же просто удалить индикатор с графика!! тогда и переменная удалится, а если закрыть график тогда переменная останется. Пожалуйста исправьте код если это возможно, чтобы даже при закрытии графика переменная val удалялась Спасибо
#property version "1.00" #property strict #property indicator_chart_window input string mus="ok.wav"; static bool bPlayS=true; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { if(GlobalVariableCheck("val")==True){ if(Period()==1440 ) PlaySound("alert.wav");bPlayS=False; if(Period()==240 ) PlaySound("alert.wav");bPlayS=False; if(Period()==60 ) PlaySound("alert.wav");bPlayS=False; if(Period()==30 ) PlaySound("alert.wav");bPlayS=False; if(Period()==15 ) PlaySound("alert.wav");bPlayS=False; if(Period()==5 ) PlaySound("alert.wav");bPlayS=False; if(Period()==1 ) PlaySound("alert.wav");bPlayS=False; } if(GlobalVariableCheck("val")==False) {PlaySound(mus);GlobalVariableSet("val",1);} //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { if(reason==1) GlobalVariableDel("val"); Comment("\n Total: ",GlobalVariablesTotal()); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- Comment("\n Total: ",GlobalVariablesTotal()); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Ребят если возможно такое исправьте пожалуйста
Обратите внимание на эту таблицу
REASON_PROGRAM |
0 |
Эксперт прекратил свою работу, вызвав функцию ExpertRemove() |
REASON_REMOVE |
1 |
Программа удалена с графика |
REASON_RECOMPILE |
2 |
Программа перекомпилирована |
REASON_CHARTCHANGE |
3 |
Символ или период графика был изменен |
REASON_CHARTCLOSE |
4 |
График закрыт |
REASON_PARAMETERS |
5 |
Входные параметры были изменены пользователем |
REASON_ACCOUNT |
6 |
Активирован другой счет либо произошло переподключение к торговому серверу вследствие изменения настроек счета |
REASON_TEMPLATE |
7 |
Применен другой шаблон графика |
REASON_INITFAILED |
8 |
Обработчик OnInit() вернул ненулевое значение |
REASON_CLOSE |
9 |
Терминал был закрыт |
и на эту строку вашего кода
if(reason==1) GlobalVariableDel("val");
Но, если я правильно помню начало вашей проблемы, то лучше условие поставить так
if(reason != REASON_CHARTCHANGE) GlobalVariableDel("val");
Обратите внимание на эту таблицу
REASON_PROGRAM |
0 |
Эксперт прекратил свою работу, вызвав функцию ExpertRemove() |
REASON_REMOVE |
1 |
Программа удалена с графика |
REASON_RECOMPILE |
2 |
Программа перекомпилирована |
REASON_CHARTCHANGE |
3 |
Символ или период графика был изменен |
REASON_CHARTCLOSE |
4 |
График закрыт |
REASON_PARAMETERS |
5 |
Входные параметры были изменены пользователем |
REASON_ACCOUNT |
6 |
Активирован другой счет либо произошло переподключение к торговому серверу вследствие изменения настроек счета |
REASON_TEMPLATE |
7 |
Применен другой шаблон графика |
REASON_INITFAILED |
8 |
Обработчик OnInit() вернул ненулевое значение |
REASON_CLOSE |
9 |
Терминал был закрыт |
и на эту строку вашего кода
Но, если я правильно помню начало вашей проблемы, то лучше условие поставить так
спасибо за ответ, а можно ли как то использовать 1 4 9
как то так, поправьте пожалуйста
if(reason==1 && 4 && 9) GlobalVariableDel("val");
спасибо за ответ, а можно ли как то использовать 1 4 9
как то так, поправьте пожалуйста
if(reason==1 && 4 && 9) GlobalVariableDel("val");
if(reason==1 || reason==4 || reason==9) GlobalVariableDel("val"); // это ИЛИ

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования