Vladimir Karputov: Перечитайте свой первый пост. Поймёте, что Вы спросили о чём-то , но ничего прт этом не сказали.
Здесь технический форум - хотите ответ: правильно задайте вопрос.
Пока не зададите правильно вопрос - будут ответы в стиле Ванги.
Ок В моем понимании - правильный вопрос, но это субъективно. Я попробую попросить вставить в ответ пропущенные слова
"Проблема с динамическим массивом (в части "выхода за его пределы") не всегда возникает при одиночном тестировании, но обязательно возникнет в случае оптимизации если... В примере кода видно, что массив используется в структуре, далее в него пишутся значения индикатора (последние 10), потом происходит сортировка этих значений, но это не решит проблемы, ошибка будет возникать потому что нет ... и надо использовать функцию ... " Лучше?
PS функция CopyBuffer() старается распределить размер принимающего массива под размер копируемых данных (c)
PSS не возникает проблем относительно размера массива при использовании его в copybuffer Может ли это быть следствием того, что просто не пишутся никакие данные по какой-то причине в него и он пустой и кол-во элементов 0? Но почему он не пустой при тестировании? Может даже риторическое
Допускается объявление не более чем 4-мерного массива. При объявлении динамического массива (массива с неуказанным значением в первой паре квадратных скобок) компилятор автоматически создает переменную указанной выше структуры (объект динамического массива) и обеспечивает код для правильной инициализации. Статические массивы При явном...
Я полагаю, что именно copybuffer Но как-то выборочно - только при оптимизации. И вот кажется решение уже рядом. Индюков несколько и грузятся их параметры из БД - агентов 48 (ядер). Выходит, что тупо не успевают получить значения - прогрузиться (при одиночном - один агент и все происходит быстрее, а в 48 тормозит и не успевает за тиком)?
Ок В моем понимании - правильный вопрос, но это субъективно. Я попробую попросить вставить в ответ пропущенные слова
"Проблема с динамическим массивом (в части "выхода за его пределы") не всегда возникает при одиночном тестировании, но обязательно возникнет в случае оптимизации если... В примере кода видно, что массив используется в структуре, далее в него пишутся значения индикатора (последние 10), потом происходит сортировка этих значений, но это не решит проблемы, ошибка будет возникать потому что нет ... и надо использовать функцию ... " Лучше?
В Вашем вопросе "выхода за его пределы" есть ответ -> увеличьте пределы и не усложняйте жизнь )
В Вашем вопросе "выхода за его пределы" есть ответ -> увеличьте пределы и не усложняйте жизнь )
Пределы задает copybuffer (ну как бы в теории если я правильно понимаю) Ну и на всякий - делал я ресайз и на 11 элементов - не решило задачу. Проблема в том, что нет в нем ничего по какой-то причине (это пока догадка) он уже [0] выходом за пределы При тестировании есть, при оптимизации - нет
Пределы задает copybuffer (ну как бы в теории если я правильно понимаю) Ну и на всякий - делал я ресайз и на 11 элементов - не решило задачу. Проблема в том, что нет в нем ничего по какой-то причине (это пока догадка) При тестировании есть, при оптимизации - нет
Такая проблемка у меня возникла, когда я захотел совершенства - универсальности. Сделал структуры, универсальные многомерные массивы, чтобы удобнее было работать с БД, да и в целом код порезать (ранее под каждый инструмент и тайм фрейм был динамический массив и ничего не сбоило)
Ну вот - шах и мат Часть локальных агентов успевают схватить котировки и наполнить массив Но большая часть вываливается в аут из-за скорости. Не в массивах дело и не в коде, а в процедуре. Теперь (поскольку я с таким не сталкивался, а хочется решить задачку как можно быстрее, уж простите - не лень, а оптимизация времени). Кто подскажет: как в случае отсутствия значений индикатора в массиве (из-за того что они не успевают прогрузится к первому тику) не вываливать ошибку размерности массива (ибо в таком случае он пустой - 0 членов после copybuffer), а вернуть сову снова в стадию получения данных?
Перечитайте свой первый пост. Поймёте, что Вы спросили о чём-то , но ничего прт этом не сказали.
Ок В моем понимании - правильный вопрос, но это субъективно. Я попробую попросить вставить в ответ пропущенные слова
"Проблема с динамическим массивом (в части "выхода за его пределы") не всегда возникает при одиночном тестировании, но обязательно возникнет в случае оптимизации если... В примере кода видно, что массив используется в структуре, далее в него пишутся значения индикатора (последние 10), потом происходит сортировка этих значений, но это не решит проблемы, ошибка будет возникать потому что нет ... и надо использовать функцию ... " Лучше?
PS функция CopyBuffer() старается распределить размер принимающего массива под размер копируемых данных (c)
PSS не возникает проблем относительно размера массива при использовании его в copybuffer Может ли это быть следствием того, что просто не пишутся никакие данные по какой-то причине в него и он пустой и кол-во элементов 0? Но почему он не пустой при тестировании? Может даже риторическое
Раззадорило Ваше телепатическое общение с Модератором )
Попытайтесь сами разобраться array out of range line 15, col 51 https://www.mql5.com/ru/docs/series/copybuffer
Я полагаю, что именно copybuffer Но как-то выборочно - только при оптимизации. И вот кажется решение уже рядом. Индюков несколько и грузятся их параметры из БД - агентов 48 (ядер). Выходит, что тупо не успевают получить значения - прогрузиться (при одиночном - один агент и все происходит быстрее, а в 48 тормозит и не успевает за тиком)?
Ок В моем понимании - правильный вопрос, но это субъективно. Я попробую попросить вставить в ответ пропущенные слова
"Проблема с динамическим массивом (в части "выхода за его пределы") не всегда возникает при одиночном тестировании, но обязательно возникнет в случае оптимизации если... В примере кода видно, что массив используется в структуре, далее в него пишутся значения индикатора (последние 10), потом происходит сортировка этих значений, но это не решит проблемы, ошибка будет возникать потому что нет ... и надо использовать функцию ... " Лучше?
В Вашем вопросе "выхода за его пределы" есть ответ -> увеличьте пределы и не усложняйте жизнь )
В Вашем вопросе "выхода за его пределы" есть ответ -> увеличьте пределы и не усложняйте жизнь )
Пределы задает copybuffer (ну как бы в теории если я правильно понимаю) Ну и на всякий - делал я ресайз и на 11 элементов - не решило задачу. Проблема в том, что нет в нем ничего по какой-то причине (это пока догадка) он уже [0] выходом за пределы При тестировании есть, при оптимизации - нет
Покажите как вычисляете data[0]
Если правильно понимаю вопрос
Пределы задает copybuffer (ну как бы в теории если я правильно понимаю) Ну и на всякий - делал я ресайз и на 11 элементов - не решило задачу. Проблема в том, что нет в нем ничего по какой-то причине (это пока догадка) При тестировании есть, при оптимизации - нет
Пределы задаете Вы а copybuffer выполняет
Покажите как вычисляете data[0]
Похоже что проблема в этом
Пределы задаете Вы а copybuffer выполняет
Похоже что проблема в этом
Это из документации
Ну вот - шах и мат Часть локальных агентов успевают схватить котировки и наполнить массив Но большая часть вываливается в аут из-за скорости. Не в массивах дело и не в коде, а в процедуре. Теперь (поскольку я с таким не сталкивался, а хочется решить задачку как можно быстрее, уж простите - не лень, а оптимизация времени). Кто подскажет: как в случае отсутствия значений индикатора в массиве (из-за того что они не успевают прогрузится к первому тику) не вываливать ошибку размерности массива (ибо в таком случае он пустой - 0 членов после copybuffer), а вернуть сову снова в стадию получения данных?