Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 427
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А вы почитайте сколько раз инициализируется статическая переменная. И вопрос сам отпадёт за его несуразностью ;)
Тогда как понять это: Локальные переменные, объявленные с ключевым словом static, сохраняют свои значения в течение всего времени существования функции. При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове. Разве переменная, объявленная в пользовательской функции не является локальной?
По второму вопросу,
если первый тик не поймает,поймает второй.
Тогда как понять это: Локальные переменные, объявленные с ключевым словом static, сохраняют свои значения в течение всего времени существования функции. При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове. Разве переменная, объявленная в пользовательской функции не является локальной?
Возвращает время открытия бара. Оно будет одним и тем же на протяжении всего бара.
Вот здесь понял. Спасибо.
Модификатор static делает её статической, и она хранится уже в памяти для статических переменных, а не локальных.
А вот здесь не понял. По-моему, не важно, где хранится, по коду при каждом обращении к функции мы сбрасываем значение переменной до нуля. Зачем?
А вот здесь не понял. По-моему, не важно, где хранится, по коду при каждом обращении к функции мы сбрасываем значение переменной до нуля. Зачем?
Для первого запуска - при объявлении. Далее уже вы сами контролируете её содержимое.
Всё-таки по-моему, это не так: код каждый раз читается построчно, и каждый раз натыкается на ноль, а при первом запуске даже если и нет инициализации, переменная приняла бы нулевое значение. Выходит, строка static datetime New_Time=0; заставляет программу делать ненужную работу.
Всё-таки по-моему, это не так: код каждый раз читается построчно, и каждый раз натыкается на ноль, а при первом запуске даже если и нет инициализации, переменная приняла бы нулевое значение. Выходит, строка static datetime New_Time=0; заставляет программу делать ненужную работу.
Вам говорят "нет", вы говорите "да"...
Обижаться не надо. Но видно программисты по-другому читают текст. Я всегда считал, что если в программе написано "приравняй нулю", комп обязан приравнять нулю, не зависимо, при запуске или при повторном обращении к строке кода. А за доказательством излишности инициализации нулём не надо ходить ни в какой журнал, достаточно просто её убрать: static datetime New_Time; дает абсолютно те же результаты, что и static datetime New_Time=0; Не знаю, на сколько это ускоряет работу программы, допускаю, что совсем не существенно, но всё же убирается "лишнее телодвижение".