array out of range при оптимизации в значениях индикатора

 

Добрый вечер всем! 

При оптимизации в массиве, хранящем значения индикаторов (параметры индюков на старте грузятся из БД - решил использовать БД в работе и оптимизировать код немного в этой связи), возникает ошибка array out of range в последней строке примера кода в data[0] (динамический массив, но ArrayResize(data,10) не решила задачу) 

Envelopes_low[EURUSDId, M15].data[0]

В одиночном прогоне никаких проблем

Оптимизация выдает ошибку:

2020.10.02 19:03:38.846 Core 32 genetic pass (0, 265) tested with error "critical runtime error 502 in OnTick function (array out of range line 15, col 51)" in 0:00:00.010

Ниже код с комментариями

Дано:

struct S1{
   double data[];
};

S1 Envelopes_up[10,10], Envelopes_low[10,10];

...
// копируем значения индикаторов 
CopyBuffer((int)Envelopes_handle[instr_arr[id_instrument], period_arr[i]],0,0,10,Envelopes_up[instr_arr[id_instrument], period_arr[i]].data);
CopyBuffer((int)Envelopes_handle[instr_arr[id_instrument], period_arr[i]],1,0,10,Envelopes_low[instr_arr[id_instrument], period_arr[i]].data);

//сортируем
ArraySetAsSeries(Envelopes_up[instr_arr[id_instrument], period_arr[i]].data,true);
ArraySetAsSeries(Envelopes_low[instr_arr[id_instrument], period_arr[i]].data,true);

....

// ругается на data[0] - это и есть "
line 15, col 51"
if(Bid[EURUSDId]<Envelopes_low[EURUSDId, M15].data[0]){...}


Не могу понять как исправить. Нужна помощь:)


Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
Artem Mordvinkin:

Добрый вечер всем! 


В одиночном прогоне никаких проблем

Оптимизация же выдает ошибку

2020.10.02 19:03:38.846 Core 32 genetic pass (0, 265) tested with error "critical runtime error 502 in OnTick function (array out of range line 15, col 51)" in 0:00:00.010


Дано:


Не могу понять как исправить. Нужна помощь:)


Внесите исправление в строку 133.

 
Vladimir Karputov:

Внесите исправление в строку 133.

Думаю, что не поможет в решении моей задачи.

 
Artem Mordvinkin:

Думаю, что не поможет в решении моей задачи.

Ну значит в строке 150 нужно исправить.

 
Vladimir Karputov:

Ну значит в строке 150 нужно исправить.

Не помогло

 
А как же строка 1054? В ней же явно выход за пределы массива. Прямо отсюда вижу.
 

Я всегда подозревал что модеры экстрасенсы. Только зачем это нужно было скрывать, не понимаю.

Где вы в обще увидели номера строк в коде?

 
Mihail Marchukajtes:

Где вы в обще увидели номера строк в коде?

Видимо ранее тут висел полный код )

Встречался с подобной проблемой, удивило почему исходный компилировался 

 
Если вместо структуры подставить одномерный массив, то проблемы не будет (не было). Вопрос же не в целостности кода (на мой взгляд) - он достаточно большой и большей частью к данному посту не относится. Я предоставил фрагменты использования того самого массива структуры, в котором возникает ошибка. Большего нет. При одиночном прогоне нет проблем - никаких ошибок относительно пределов массива. Только в случае оптимизации. Если никто ранее не встречался с подобной проблемой работы с динамическим массивом, а я так понимаю по комментариям - именно так - по делу ничего сказано не было, то буду далее разбираться самостоятельно.Сегодня топик сплошь состоит из ответов победителей передачи "умники и умницы", упражняющихся в остроумии над задачей "тупого джуна", который заставляет их ванговать. Как итог, я реально не понял что вас так раззадорило. Джун, фиг ли:) 
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Допускается объявление не более чем 4-мерного массива. При объявлении динамического массива (массива с неуказанным значением в первой паре квадратных скобок) компилятор автоматически создает переменную указанной выше структуры (объект динамического массива) и обеспечивает код для правильной инициализации.   Статические массивы При явном...
 
Перечитайте свой первый пост. Поймёте, что Вы спросили о чём-то , но ничего прт этом не сказали.
Здесь технический форум - хотите ответ: правильно задайте вопрос.

Пока не зададите правильно вопрос - будут ответы в стиле Ванги.
 
Artem Mordvinkin:
Сегодня топик сплошь состоит из ответов победителей передачи "умники и умницы", упражняющихся в остроумии над задачей "тупого джуна", который заставляет их ванговать. Как итог, я реально не понял что вас так раззадорило. Джун, фиг ли:) 

Раззадорило Ваше телепатическое общение с Модератором )

Попытайтесь сами разобраться array out of range line 15, col 51 https://www.mql5.com/ru/docs/series/copybuffer