Вставьте хотя бы простую проверку - совпадение последних N элементов arrClose[][] с данными, которые видит тестер. Если они совпадют - значит косяк в Вашей реализации. Больше сказать пок аничего нельзя.
Честно, не совсем понял, с чем мне сравнить arrClose[][]? Это же цены закрытия по разным TimeFrames. Сравнить их с даными из iClose(), или не то?
Существует разница в способах расчётов.
...
А разве эта разница может повлиять на результаты, если расчет идет по ценам закрытия баров (на нулевом баре может и будет разница, а на остальных почему)?
Прочитал эту ветку. Заинтересовала цитата Рената:
"Но в тестере все по-другому. Там индикатор вызывается только в нужные моменты и между вызовами может пройти несколько баров/тиков".
Но совсем понял, это особенности того конкретно обсуждаемого эксперта, или сам тестер может пропустить несколько баров при расчёте индикатора?
И ещё момент, мне действительно нужны для расчёта индикаторов максимум последние 90 цен (баров), но я ведь не могу управлять числом закачиваемых баров через ArrayCopyRates, у неё нет параметра MaxBars.
Вообще, эта задача, как вижу, актуальна, и что всё же точнее - вносить код индикатора в эксперт, или вызывать его как "черный ящик" через iCustom? И в случае с iCustom, он всегда возвращает double, если индикатор не готов отдать это значение (поток занят и т.д.), что он вернёт? Сам пока не исследовал этот вопрос, может, уже кто-то проходил это? Поделитесь, пожалуйста, информацией.
Опять же, исходя из этой цитаты:
stringo 16.05.2007 15:23
Существует разница в способах расчётов.
Индикатор, прикреплённый к графику, рассчитывается с каждым
новым тиком.
Индикатор, вызываемый из эксперта, рассчитывается только при
его вызове функцией iCustom, и не факт, что эти вызовы будут производиться
каждый тик.
То, если эксперт пропускает N-е число тиков, но это всё в пределах
одного бара, то что страшного в пропуске нескольких тиков? Тиков
ведь в одном баре много.
-- идея/проверка/отладка --> для сокращения времени можно вызывать индикатор из эксперта как подпрограмму;
-- окончательная доводка до ума/подготовка рабочего варианта --> только встраивание кода индикатора в тело эксперта, чтобы он выполнялся строго в том же самом потоке, что и эксперт. Рисовать на графике при необходимости - из эксперта с помощью объектов.
З.Ы. А все-таки - почему иногда получалась суперпозиция числа пи и цен с графика (см. ветку)? И не противоречит ли это здравому смыслу?
Вообще, эта задача, как вижу, актуальна, и что всё же точнее - вносить код индикатора в эксперт, или вызывать его как "черный ящик" через iCustom? И в случае с iCustom, он всегда возвращает double, если индикатор не готов отдать это значение (поток занят и т.д.), что он вернёт? Сам пока не исследовал этот вопрос, может, уже кто-то проходил это? Поделитесь, пожалуйста, информацией.
Опять же, исходя из этой цитаты:
stringo 16.05.2007 15:23
Существует разница в способах расчётов.
Индикатор, прикреплённый к графику, рассчитывается с каждым
новым тиком.
Индикатор, вызываемый из эксперта, рассчитывается только при
его вызове функцией iCustom, и не факт, что эти вызовы будут производиться
каждый тик.
То, если эксперт пропускает N-е число тиков, но это всё в пределах
одного бара, то что страшного в пропуске нескольких тиков? Тиков
ведь в одном баре много.
Так-же нарвался разок на нопонятности при использовании iCustom а именно при управлении типами цен из эксперта, разбиратся небыло ни времени ни особого желания, просто перенес индикатор прямо в эксперт и проблема исчезла. Из за неоднократных нареканий на форуме на эту функцию (возможно и незаслуженных), решил от нее пока отказатся.
Так-же нарвался разок на нопонятности при использовании iCustom а именно при управлении типами цен из эксперта, разбиратся небыло ни времени ни особого желания, просто перенес индикатор прямо в эксперт и проблема исчезла. Из за неоднократных нареканий на форуме на эту функцию (возможно и незаслуженных), решил от нее пока отказатся.
Возможно, была попытка использовать в индикаторе тип int. Тогда - да, проблемы обеспечены.
Так-же нарвался разок на нопонятности при использовании iCustom а именно при управлении типами цен из эксперта, разбиратся небыло ни времени ни особого желания, просто перенес индикатор прямо в эксперт и проблема исчезла. Из за неоднократных нареканий на форуме на эту функцию (возможно и незаслуженных), решил от нее пока отказатся.
Возможно, была попытка использовать в индикаторе тип int. Тогда - да, проблемы обеспечены.
Rosh, а можно поподробнее про тип int в индикаторе? И связаные с этим проблемы. Честно, первый раз слышу, что использование int'a даёт какие-то проблемы с индикатором. Хочется узнать суть задачи, у меня int'ы стоят в индикаторах и экспертах сплошь и рядом.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В тестере накладываю на график индикаторы. Те же самые индикаторы, их значения, считаются в коде эксперта (код индикаторов мне открыт), это некий ряд на основе 30-90 значений последних цен закрытия.
Методика расчёта индикаторов в эксперте такая.
1. Качаются цены в массивы для всех нужных таймфреймов методом:
2. И потом индикатор считается как:
на основе переданных в массиве значений arrClose[shift+0][4], arrClose[shift+1][4], arrClose[shift+2][4] и т.д.
Нулевой бар я вседа из расчётов убираю.
И всё же на графике, ставя точки через ObjectCreate:
значений этих индикаторов, рассчитанных в эксперте, вижу расхождение с этими же индикаторами, положенными на график.
На графике Magenta-точки аппроксимируют в эксперте белый индикатор, а Cyan-точки - коричневый индикатор. На втором особенно виден большой разброс точек-объектов от индикатора.
Кто-нибудь может подсказать причину такой разницы?