Скачать MetaTrader 5

Просьба разработчикам, глобальные переменные

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
wladimir
1162
wladimir 2015.12.01 19:51 

Уважаемые разработчики,

в последних версиях терминала ( наверное с полгода уже )

была изменена переинициализация глобальных и статических переменных в индикаторах.

Этот вопрос уже поднимался ( отвечал мне stringo), было как то исправлено (помоему даже 2 раза ) и опять вернулись к старой проблеме.

Дело заключается в том, что на данный момент, переинициализация глобальных и статических переменных в индикаторах

происходит постоянно при смене периода графика, смене символа и в других подобных случаях.

С самого начала существования MQL4 такого небыло и переинициализация происходила как в экспертах.

После появлиния этой особенности приходилось пользоваться костылями, чтобы добиться решения какой-либо задачи, но это не всегда получается.

На данный момент не существует никакой возможности сохранить состояние переменной  в индикаторах при смене периода графика и в других подобных случаях.

Верните пожалуйста эту возможность - сильно не хватает!

Алексей Тарабанов
7279
Алексей Тарабанов 2015.12.01 20:20  
wlad:

Уважаемые разработчики,

в последних версиях терминала ( наверное с полгода уже )

была изменена переинициализация глобальных и статических переменных в индикаторах.

Этот вопрос уже поднимался ( отвечал мне stringo), было как то исправлено (помоему даже 2 раза ) и опять вернулись к старой проблеме.

Дело заключается в том, что на данный момент, переинициализация глобальных и статических переменных в индикаторах

происходит постоянно при смене периода графика, смене символа и в других подобных случаях.

С самого начала существования MQL4 такого небыло и переинициализация происходила как в экспертах.

После появлиния этой особенности приходилось пользоваться костылями, чтобы добиться решения какой-либо задачи, но это не всегда получается.

На данный момент не существует никакой возможности сохранить состояние переменной  в индикаторах при смене периода графика и в других подобных случаях.

Верните пожалуйста эту возможность - сильно не хватает!


Насчет переинициализации статических переменных можно подробнее? 
wladimir
1162
wladimir 2015.12.02 01:49  
tara:
Насчет переинициализации статических переменных можно подробнее? 

Переключаем период графика или меняем символ графика
При этом у экспертов сохраняются все значения глобальных и статических переменных, а у индикаторов все эти переменные переинициализируются начальными значениями, что не даёт возможности полноценно использовать свойства статических переменных
Alexey Viktorov
7769
Alexey Viktorov 2015.12.02 05:06  

А может ты просто не правильно понимаешь назначение глобальных и статических переменных?

Разве при смене символа или даже периода не должно быть нового запуска индикатора??? А как при перезагрузке МТ, тоже надо сохранять??? Так получится, что если надо пересчитать значения индикатора по новому периоду придётся снимать его с графика и ставить по-новой? Иначе будет пересчёт с какими-то оставшимися не нужными значениями.... Зачем это надо? Можешь доходчиво объяснить?

Slava
Модератор
6913
Slava 2015.12.02 05:45  
wlad:

Уважаемые разработчики,

в последних версиях терминала ( наверное с полгода уже )

была изменена переинициализация глобальных и статических переменных в индикаторах.

Этот вопрос уже поднимался ( отвечал мне stringo), было как то исправлено (помоему даже 2 раза ) и опять вернулись к старой проблеме.


Вы можете привести ссылку нашего диалога? Я не могу найти
wladimir
1162
wladimir 2015.12.02 05:55  
stringo:
Вы можете привести ссылку нашего диалога? Я не могу найти

к примеру здесь

https://www.mql5.com/ru/forum/148850/page18#897295

. ... Rick D. ... .
1176
. ... Rick D. ... . 2015.12.02 06:12  
AlexeyVik:

А может ты просто не правильно понимаешь назначение глобальных и статических переменных?

Разве при смене символа или даже периода не должно быть нового запуска индикатора??? А как при перезагрузке МТ, тоже надо сохранять??? Так получится, что если надо пересчитать значения индикатора по новому периоду придётся снимать его с графика и ставить по-новой? Иначе будет пересчёт с какими-то оставшимися не нужными значениями.... Зачем это надо? Можешь доходчиво объяснить?

Пример.
Индикатор грузит новости с сайта и запоминает время загрузки в глобальной переменной, для того чтобы произвести следующую загрузку новостей например через час.
При изменении символа или таймфрейма чарта глобальная переменная будет обнуляться и сайт с новостями будет постоянно грузиться. :)

Slava
Модератор
6913
Slava 2015.12.02 06:34  
wlad:

к примеру здесь

https://www.mql5.com/ru/forum/148850/page18#897295


Спасибо.

То исправление, о котором идёт речь, откатили уже 5 февраля 2014 года. То есть, оно прожило всего 2 недели.

Тогда откатили по той самой причине, чтобы осталось поведение индикаторов 509 билда (а в 509 билде инициализация-деинициализация работали именно так). Вот посмотрите ещё одну ссылку из той же темы

https://www.mql5.com/ru/forum/148850/page58#901460 В результате этого запроса и был сделан откат

И это поведение не полгода, а уже почти 2 года

Alexey Viktorov
7769
Alexey Viktorov 2015.12.02 06:34  
RickD:

Пример.
Индикатор грузит новости с сайта и запоминает время загрузки в глобальной переменной, для того чтобы произвести следующую загрузку новостей например через час.
При изменении символа или таймфрейма чарта глобальная переменная будет обнуляться и сайт с новостями будет постоянно грузиться. :)

Понятно. А не проще такие переменные засовывать в GV?

Может я чего-то не понимаю, но не получится так, что исправив это получим другую проблему? Тогда ведь придётся явно обнулять все переменные во всех индикаторах. Работа с новостными сайтами используется гораздо реже чем обычные индикаторы со статическими и глобальными переменными.

wladimir
1162
wladimir 2015.12.02 06:36  

Следующий пример:

Собираются данные ( к  примеру по совершенным сделкам ) в массив,

при просмотре на другом периоде все сбрасывается, не смешно.

Примеров может быть куча.

Для переинициализации существует функция OnInit() - этого достаточно, что бы там обнулить переменные.

Alexey Viktorov
7769
Alexey Viktorov 2015.12.02 06:45  
На мой взгляд, это всё частные случаи которые легко обрабатываются. Я вот не понимаю почему вы, вместо того чтобы решать такие пустяковые вопросы самостоятельно, требуете от разработчиков каких-то изменений которые могут затронуть интересы других пользователей? Одному надо массив сохранить, а другому обнулить... и кому должны угодить разработчики??? Может голосование провести? И не просто голосование, а с перечнем индикаторов в которых это надо и в которых это не надо???
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий