Не вижу (как всегда пока не спрошу) чтоб кто-то поднимал тему.
Интересует какие именно процессы запускаются при вызове в мт4.
Например, в мт5 это будет хэндл индикатора, т.е. индикатор будет работать (пересчитываться и все дела) пока его не удалят IndicatorRelease. Причем, сталкивалась с тем, что работать то с одним индикатором то с другим, постоянно их удаляя - плохая идея т.к. в тестере не работает IndicatorRelease что ведет неминуемой "гибели" (виснякам). В процессе работы можно достать буффера.
В мт4 не поняла - это индикатор добавляется и потом пересчитывается (живет своей жизнью) или, склоняюсь ко второму, индикатор просто один раз считается, выдает значение и больше не занимает память и процесс?
Еще проще говоря - если захочется совом перебрать разные настройки индикатора, с целью выбора лучших, т.е. очень много вызовов iCustom сделать чтоб найти лучшее решение, то потом индюки будут подвешивать советник?
Впрочем, скоро пойду еще эксперимент сделаю
Индикатор рассчитывается и выгружается при каждом вызове (iCustom, iМА, другие штатные, неважно). Но это если правильно передавать параметры. Если же передать вводные неправильно, то индикаторы с прошлых вызовов зависают в памяти и жрут её.
Индикатор рассчитывается и выгружается при каждом вызове (iCustom, iМА, другие штатные, неважно). Но это если правильно передавать параметры. Если же передать вводные неправильно, то индикаторы с прошлых вызовов зависают в памяти и жрут её.
Спасибо большое.
А неправильно это как? critical error нужен или INIT_FAILED, или еще чего-то.
Спасибо большое.
А неправильно это как? critical error нужен или INIT_FAILED, или еще чего-то.
Нет, просто передайте больше или меньше параметров, чем прописано в индикаторе, перепутайте их порядок, или тип, передав строковое значение вместо числового, например.
Нет, просто передайте больше или меньше параметров, чем прописано в индикаторе, перепутайте их порядок, или тип, передав строковое значение вместо числового, например.
понятно, спасибо. особенно за подводные камни, спасибо
Индикатор рассчитывается и выгружается при каждом вызове (iCustom, iМА, другие штатные, неважно). Но это если правильно передавать параметры. Если же передать вводные неправильно, то индикаторы с прошлых вызовов зависают в памяти и жрут её.
Вряд ли это так. Можете выводить в лог что-нть из инита, и что-нть из деинита для проверки. Скорее всего экземпляр индикатора с конкретным набором параметров остается в памяти какое-то время и выгружается только по предопределенному таймауту или когда становится туго с памятью.
Вряд ли это так. Можете выводить в лог что-нть из инита, и что-нть из деинита. Скорее всего экземпляр индикатора с конкретным набором параметров остается в памяти какое-то время и выгружается только по предопределенному таймауту или когда становится туго с памятью.
Ну да, может и не моментально выгружается, но выгружается, а вот если что-то пошло не так, то индикатор не выгрузится до перезагрузки советника и все последующие копии тоже останутся в памяти. По крайней мере, так было в билдах 700-900, да и до 600-го тоже.
Это было легко заметить при тестировании советника с индикатором в отдельном подокне графика, когда после теста открываешь график, а там всё белое от открывшихся копий окон индикатора. Именно из-за неправильно переданных параметров при вызове iCustom.
Не знаю, как с этим сейчас, проверять нет времени.
PS: В общем, проверил, всё так же, советник что-то от балды торгует, а индикаторы накапливаются от каждого вызова, до предела, дозволенного терминалом (отжирает примерно 250 Мб ОЗУ), потом тест зависает.
Индикатор рассчитывается и выгружается при каждом вызове (iCustom, iМА, другие штатные, неважно). Но это если правильно передавать параметры. Если же передать вводные неправильно, то индикаторы с прошлых вызовов зависают в памяти и жрут её.
Какой бред!
в мт4 только первый вызов индикатора (любого) жрёт ресурсы, все последующий вызовы того же индикатора с теми же параметрами, ресурсов на расчёт не тратят (можно менять только сдвиг и используемый буфер) - тоесть вызванный индикатор и все его буферы висят в памяти до конца выполнения программы
Что такое uninit reason 9? При вызове iCustom.
Как понимаю, гугл не в моде - https://docs.mql4.com/ru/constants/namedconstants/uninit

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не вижу (как всегда пока не спрошу) чтоб кто-то поднимал тему.
Интересует какие именно процессы запускаются при вызове в мт4.
Например, в мт5 это будет хэндл индикатора, т.е. индикатор будет работать (пересчитываться и все дела) пока его не удалят IndicatorRelease. Причем, сталкивалась с тем, что работать то с одним индикатором то с другим, постоянно их удаляя - плохая идея т.к. в тестере не работает IndicatorRelease что ведет неминуемой "гибели" (виснякам). В процессе работы можно достать буффера.
В мт4 не поняла - это индикатор добавляется и потом пересчитывается (живет своей жизнью) или, склоняюсь ко второму, индикатор просто один раз считается, выдает значение и больше не занимает память и процесс?
Еще проще говоря - если захочется совом перебрать разные настройки индикатора, с целью выбора лучших, т.е. очень много вызовов iCustom сделать чтоб найти лучшее решение, то потом индюки будут подвешивать советник?
Впрочем, скоро пойду еще эксперимент сделаю