Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 17
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А раньше все работало? Не могу понять, где у тебя объявляется переменная i для:
В глобальных переменных, я один раз инициализирую i и потом пользую её во всех циклах, так удобнее и проще ...
Так и должно быть, что при изменении параметров индикатора, который запущен уже и работает, методом двойного клика на нем,
не происходит обновление статик переменных, в виду чего он, гад индикатор, не перерисовывается ???
Статические переменные сохраняют свое значение при переинициализациии программы. Значения не сохраняются только при удалении программы с чарта и новом ее присоединении. Чтобы статические переменные сбрасывались при переинициализации, я использую такую конструкцию:
В таком виде работает ...
В таком виде не работает
Во втором случае область видимости массива, объявленного в функции - функция.
В коде
вы уверены что инициализируете все элементы массивов значениями txt и et? Вероятно последние 2 присваивания должны стоять перед циклом и цикл цикл должен быть построен иначе. Или это такая задумка?
Статические переменные сохраняют свое значение при переинициализациии программы. Значения не сохраняются только при удалении программы с чарта и новом ее присоединении. Чтобы статические переменные сбрасывались при переинициализации, я использую такую конструкцию:
и что теперь по библиотеке лазить и переписывать все? бредово както, ведь в 509 все было нормально, а тут ......
Во втором случае область видимости массива, объявленного в функции - функция.
В коде
вы уверены что инициализируете все элементы массивов значениями txt и et? Вероятно последние 2 присваивания должны стоять перед циклом. Или это такая задумка?
Сначала происходит смещение текста на один уровень в цикле, затем нулевым значениям присваивается новый текст...
Данные массивы используются только в в функциях которые я представил выше ...
Раньше в 509 и более ранних билдах все работало в обоих случаях ... Сейчас только в первом ...
и что теперь по библиотеке лазить и переписывать все? бредово както, ведь в 509 все было нормально, а тут ......
Просто луче все переменные, которые планируется использовать в коде, инициализировать в самом начале кода ...
Это упрощает работу, и дает возможность видеть и правильно обнулять переменные при старте программы и дальнейшем ее использовании ...
Так и должно быть, что при изменении параметров индикатора, который запущен уже и работает, методом двойного клика на нем,
не происходит обновление статик переменных, в виду чего он, гад индикатор, не перерисовывается ???
Насколько я помню, так было всегда (в 509 билде точно). Это фича.
Заметил странную вещь на разных компах один с ХР другой с W 7
При инициализации массива внутри функции, массив не заполняется весь, только 0 значение ...
При инициализации массива на глобальном уровне за пределами всех функций, массивы заполняются полностью как и должно быть ...
Про это тоже тысячу раз говорили - инициализируйте массивы и переменные явно, не ждите "небесного благословения".
В случае с локальным объявлением вам просто везет и в них не попадает мусор. Но я бы на это не рассчитывал.
Поправьте если не так понял.
Использую в индикаторе библиотечную функцию, в данной функции происходит объявление неких static переменной, которые участвуют в расчете индикаторного массива.
Если я желаю изменить параметры индикатора, то, что бы индикатор рассчитывался верно (в виду зависимости от static переменных),
должен передать в библиотечную функцию флаг отвечающий за переинициализацию (придется расширить входные параметры каждой функции, что имеет static переменные),
в теле произвести обнуление значений static переменных, и не забыть снять флаг перед завершением всего расчета.
На много проще было если бы static переменные имели какой-то параметр, задаваемый при их объявлении, отвечающий за то, будет или нет обнуляться значение этих переменных при переинициализации.
Обратите внимание, что новый компилятор и новая среда исполнения в разы жестче контролируют качество кода. Много MQL4 кода было написано сторонними разработчиками спустя рукава и теперь эти огрехи будут сразу видны.