Добрый день.
Как известно Icustom возвращает хендл пользовательского индикатора.
Для IMA необходимо получить Хэндл чтобы отработать усреднение.
Но в тестере стратегий при вызове iCustom происходит рекурсия бесконечная ( до заполнения стека вызов ) Oninit.
Как я не пытался определить что это другая копия что бы сделать выход не получается. StackOverflow.
В терминале такого не происходит.
Что я делаю не так и где можно забить костыль?
Если вызов индикатора происходит из самого себя, то да, получаем рекурсию. Выход из рекурсии - дело непростое, тут нет универсальных решений, нужно просмотреть весь код. На вскидку: нужно передавать вызванному индикатору флаг, указывающий на то, что этот индикатор уже является ведомым. А потому этот индикатор уже не должен приводить к созданию следующей копии. Это самое простое, и не факт, что правильное в данной ситуации, решение.
Почему в терминале нет переполнения стека? Да просто потому, что там тики приходят не так часто, как в тестере. Если подождать в терминале достаточное количество времени (сравнимое по количеству тиков в тестере), то также получите переполнение.
Добрый день.
Как известно Icustom возвращает хендл пользовательского индикатора.
Для IMA необходимо получить Хэндл чтобы отработать усреднение.
Но в тестере стратегий при вызове iCustom происходит рекурсия бесконечная ( до заполнения стека вызов ) Oninit.
Как я не пытался определить что это другая копия что бы сделать выход не получается. StackOverflow.
В терминале такого не происходит.
Что я делаю не так и где можно забить костыль?
усредняйте самодеятельно :-) то есть самостоятельно
кроме шуток - фича индикаторов "считать по хендлу другого" устарела..исторически осталась только в iMa и вы не можете сделать подобное сами.
---
практически, на сейчас вот: если приведённый вами фрагмент не в OnInit, то IndicatorRelease необходим
усредняйте самодеятельно :-) то есть самостоятельно
кроме шуток - фича индикаторов "считать по хендлу другого" устарела..исторически осталась только в iMa и вы не можете сделать подобное сами.
---
практически, на сейчас вот: если приведённый вами фрагмент не в OnInit, то IndicatorRelease необходим
Всем спасибо. Плюнул на это дело с рекурсиями хотя провозился целый день почти.
Был выход. Но он сложный.
Вставил код скользяшки и забыл про проблему. Причесал и код готов.
Правда толи день такой был вчера то ли что-то не понятное. Не клеилось в общем.
Формула простого усреднения на известном результате тоже выбила из колеи на пол часа.
Новое значение = (Предыдущее значение - Последний элемент + Новый элемент) / Количество элементов
Правильная формула
Новое значение = (Предыдущее значение * Количество элементов - Последний элемент + Новый элемент) / Количество элементов
Но с рекурсией все равно интересно. И не понятно зачем такие сложности. Я получил хэндл через окно. Но неужели нельзя было написать простую функцию IndicatorGetMyHandle.
Добрый день.
Как известно Icustom возвращает хендл пользовательского индикатора.
Для IMA необходимо получить Хэндл чтобы отработать усреднение.
Но в тестере стратегий при вызове iCustom происходит рекурсия бесконечная ( до заполнения стека вызов ) Oninit.
Как я не пытался определить что это другая копия что бы сделать выход не получается. StackOverflow.
В терминале такого не происходит.
Что я делаю не так и где можно забить костыль?
Всем спасибо. Плюнул на это дело с рекурсиями хотя провозился целый день почти.
Был выход. Но он сложный.
Вставил код скользяшки и забыл про проблему. Причесал и код готов.
Правда толи день такой был вчера то ли что-то не понятное. Не клеилось в общем.
Формула простого усреднения на известном результате тоже выбила из колеи на пол часа.
Новое значение = (Предыдущее значение - Последний элемент + Новый элемент) / Количество элементов
Правильная формула
Новое значение = (Предыдущее значение * Количество элементов - Последний элемент + Новый элемент) / Количество элементов
Но с рекурсией все равно интересно. И не понятно зачем такие сложности. Я получил хэндл через окно. Но неужели нельзя было написать простую функцию IndicatorGetMyHandle.
да, предыдущее значение же было поделено на количество элементов))) Тоже парился))))
кроме шуток - фича индикаторов "считать по хендлу другого" устарела..исторически осталась только в iMa и вы не можете сделать подобное сами.
И давно это случилось? Разве iCustom() и IndicatorCreate() не позволяют посчитать индикатор на данных из другого индикатора по его хендлу? 🤔
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
Как известно Icustom возвращает хендл пользовательского индикатора.
Для IMA необходимо получить Хэндл чтобы отработать усреднение.
Но в тестере стратегий при вызове iCustom происходит рекурсия бесконечная ( до заполнения стека вызов ) Oninit.
Как я не пытался определить что это другая копия что бы сделать выход не получается. StackOverflow.
В терминале такого не происходит.
Что я делаю не так и где можно забить костыль?