Глобальные переменные описанные модификатором extern описывают параметры запуска экспертов и индикаторов т.е. переменные хранятся не в модуле а в контексте чарта (доступных для пользователей). Во всех остальных случаях этот модификатор игнорируется и на этапе загрузки переменные создаются как статические.
В текущей версии языка MQL4 глобальные переменные всегда статические.
Смысл библиотек такой же как и в любых других языках - набор функций.
В текущей версии языка MQL4 глобальные переменные всегда статические.
Смысл библиотек такой же как и в любых других языках - набор функций.
т.е. способа получить значения параметров эксперта из библиотек не существует?
т.е. способа получить значения параметров эксперта из библиотек не существует?
через функции.
в эксперте:
#import "mylib.ex4" extern int param1, param2; int init() { SetParam1(param1); SetParam2(param1); return(0); } int start() { Print("Someproc returns ",SomeProc()); }
библиотека
int param1,param2; void SetParam1(int value) { param1=value; } void SetParam2(int value) { param2=value; } int SomeProc() { return(param1*param2); }
Спасибо за ответ. У меня так и сделано. Хотя решение не очень красивое. Если я включаю в эксперт несколько библиотек, например, обработку ошибок, отладку, установку ордеров и т.д., то я в каждой библиотеке должен инициализировать переменные. В планах нет все-таки разрешить использовать внешние переменные как они и должны быть использованы, т.е. на стадии линковщика?
К сожалению, прямой доступ к внешним переменным из других библиотек мы не будем открывать.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Правильно ли я понял, что объявления extern переменых отрабатывают правильно только в основном файле-модуле эксперта? Включения extern переменных в остальные файлы отрабатывают неправильно.
Как только управление передается в неосновной модуль, независимо от того, объявлен он как библиотека (property library) или нет, используются значения внешних переменных по умолчанию, а не те, которые установлены вручную в диалоге свойств эксперта в закладке пераметров. Какой смысл было тогда заводить библиотеки если они не могут правильно использовать общие глобальные параметры эксперта? Спасибо.
С уважением,