Ошибки, баги, вопросы - страница 2931
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
даёт результат 16388. Как проделать обратную процедуру: подставить значение 16388 и в результате получить строку с названием периода PERIOD_H4? Есть ли встроенная функция или надо писать свой конвертер? Если нет встроенной, как примерно могла бы выглядеть кастомная функция? Возможно, придётся писать что-то типа соответствия "ключ — значение"?
Оказывается, есть. Это радует. Благодарю!
Пытаюсь предоставить пользователю возможность выбирать как таймфреймы, так и их количество из списка меню настроечного окна индикатора:
и хочу, чтобы выбранные им периоды попадали прямиком в PArray. Но из вышеприведённого примера получается, что я присваиваю массиву предзаданные в программе значения, а не то, что вводит пользователь. К тому же компилятор выдаёт варнинги:
При попытке заменить последнюю строку на:
компилятор вообще выдаёт ошибку:
Кроме того, NO_PERIOD=0 означает PERIOD_CURRENT, а мне это не нужно, мне нужно что-то типа false или EMPTY_VALUE, но они вообще не подходят.
Как починить?
Ошибка в описании:
Структура торговой транзакции (MqlTradeTransaction)
Данное поле называется: time_type
Пытаюсь предоставить пользователю возможность выбирать как таймфреймы, так и их количество из списка меню настроечного окна индикатора:
и хочу, чтобы выбранные им периоды попадали прямиком в PArray. Но из вышеприведённого примера получается, что я присваиваю массиву предзаданные в программе значения, а не то, что вводит пользователь. К тому же компилятор выдаёт варнинги:
При попытке заменить последнюю строку на:
компилятор вообще выдаёт ошибку:
Кроме того, NO_PERIOD=0 означает PERIOD_CURRENT, а мне это не нужно, мне нужно что-то типа false или EMPTY_VALUE, но они вообще не подходят.
Как починить?
Почти починил.
Расскажите, какие методы борьбы существуют для отлова и исправления ошибки "array out of range"?
ArrayResize() делаете перед записью элемента массива, считаете и вбиваете туда количество элементов которые должны быть в массиве, либо использовать динамический массив который сам толстеет. У вас просто выход за пределы массивы, например указано размер 100 элементов, но так как первый элемент №0 некоторые путаются, если записывать цифры подряд то влезет 0-99. Я не профессиональный программист если что(но умею), первое что в голову пришло, это работает)))
ArrayResize() делаете перед записью элемента массива, считаете и вбиваете туда количество элементов которые должны быть в массиве, либо использовать динамический массив который сам толстеет.
Вообще-то, он у меня и так динамический. Из справки: "Функция может быть применена только к динамическим массивам. При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов, назначенных в качестве индикаторных буферов функцией SetIndexBuffer(). Для индикаторных буферов все операции по изменению размера производит исполняющая подсистема терминала." Но не является индикаторным буфером, так что придётся руками думать и головой действовать...
Вообще-то, он у меня и так динамический. Из справки: "Функция может быть применена только к динамическим массивам. При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов, назначенных в качестве индикаторных буферов функцией SetIndexBuffer(). Для индикаторных буферов все операции по изменению размера производит исполняющая подсистема терминала." Но не является индикаторным буфером, так что придётся руками думать и головой действовать...
Проблема отлова таких ошибок решается только путем использования "прослоек", таких как свой класс-массив, перехватывающий адресацию.