Ошибки, баги, вопросы - страница 1667
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я, конечно, многого не понимаю, но почему-то думаю, что созданные разными "хозяевами" копии индикатора, хоть даже и с одинаковыми параметрами и наложенные на один и тот же график, будут иметь разные хэндлы. И они, в принципе, могут не знать, и не должны знать об уже существующей копии индикатора. При отрисовке они просто будут накладываться друг на друга.
Вполне допускаю, что я ошибаюсь. Но логика подсказывает, что должно быть так, как написано в предыдущем абзаце.
Я конечно не разработчик из MQ, но насколько мне объясняли этот процесс, в пятерке как раз сделано эффективное кэширование индюков, поэтому "одинаковый" индюк всегда будет только один, а несколько "хозяев" получат ссылку на него. Может быть хэндлы и будут отличаться - я не проверял - но внутри это будет одна и та же сущность. Никто и не говорил о том, что "они должны знать об уже существующей копии" - пожалуйста не домысливайте. Совершенно точно, никто кроме "хозяина" не знает свои индикаторы, а для индикатора поддерживается счетчик ссылок на него из разных "хозяев", но он не знает хозяев.
Как показывает практика, логика у разных людей - разная. Например, очень часто моя логика не совпадает с логикой MQ, но здесь я просто рассказываю то, что слышал от них.
Я конечно не разработчик из MQ, но насколько мне объясняли этот процесс, в пятерке как раз сделано эффективное кэширование индюков, поэтому "одинаковый" индюк всегда будет только один, а несколько "хозяев" получат ссылку на него. Может быть хэндлы и будут отличаться - я не проверял - но внутри это будет одна и та же сущность. Никто и не говорил о том, что "они должны знать об уже существующей копии" - пожалуйста не домысливайте. Совершенно точно, никто кроме "хозяина" не знает свои индикаторы, а для индикатора поддерживается счетчик ссылок на него из разных "хозяев", но он не знает хозяев.
Как показывает практика, логика у разных людей - разная. Например, очень часто моя логика не совпадает с логикой MQ, но здесь я просто рассказываю то, что слышал от них.
Все функции типа iMA, iAC, iMACD, iIchimoku и т.п., создают в глобальном кеше клиентского терминала копию соответствующего технического индикатора. Если копия индикатора с этими параметрами уже существует, то новая копия не создается, а увеличивается счетчик ссылок на данную копию.
Удалось составить проверочный скрипт близкий к исходной программе с ошибкой при выполнении
Результат: invalid function pointer call in 'Script2.mq5'
build 1405. Сама по себе эта ошибка осталась - переместившись в другую часть программы - разберусь позже
Но появились новые, которых раньше не было
Результат: invalid EX5 file (8)Как сделать, чтобы в отладке по Shift+F9 были видны элементы массива?
Фактически в 99% случаев вызов IndicatorRelease является логической ошибкой программиста.
Создание индикатора является одной из самых дорогостоящих операций, которые запускают очень глубокие механизмы их расчета. Попытка закрыть хендл индикатора является тоже очень дорогой операцией, если думать о реальных глубинных процессах ее реализации. Частое создание и закрытие индикаторов говорит о том, что разработчик вообще не понимает сути операций.
Это же очень просто понять.
Правильно ли я понимаю, что при использовании iCustom вместо IndicatorCreate пользователь перекладывает ответственность за IndicatorRelease на универсальное (поэтому не оптимальное) решение разработчиков?
В котором созданные индикаторы хранятся некоторые время, пока к ним с определенной частотой идет обращение. Если обращения какое-то время нет, то идет принудительное IndicatorRelease. Верно?
Т.е. iCustom оптимальное использовать с точки зрения золотой середины между сложностью реализации и производительностью. Но если хочется максимальной скорости, то лучше постараться сделать все через IndicatorCreate, создав свой более быстрый (не универсальный) алгоритм хранилища индикаторов, зная особенности своего использования индикаторов.
Правильно ли я понял?
Правильно ли я понимаю, что при использовании iCustom вместо IndicatorCreate пользователь перекладывает ответственность за IndicatorRelease на универсальное (поэтому не оптимальное) решение разработчиков?
В котором созданные индикаторы хранятся некоторые время, пока к ним с определенной частотой идет обращение. Если обращения какое-то время нет, то идет принудительное IndicatorRelease. Верно?
Т.е. iCustom оптимальное использовать с точки зрения золотой середины между сложностью реализации и производительностью. Но если хочется максимальной скорости, то лучше постараться сделать все через IndicatorCreate, создав свой более быстрый (не универсальный) алгоритм хранилища индикаторов, зная особенности своего использования индикаторов.
Правильно ли я понял?
Нет, неправильно.
Обе функции совершенно равнозначны. И та, и другая функция возвращает хэндл индикатора
Нет, неправильно.
Обе функции совершенно равнозначны. И та, и другая функция возвращает хэндл индикатора
IndicatorRelease после iCustom делать надо?
В принципе получается, что вполне возможно MT4-советники запускать в MT5. Для тех, кто не использует внутри другие индикаторы - совсем просто. Использует - повозиться с созданием аналога хранилища MT4-iCustom. Вопросы неподготовки данных тоже решить вполне возможно.
Написать такой переходник и любой MT4-индикатор будет благополучно запускаться в MT5. Но тогда лишится работы Николай Косицын... не, лучше не буду.
IndicatorRelease после iCustom делать надо?
В принципе получается, что вполне возможно MT4-советники запускать в MT5. Для тех, кто не использует внутри другие индикаторы - совсем просто. Использует - повозиться с созданием аналога хранилища MT4-iCustom. Вопросы неподготовки данных тоже решить вполне возможно.
Написать такой переходник и любой MT4-индикатор будет благополучно запускаться в MT5. Но тогда лишится работы Николай Косицын... не, лучше не буду.