Ошибки, баги, вопросы - страница 1524
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Любой индикатор использует хотя бы один цикл.
Цикл без проверки IsStopped делает этот цикл потенциально бесконечным. Потому что ценовых данных в массиве может быть миллион и каждая итерация может быть написана неоптимально.
Программист, который сознательно устраивает бесконечный цикл, не должен апеллировать к какой-либо недосказанности в документации, тем более, что в документации явно написано
В одном потоке с индикаторами также последовательно выполняются остальные действия по данному символу - обработка тиков и синхронизация истории. Это означает, что если в индикаторе выполняется бесконечное действие, все остальные события по его символу никогда не выполнятся.
Сознательный программист сразу поймёт, что в данном случае ответственность за эффективность индикатора несёт именно он, а не документация. Тем более, что на эту тему уже было много обсуждений и была написана не одна статья
Сознательный программист сразу поймёт, что в данном случае ответственность за эффективность индикатора несёт именно он, а не документация. Тем более, что на эту тему уже было много обсуждений и была написана не одна статья
Сказали, что при закрытии терминала программа принудительно завершается через 3 секунды уже сейчас. Это так сейчас работает и будет работать. Возвращать не хотят принудительное завершение при удалении программы с графика без завершения работы терминала.
Это все правильно, каюсь что у меня не было проверки IsStopped и поэтому были проблемы с прерыванием построения сложных индикаторов исключительно по моей вине. Но, с другой стороны, я привык к тому, что работа программы и её документация должны совпадать.
В документации нельзя учесть все нюансы. Тем более, когда речь идёт о секундах, гигагерцах, мегабайтах, величинах хоть и измеримых, но сильно зависящих от окружения
Мы стараемся заполнять пробелы в документации (хотя втайне надеемся на презумпцию сознательности)
Гм, я высказался о четвёрке - она вроде как сейчас корректно все завершает и закрывает, а раньше теряла чарты с советниками.
В четвёрке распараллелили процессы закрытия каждого чарта. Поэтому смогли увеличить таймаут каждому.
Раньше чарты запоминались последовательно один за другим, и каждому давали одинаковые таймауты. Чем больше чартов и на них тормозных экспертов, тем дольше был процесс закрытия.
В четвёрке распараллелили процессы закрытия каждого чарта. Поэтому смогли увеличить таймаут каждому.
Раньше чарты запоминались последовательно один за другим, и каждому давали одинаковые таймауты. Чем больше чартов и на них тормозных экспертов, тем дольше был процесс закрытия.
Примерно понял.
Тормозные не тормозные, многое зависит от железа и задач, которые выполняет эксперт, и нужно делать скидку на то, что программы часто пишут не профессиональные программисты - именно с этой целью тут и присутствует язык программирования, я так думаю.
MT4. Хочу ещё раз обратить внимание на особенности инициализации глобальных переменных программы.
Глобальные переменные инициализируются один раз при установки программы на график или перекомпиляции кода.
Если вы захотите поменять таймфрейм, инструмент или входные параметры , то глобальные переменные не переинициализируются (например не обнуляются) а сохраняют свои значения, которые приобрели при работе с предыдущими таймфреймами , инструментами или входными параметрами.
Получается если вы программно не обнулили все глобальные переменные , то код при смене ТФ, инстр-та или входных параметров , будет работать с предыдущими значениями, т.е неправильно.
Разумно ли это? Не лучше ли сделать как в тестере стратегий? Там глобальные переменные переинициализируются при каждой смене ТФ, инструмента или входных параметров.
MT4. Хочу ещё раз обратить внимание на особенности инициализации глобальных переменных программы.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Slawa, 2016.02.24 07:34
В очередь. Заявка всего лишь двухчасовой давности.
Вообще, такие вопросы надо бы задавать на форуме. Так как многих может коснуться. Позволю себе Вас процитировать и тут же отвечу
Это запланированное поведение. Боле того, явно описано в документации
Выгрузка и загрузка предполагают полную переинициализацию всего.
В пятёрке, как Вы правильно заметили, ситуация аналогичная
Правда, в четвёрке так сложилось исторически, и при переходе на новый MQL4 мы сначала поменяли это поведение (чтобы было, как у экспертов, то есть, ожидаемое Вами поведение). Но возникло множество вопросов с прежними индикаторами, которые заложились именно на такую, прежнюю, инициализацию. Вынуждены были вернуть
В пятёрке так сложилось сразу из-за архитектуры. При смене параметров старый индикатор с прежними параметрами уничтожается, а новый индикатор с изменёнными параметрами создаётся.
Спасибо. Вывод - цитата из документации: "... предопределенная функция OnInit(), назначение которой состоит в правильной инициализации всех глобальных и статических переменных программы."
Стало быть обнуляй или устанавливай по умолчанию все глобальные переменные или массивы в функции OnInit().
1. Создаю массив вида:
CArrayString list[5];2. Пытаюсь вызвать список методов через <Ctrl+Space>
list[0].Список методов не появляется. Так и должно быть?