Ошибки, баги, вопросы - страница 2859
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это и есть основная загвоздка задачи.
набросал как вижу... создал 2 ЕА с таким кодом:
и один управляющий ЕА, который работает в таймере ( 5 сек )
проверил, все работает, единственное или не разобрался или не получилось через GlobalVariableSetOnCondition() сделать запись в глобальные переменные
Это и есть основная загвоздка задачи.
GlobalVariableSetOnCondition — все, что нужно для решения задачи.
Работа разрешена только тогда, когда GlobalVariableSetOnCondition вернул true.
После успешной инициализации и освобождения ресурсов возвращаем гл. переменную в исходное состояние, и другой советник стартует.
В ДеИните — безусловное удаление переменной, чтобы не нарваться на старт терминала без советников вообще (если предыдущая загрузка завершилась некорректно).
Спасибо за рекомендации. Посмотрю в сторону GlobalVariableSetOnCondition.
Это правильное поведение компилятора? Вроде, A::i не создана на момент вызова метода A::f(), в котором идет обращение к A::i.
Что подразумевается под словом "создана" ?
static - всего лишь способ для создания граблей скрыть глобальную переменную или функцию, ограничив видимость скопом функции или класса
Память под глобальную переменную существует всегда.
И да, для глобальных переменных очень важен порядок инициализации (в смысле, избежать доступа к переменной до её инициализации)
В приведённом примере прокатило...
В приведённом примере прокатило...
Менять в этом месте будете компилятор? Лично я бы хотел, чтобы все осталось так, как есть.
Менять в этом месте будете компилятор? Лично я бы хотел, чтобы все осталось так, как есть.
Поведение менять не планируем.
Но есть отложенная задача по обнаружению ошибок доступа к глобальным переменным (до инициализации).
Если фичу реализуем, то при компиляции приведённого кода получите предупреждение: для инициализации A::i используется функция A::f(), в которой осуществляется доступ к инициализируемой переменной A::i.
Если фичу реализуем, то при компиляции приведённого кода получите предупреждение: для инициализации A::i используется функция A::f(), в которой осуществляется доступ к инициализируемой переменной A::i.
Спасибо!
Поведение менять не планируем
Тогда это противоречит Вашей же концепции, что переменная считается объявленной с момента завершения объявления. Зачем тогда ее придумываеть вообще было? Если в одном случае так, а в другом - по другому
В хорошем языке - единые правила, а не наоборотТогда это противоречит Вашей же концепции, что переменная считается объявленной с момента завершения объявления. Зачем тогда ее придумываеть вообще было? Если в одном случае так, а в другом - по другому
В хорошем языке - единые правила, а не наоборотЯ вооще профан, но до такого (int i = i) я бы и с перепою не додумался....... 8(