Доброго времени, коллеги!
Прошу помочь разобраться.
Пишу я некий индикатор, который перебирает свои параметры и записывает мне в файл нужные мне результаты. Некий встроенный оптимизатор.
Ниже будут ключевые к вопросу части кода.
Ловлю 4806 даже на текущем ТФ на самой первой итерации.
Это не будет работать на первой итерации
Хендлы нужно создавать в OnInit, таймфреймы хендлов записывайте в массив и их подставляйте в CopyBuffer
Покажу на примере символов, но вам нужны таймфреймы
for(int i=0; i<Sym_count; i++) { hRSI[i]=iRSI(Sym_arr[i],Period(),rsi_period,rsi_price); if(hRSI[i]==INVALID_HANDLE) { Print("Failed to create handle RSI: Symbol = ",Sym_arr[i]," : ",GetLastError()); return(INIT_FAILED); }
Это не будет работать на первой итерации
Хендлы нужно создавать в OnInit, таймфреймы хендлов записывайте в массив и их подставляйте в CopyBuffer
Покажу на примере символов, но вам нужны таймфреймы
Вы мне предлагаете создать 2 миллиона хэндлов в OnInit?)
Хорошо. Я сейчас предварительно объявил хэндлы в OnInit.
А в OnCalculate их переназначаю под нужные параметры. В целом все идет ок, но на 2512 итерации выдает ошибку 4806 на текущем ТФ.
Доброго времени, коллеги!
Прошу помочь разобраться.
Пишу я некий индикатор, который перебирает свои параметры и записывает мне в файл нужные мне результаты. Некий встроенный оптимизатор.
Ниже будут ключевые к вопросу части кода.
Ловлю 4806 даже на текущем ТФ на самой первой итерации.
у вас в циклах излишние инициализации [ iATR -- IndicatorRelease ].. так-же и про RSI, ADX
на каждом баре нужно "всего" ~50 ATR (число таймфреймов * число_периодов_atr) ... а вы делаете 100500 раз
так-же и со всеми.
---
в вашем случае эффективнее самому написать функции рассчёта MassATR(..) - для рассчёта подряд 30-ти разнопериодных atr...там во всех индикаторах усреднения, поэтому подобный массовый рассчёт быстрый
у вас в циклах излишние инициализации [ iATR -- IndicatorRelease ].. так-же и про RSI, ADX
на каждом баре нужно "всего" ~50 ATR (число таймфреймов * число_периодов_atr) ... а вы делаете 100500 раз
так-же и со всеми.
---
в вашем случае эффективнее самому написать функции рассчёта MassATR(..) - для рассчёта подряд 30-ти разнопериодных atr...там во всех индикаторах усреднения, поэтому подобный массовый рассчёт быстрый
Я убирал IndicatorRelease и за пределы циклов, просто переопределяя хендлы. И делал их меньше в кол-ве, чтобы исключить проблему кол-ва.
Я все равно получаю ошибку 4806.
в вашем случае эффективнее самому написать функции рассчёта MassATR(..) - для рассчёта подряд 30-ти разнопериодных atr...там во всех индикаторах усреднения, поэтому подобный массовый рассчёт быстрый
Интересно. Но ничего не понятно.
В МТ4 это без проблем работает в связи с особенностями опроса индикаторов.
С CopyBuffer борода какая то.
Аргументируете?
Мне надо перебрать например АДХ от 3 до 15 периода с АТР от 3 до 15 периода.
Как я получу значения индикатора с этими периодами не меняя хэндл?
Ну получается АДХ 12 плюс АТР 12 итого 24. А откуда вы набираете
Плюс ко всему вы можете создать массив АДХ[] и массив АТР[] отдельно…
Да и зачем цикл в цикле? Я может и совсем слепой, но я не вижу чтобы в цикле применялись значения вложенного цикла. Или наоборот…

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени, коллеги!
Прошу помочь разобраться.
Пишу я некий индикатор, который перебирает свои параметры и записывает мне в файл нужные мне результаты. Некий встроенный оптимизатор.
Ниже будут ключевые к вопросу части кода.
Ловлю 4806 даже на текущем ТФ на самой первой итерации.