Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1883
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я не спорю. «Серые» показаны на снимке в этом сообщении.
Без исходников вот эти
Ну я про "эти" и говорил. Когда у меня было переполнение и индикаторы не отображались, я не глядел что показывается в меню, которое показано на скрине в сообщении, о котором ты сказал. Тут ничего не могу сказать точно.
Но если индикаторов нет в навигаторе, но они есть в папке, то это означает, что новые не будут показываться в навигаторе до тех пор, пока часть старых не будет удалена из папки.
Было, проходили. Не я один.
Хотел обскакать необходимость вручную ресайзить динамический массив, просто назначив его в качестве индикаторного буфера. Но не получается откреститься от ArrayResize() якобы динамического массива индикаторного буфера, за размером которого якобы должен следить сам терминал и который якобы не надо ресайзить вручную:
https://www.mql5.com/ru/docs/series/bufferdirection:
Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(). Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize(), исполняющая система терминала сама позаботится об этом.
Идём по https://www.mql5.com/ru/docs/array/arrayisdynamic, запускаем код и вдруг выясняем, что:
2022.01.24 21:25:27.543 t (NZDUSD,D1) 3. Проверка индикаторного буфера:
2022.01.24 21:25:27.543 t (NZDUSD,D1) Размер до освобождения памяти = 7278
2022.01.24 21:25:27.543 t (NZDUSD,D1) Это динамический массив = Нет
2022.01.24 21:25:27.543 t (NZDUSD,D1) Размер после освобождения памяти = 0
при этом он:
Смотрю в книгу — вижу фигу. Или нас всё это время обманывали?
Или он, быть может, однократно динамический (при первой инициализации), а потом всё?
Не получается откреститься от ArrayResize() якобы динамического массива индикаторного буфера, за размером которого якобы должен следить сам терминал и который якобы не надо ресайзить вручную:
https://www.mql5.com/ru/docs/series/bufferdirection:
Идём по https://www.mql5.com/ru/docs/array/arrayisdynamic, запускаем код и вдруг выясняем, что:
при этом он:
Смотрю в книгу — вижу фигу. Или нас всё это время обманывали?
Или он, быть может, однократно динамический (при первой инициализации), а потом всё?
22:23:17.002 Dynamic EURCAD,H1: +============================+
0 22:23:17.002 Dynamic EURCAD,H1: 1. Проверка динамического массива:
0 22:23:17.002 Dynamic EURCAD,H1: Размер до освобождения памяти = 100
0 22:23:17.002 Dynamic EURCAD,H1: Это динамический массив = Да
0 22:23:17.002 Dynamic EURCAD,H1: Размер после освобождения памяти = 0
0 22:23:17.002 Dynamic EURCAD,H1: 2. Проверка статического массива:
0 22:23:17.002 Dynamic EURCAD,H1: Размер до освобождения памяти = 100
0 22:23:17.002 Dynamic EURCAD,H1: Это динамический массив = Нет
0 22:23:17.002 Dynamic EURCAD,H1: Размер после освобождения памяти = 0
0 22:23:17.002 Dynamic EURCAD,H1: 3. Проверка индикаторного буфера:
0 22:23:17.002 Dynamic EURCAD,H1: Размер до освобождения памяти = 2725
0 22:23:17.002 Dynamic EURCAD,H1: Это динамический массив = Да
0 22:23:17.002 Dynamic EURCAD,H1: Размер после освобождения памяти = 0
0 22:23:24.754 Dynamic EURCAD,H1: uninit reason 1
0 22:23:24.758 Custom indicator Dynamic EURCAD,H1: removed
Это в 4.
Хотел обскакать необходимость вручную ресайзить динамический массив, просто назначив его в качестве индикаторного буфера. Но не получается откреститься от ArrayResize() якобы динамического массива индикаторного буфера, за размером которого якобы должен следить сам терминал и который якобы не надо ресайзить вручную:
https://www.mql5.com/ru/docs/series/bufferdirection:
Идём по https://www.mql5.com/ru/docs/array/arrayisdynamic, запускаем код и вдруг выясняем, что:
при этом он:
Смотрю в книгу — вижу фигу. Или нас всё это время обманывали?
Или он, быть может, однократно динамический (при первой инициализации), а потом всё?
да, потом всё :-)
...после SetIndexBuffer уже нельзя использовать ArrayResize и с точки зрения программы массив как-бы статический с предначертанным (управляемым извне) размером
22:23:17.002 Dynamic EURCAD,H1: +============================+
0 22:23:17.002 Dynamic EURCAD,H1: 1. Проверка динамического массива:
0 22:23:17.002 Dynamic EURCAD,H1: Размер до освобождения памяти = 100
0 22:23:17.002 Dynamic EURCAD,H1: Это динамический массив = Да
0 22:23:17.002 Dynamic EURCAD,H1: Размер после освобождения памяти = 0
0 22:23:17.002 Dynamic EURCAD,H1: 2. Проверка статического массива:
0 22:23:17.002 Dynamic EURCAD,H1: Размер до освобождения памяти = 100
0 22:23:17.002 Dynamic EURCAD,H1: Это динамический массив = Нет
0 22:23:17.002 Dynamic EURCAD,H1: Размер после освобождения памяти = 0
0 22:23:17.002 Dynamic EURCAD,H1: 3. Проверка индикаторного буфера:
0 22:23:17.002 Dynamic EURCAD,H1: Размер до освобождения памяти = 2725
0 22:23:17.002 Dynamic EURCAD,H1: Это динамический массив = Да
0 22:23:17.002 Dynamic EURCAD,H1: Размер после освобождения памяти = 0
0 22:23:24.754 Dynamic EURCAD,H1: uninit reason 1
0 22:23:24.758 Custom indicator Dynamic EURCAD,H1: removed
Это в 4.
Фантастика! Что за волшебство? Только что проверил на EURCAD,H1 — опять "Нет".
И что за 4.? Там в примере всего три пункта.
Фантастика! Что за волшебство? Только что проверил на EURCAD,H1 — опять "Нет".
И что за 4.? Там в примере всего три пункта.
Терминал MT4
Фантастика! Что за волшебство? Только что проверил на EURCAD,H1 — опять "Нет".
И что за 4.? Там в примере всего три пункта.
0 23:33:06.088 test (EURUSD,D1) +============================+
0 23:33:06.088 test (EURUSD,D1) 1. Проверка динамического массива:
0 23:33:06.088 test (EURUSD,D1) Размер до освобождения памяти = 100
0 23:33:06.088 test (EURUSD,D1) Это динамический массив = Да
0 23:33:06.088 test (EURUSD,D1) Размер после освобождения памяти = 0
0 23:33:06.088 test (EURUSD,D1) 2. Проверка статического массива:
0 23:33:06.088 test (EURUSD,D1) Размер до освобождения памяти = 100
0 23:33:06.088 test (EURUSD,D1) Это динамический массив = Нет
0 23:33:06.088 test (EURUSD,D1) Размер после освобождения памяти = 100
0 23:33:06.088 test (EURUSD,D1) 3. Проверка индикаторного буфера:
0 23:33:06.088 test (EURUSD,D1) Размер до освобождения памяти = 1054
0 23:33:06.088 test (EURUSD,D1) Это динамический массив = Нет
0 23:33:06.088 test (EURUSD,D1) Размер после освобождения памяти = 0
Терминал MT5, мыслей нет.
Хотел обскакать необходимость вручную ресайзить динамический массив, просто назначив его в качестве индикаторного буфера. Но не получается откреститься от ArrayResize() якобы динамического массива индикаторного буфера, за размером которого якобы должен следить сам терминал и который якобы не надо ресайзить вручную:
https://www.mql5.com/ru/docs/series/bufferdirection:
Идём по https://www.mql5.com/ru/docs/array/arrayisdynamic, запускаем код и вдруг выясняем, что:
при этом он:
Смотрю в книгу — вижу фигу. Или нас всё это время обманывали?
Или он, быть может, однократно динамический (при первой инициализации), а потом всё?
Буферный массив является динамическим. В MQL динамические массивы имеют признаки объектов, на сколько я понял во время работы с ними (как в языках сверхвысокого уровня). Но если после объявления динамического массива объявить его буфером (с помощью SetIndexBuffer), то данная область памяти станет зарезервированной. Поэтому большинство стандартных функций не могут изменять его размер. Я иногда использую в качестве буферов индикатора массивы объекта. А если это делать то память таких массивов освобождается в деструкторе объекта. Таким образом, освобождение памяти буфера индикатора самим приложением (или объектом) допускается. Но это не значит, что массив можно освободить прямо в процессе работы индикатора. Всё нужно делать с умом.
Добрый день
Подскажите, пробую написать советника, и при тесте непонятная для меня вещь происходит...
есть функция
ситуация такая, один экземпляр советника запущен на графике, второй экземпляр запускаю в режиме отладки МТ4 на аналогичном графике
входные данные для функции получаются одинаковые, а выходные различаются!!!? я просто чего-то не понимаю похоже...(
подскажите в какую сторону копать информацию?!
ПС: посчитал разница ровно в 2.5 раза между выходными даннымиДобрый день
Подскажите, пробую написать советника, и при тесте непонятная для меня вещь происходит...
есть функция
ситуация такая, один экземпляр советника запущен на графике, второй экземпляр запускаю в режиме отладки МТ4 на аналогичном графике
входные данные для функции получаются одинаковые, а выходные различаются!!!? я просто чего-то не понимаю похоже...(
подскажите в какую сторону копать информацию?!
ПС: посчитал разница ровно в 2.5 раза между выходными даннымиВсё дело в формуле вычисления угла. В коде видно что для его вычисления используется только одна координата и какой то коэффициент, предназначение которого непонятно. Это как? Расскажите подробнее какие данные вы используете для вычисления угла.