
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите пожалуйста как правильно работать с массивом элементами которого являются структуры Mqlrates.
Вот конкретно то что интересует.Например:
MqlRates AdaptedRates[];
ArraySetAsSeries(AdaptedRates,true);
AdaptedRates[300].open=1;
В отладчике выдает ошибку - Invalid array access.
Насколько я понимаю это связано с тем что используя такую форму записи можно только читать элементы структуры которая в свою очередь является элементом массива.
Вопрос как правильно записывать элементы структуры. Все элементы не интересуют важны непосредственно цены .open .high .low .close .
Заранее извиняюсь вопрос наверно очень банальный (я вообще не программист), но в справке ответа я не нашел. Буду благодарен за любую помощь.
Размер массиву задайте. ArrayResize
Насколько я понимаю если определить размер, к примеру
:) Вы не статический массив задайте, а динамическому размер установите с помощью ArrayResize().
Ну, типа: ArrayResize(AdaptedRates,302); и т.д.
У Вас используется динамический массив AdaptedRates[]. Насколько я помню, при работе с динамическими массивами следует устанавливать их размер с помощью функции ArrayResize(). А пока что компилятор ругается на индекс 300, указанный в третьей строчке.
Это цитата из справки.
Swan, Yedelkin спасибо что так быстро откликнулись.
Насколько я понимаю если определить размер, к примеру
да.
MqlRates AdaptedRates[];//таки оставьте массив динамическим
ArrayResize(AdaptedRates,302);//и установите нужный размер
:) Вы не статический массив задайте, а динамическому размер установите с помощью ArrayResize().
Ну, типа ArrayResize(AdaptedRates,302); и т.д.
Глюк в тестере стратегий.
Он вдруг останавливается и у всех локальных и удаленных агентов надпись finished и так висит.
Не подскажите как его запустить дальше, жалко время все начинать сначала?Спасибо за популярное объяснение, насколько я понял перед любым обращением к ячейке динамического массива желательно его ArrayResize до нужных пределов, буду пробовать.
Примечание. Только для индикаторных буферов этого не надо будет делать. Там исполняющая подсистема терминала с этим сама справляется.
Примечание 2. ArrayResize() желательно применять лишь при необходимости изменения размера динамического массива, а не перед любым обращением к его элементам. Вполне может быть, что динамическому массиву будет однократно задан его размер, а затем программа будет просто обращаться к его элементам.
Примечание. Только для индикаторных буферов этого не надо будет делать. Там исполняющая подсистема терминала с этим сама справляется.
Примечание 2. ArrayResize() желательно применять лишь при необходимости изменения размера динамического массива, а не перед любым обращением к его элементам. Вполне может быть, что динамическому массиву будет однократно задан его размер, а затем программа будет просто обращаться к его элементам.