Ошибки, баги, вопросы - страница 3518
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть способ объявлять переменные только 1 раз внутри цикла for, чтобы при повторном выполнении цикла они не объявлялись заново?
static
Есть способ объявлять переменные только 1 раз внутри цикла for, чтобы при повторном выполнении цикла они не объявлялись заново?
как вариант: объекты объявить снаружи цикла, чтобы избегать лишних constructor/destructor? то есть на уровень выше цикла где используются
статики и глобалки - зло.
А объявления скаляров внутри циклов могут оптимизироваться компилятором. Если ему потребуется
То есть образно из "while(cond) { int i = 1; code follows }" компилятор может сотворить "int i ; while(cond) { i=1; code follows }" и самому этим заниматься - только вредить компилятору, себе и программе.
Пишите код ясно, объявляйте переменные там где они нужны, а низко-уровневую оптимизацию оставьте компилятору. Алгоритмы оптимизируйте(выбирайте лучшие), а не их реализацию.
static
Про static я забыл, потому что мне не совсем так хочется. For будет в любом случае, и внутри него 1 условие, которое может выполняться, а может не выполняться, и только в том случае, если оно выполняется, я бы хотел объявить переменные только 1 раз.
Может быть есть какой-нибудь интересный способ так сделать?
Про static я забыл, потому что мне не совсем так хочется. For будет в любом случае, и внутри него 1 условие, которое может выполняться, а может не выполняться, и только в том случае, если оно выполняется, я бы хотел объявить переменные только 1 раз.
Может быть есть какой-нибудь интересный способ так сделать?
Nikolai Semko #:
Существует ещё цикл с помощью рекурсивной функции
Очень интересно, спасибо, и я вспомнил, что уже видел это: https://www.mql5.com/ru/forum/1111/page3361#comment_48242594
А здесь пример применения: https://www.mql5.com/ru/code/25414
При наличии баров, выдает -1 в самом начале инициализации.
Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.
все таки iBarShift глючит.
При наличии баров, выдает -1 в самом начале инициализации.
Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.
Может, данные ещё не полностью подкачаны?
Может, данные ещё не полностью подкачаны?
Данные могут быть полностью закачаны, но если какой то таймфрейм открыт впервые, то iBarShift по любому вернёт -1 на первом вызове.
Пока не построятся бары нужного таймфрейма iBarShift будет возвращать -1
все таки iBarShift глючит.
При наличии баров, выдает -1 в самом начале инициализации.
Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.
Альтернативное решение работает с минутными барами ?
Альтернативное решение работает с минутными барами ?