Обсуждение статьи "Основы программирования на MQL5: Глобальные переменные терминала" - страница 3

 
Dmitry Fedoseev:
Решаемо через префиксы глобальных переменных.
через префиксы решаемо, но это некрасивое решение :-( возникает вопрос генерации уникальных префиксов и в обзоре переменных по F3 выходит треш и угар..действительно-же нехватает переменным пространст имён. А то придётся префикс генерировать из DC,аккаунта,счёта,чарта..и помниться что длина имени ограниченна, особо с префиксами не разгуляться :-)
 
"Возможно, глобальные переменные пропадут при резком обесточивании компьютера."

У меня глобальные переменные пропали после закрытия терминала мт5 bild 2361.  При том на 2-х разных терминалах МТ5. GlobalVariablesFlush() выполняется. Бред. Терминалы запускаются с ключом   /portable, может в этом дело?

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

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Konstantin Efremov:

У меня глобальные переменные пропали после закрытия терминала мт5 bild 2361.  При том на 2-х разных терминалах МТ5. GlobalVariablesFlush() выполняется. Бред. Терминалы запускаются с ключом   /portable, может в этом дело?

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

В терминале или в тестере? В МТ5 есть разница.

 
Dmitry Fedoseev:

В терминале или в тестере? В МТ5 есть разница.

В терминале.

В общем решил проблему так. В классе, который занимается авто оптимизацией для советника, сделал, кроме создания глобальных переменных, еще и запись идентичных данных в файлы по каждой валютной паре (предварительно файлы каждый раз удаляются при старте класса, так как класс вызывается только для пересчета, значит в любом случае данные нужно обновить). Файлы взял обычные текстовые, в названиях файлов кодируется конкретный экземпляр советника. В советнике при инициализации вызывается функция чтения из файлов данных оптимизации и создание или обновление глобальных переменных

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

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...