Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я вложил ниже инпуты для понимания.
Обратите внимание на кол-во циклов for.
Проходится по периоду АДХ с 5 до 15
Внутри него цикл
Который так же перебирается с 5 до 15
Внутри которого еще цикл
Который перебирается с 0 до 5
А так далее в глубину.
Логика в том, что каждое значение счетчика for это период или параметр расчета.
И все комбинации параметров индикаторов должны перебраться между собой для того чтобы выдать нужные мне результаты.
Почему вы их складываете? 12 вариантов АДХ должны перебраться с 12 вариантами АТР = 144. Это только АДХ и АТР. А если вы глянете на то какие в циклах for параметры, которые только приумножают количество итераций, то доходит до 2-5 миллионов.
needCalcBars. Для примера мне надо 30 дней. На ТФ М1 это ~43000 баров. На М5 это ~8600. И так далее. Мой код считает сколько надо баров перебрать на выбранном ТФ исходя из дней истории.
В окне настроек терминала у меня 100 000 баров стоит. Доступны 100 000.
Да и код есть который выдает мне доступное кол-во баров. BARS он же iBars(), просто в препроцессорах сделал себе BARS.
Остальные значения из вложенных for тоже используются в коде, но я его не отображал. В этом нет смысла. Ошибка на уровне CopyBuffer.
Возможно конечно вы предлагаете создавать хендл не внутри всех циклов, а внутри его конректного цикла.
Например хендл АДХ создавать сразу после его for.
Но я не уверен что это решит проблему CopyBuffer.
И все еще вижу необходимость объявлять хендлы внутри циклов, а не в OnInit()
Всё это абсолютно неубедительно. Вот все места где используется adx
Попробуйте найти такое обращение к adx где-то в другом цикле который повлиял-бы на хендл индикатора adx
А так, получается, что каждый цикл с новым значением адх повторяется те самые 2 миллиона раз абсолютно даром.
Всё это абсолютно неубедительно. Вот все места где используется adx
Попробуйте найти такое обращение к adx где-то в другом цикле который повлиял-бы на хендл индикатора adx
А так, получается, что каждый цикл с новым значением адх повторяется те самые 2 миллиона раз абсолютно даром.
В каком другом цикле? Я делаю перебор всех возможных комбинаций ADX, ATR,DOGON,EXP,SHIFT,LEVEL. Все эти параметры в диапазоне своих заданных значений должны перебраться между собой.
Почему даром? Имеет ли то, о чем вы говорите отношение к ошибке 4806?
ERR_INDICATOR_DATA_NOT_FOUND
4806
Запрошенные данные не найдены
Я пытаюсь понять, что не так, с тем, что я внутри цикла объявляю хэндл ADX с периодом из счетчика for adx.
Почему CopyBuffer мне возвращает 4806 если баров хватает с запасом в несколько раз.
Вот я себе в журнал внутри цикла логирую.
Первая строка показывает выбранные в цикле ТФ, сколько баров надо для расчетов, и сколько доступно.
Вторая строка это общий счетчик итераций по всем циклам, и какие параметры индикаторов и других значений перебираются в конкректный момент.
Третья строка мне выкидывает ошибку 4806. То есть по второй строке видим, что все идет гладко аж до 2512 цикла итерации.
То есть ошибка появляется как только меняется ATR после 2 на 3. При этом ошибки хэндла нет. А вот новое значение ATR в CopyBuffer уже не лезет.
В каком другом цикле? Я делаю перебор всех возможных комбинаций ADX, ATR,DOGON,EXP,SHIFT,LEVEL. Все эти параметры в диапазоне своих заданных значений должны перебраться между собой.
Почему даром? Имеет ли то, о чем вы говорите отношение к ошибке 4806?
ERR_INDICATOR_DATA_NOT_FOUND
4806
Запрошенные данные не найдены
Я пытаюсь понять, что не так, с тем, что я внутри цикла объявляю хэндл ADX с периодом из счетчика for adx.
Почему CopyBuffer мне возвращает 4806 если баров хватает с запасом в несколько раз.
Вот я себе в журнал внутри цикла логирую.
Первая строка показывает выбранные в цикле ТФ, сколько баров надо для расчетов, и сколько доступно.
Вторая строка это общий счетчик итераций по всем циклам, и какие параметры индикаторов и других значений перебираются в конкректный момент.
Третья строка мне выкидывает ошибку 4806. То есть по второй строке видим, что все идет гладко аж до 2512 цикла итерации.
То есть ошибка появляется как только меняется ATR после 2 на 3. При этом ошибки хэндла нет. А вот новое значение ATR в CopyBuffer уже не лезет.
В чём будет отличие такого кода
от вашего… Я взял константные значения просто чтобы не заморачиваться с инпут переменными. Я надеюсь вы понимаете это…
Вам уже устали объяснять, что хендлы надо получать в OnInit()
Все следующие вложенные циклы никакие параметры не вносят в параметры iADX и следовательно абсолютно бесполезны.
Вот потому я и прошу показать какое значение из полученных во внутренних циклах влияет на iADX
Мне к сожалению не очевидно то, что вы предложили.
Что сделать?
Остальные индикаторы по аналогии, тогда хендлы не нужны.
Проверки не делал, это уже на вашей стороне
Всем спасибо. Решил проблему создав структуры хендлов и объявив их в OnInit заранее.
А в цикле уже обращаюсь к этим хендлам на основе счетчиков циклов.