Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1031
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если при нечаянном удалении индикатора должны удаляться глобальные переменные, созданные этим индикатором, то в функции OnDeinit() индикатора должно быть прописано удаление этих глобальных переменных.
При этом нужно проверить, что это не переключение таймфрейма, а именно удаление индикатора с графика.
Нажмите в терминале F3, и вручную удалите эту переменную. Она же один раз создана, и находится в окружении - от-туда её и считывает советник. Или я вас не правильно понял? Вы в самом коде индикатора просто убрали создание глобальной переменной терминала, но до этого её уже создавали этим индикатором?
Артем, пожалуйста, помогите понять в чём дело. Вот здесь https://www.mql5.com/ru/code/10237 лежит код советника, который оповещает (точнее раньше оповещал) обо всех торговых событиях в терминале. Этот код исправно работал. Я достаточно длительно отсутствовал на сайте. Произошли какие-то изменения в mql4, сейчас этот код компилируется с ошибкой, выдается ошибка при компиляции строк инициализации массива. Если найдете время, посмотрите, пожалуйста.
С уважением.
ps если кто-то еще посмотрит в чем проблема, я буду благодарен.
Ну, не знаю, может в С++ который я не изучал никогда так правильно, но mql только С-подобный. И во-вторых измерение массива переменной задавать нельзя, хотя в твоём примере MAX_NUM_ORDER может и не переменная...
Выбрана строка и столбец массива, соответственно туда можно занести одно конкретное значение т. е. запись должна быть как для обычной переменной, а для сброса всех значений
ArrayInitialize(Arr_Tickets, 0);
ссылка на элемент будет выглядеть так - Arr_Tickets[MAX_NUM_ORDER,2] =0;
у меня же записано - Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};
вот здесь посмотрите про инициализацию массива https://book.mql4.com/ru/variables/arrays
ссылка на элемент будет выглядеть так - Arr_Tickets[MAX_NUM_ORDER,2] =0;
у меня же записано - Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};
Arr_Tickets[MAX_NUM_ORDER,2] - ссылка на элемент массива
Arr_Tickets[MAX_NUM_ORDER][2] - ссылка на элемент массива
Компилятор не ругается, как ни напиши и ждёт одно конкретное значение, а не что-то другое. Специально проверено.
И подтверждение того же из сылки, которую вы же и дали другому участнику форума: Допускается также способ указания индексов, при котором каждый из индексов обрамляется квадратными скобками
Arr_Tickets[MAX_NUM_ORDER,2] - ссылка на элемент массива
Arr_Tickets[MAX_NUM_ORDER][2] - ссылка на элемент массива
Компилятор не ругается, как ни напиши и ждёт одно конкретное значение, а не что-то другое. Специально проверено.
И подтверждение того же из сылки, которую вы же и дали другому участнику форума: Допускается также способ указания индексов, при котором каждый из индексов обрамляется квадратными скобками
переформулирую вопрос, - Раньше все компилировалось и хорошо работало, кто-нибудь сможет объяснить, в чем причина? Неработающие коды в кодобазу не пропускали...
Кстати, ошибку выдает в 53 и 54 строках кода. В 54 строке что неправильно? И как тогда инициировать строковый массив?
Перерыл учебник не нашел ничего про строковые массивы, только про числовые массивы есть информация. Может плохо искал? Дайте пожалуйста ссылку.
Артем, пожалуйста, помогите понять в чём дело. Вот здесь https://www.mql5.com/ru/code/10237 лежит код советника, который оповещает (точнее раньше оповещал) обо всех торговых событиях в терминале. Этот код исправно работал. Я достаточно длительно отсутствовал на сайте. Произошли какие-то изменения в mql4, сейчас этот код компилируется с ошибкой, выдается ошибка при компиляции строк инициализации массива. Если найдете время, посмотрите, пожалуйста.
С уважением.
ps если кто-то еще посмотрит в чем проблема, я буду благодарен.
Сперва-наперво вставьте в начале кода #property strict и откомпилируйте.
было так:
сделайте так:
После этого нужно глядеть уже на те ошибки, которые он выдаст.
Сперва-наперво вставьте в начале кода #property strict и откомпилируйте.
было так:
сделайте так:
После этого нужно глядеть уже на те ошибки, которые он выдаст.
Вставил, ничего не изменилось.
Предположим, строку Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0}; я ещё могу заменить на ArrayInitialize(Arr_Tickets,0);
Что делать со строкой Arr_Order_Symbol[MAX_NUM_SYMBOL] = {"",,""};? при попытке инициализировать строковый массив через ArrayInitialize(Arr_Order_Symbol,""), он говорит - "моя твоя не понимай...", нет подходящих объектов для обработки функцией...
Вставил, ничего не изменилось.
Предположим, строку Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0}; я ещё могу заменить на ArrayInitialize(Arr_Tickets,0);
Что делать со строкой Arr_Order_Symbol[MAX_NUM_SYMBOL] = {"",,""};? при попытке инициализировать строковый массив через ArrayInitialize(Arr_Order_Symbol,""), он говорит - "моя твоя не понимай...", нет подходящих объектов для обработки функцией...