Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте господа разработчики!
А можно ли внести изменения в компилятор MQL5, чтоб хотя бы предупреждение выдавал,
на такого рода косяки в коде.
if(Flag_Exitl=true) {break;}
Тут не верно написано условие сравнения (должно быть == ) и поэтому всегда будет выполнятся break.
Как то эту ситуацию в компиляторе обозначить (если это возможно вообще), чтоб меньше шишек набивать при написании кода?
(подумал не получится, похоже разделить присваивание и сравнение в if, тогда вопрос снят).
Переменные типа bool можно не сравнивать с true/false, а использовать напрямую (по сути это флаг да/нет)
У меня регулярно появляется ошибка 4401
ERR_HISTORY_NOT_FOUND
Следующий код индикатора
выдаст ошибку сразу при старте (если кинуть не на D1). Вернее, один раз после запуска терминала и открытия графика - нацепить индикатор, получим ошибку. Если терминал не закрывать, то больше ошибки такой на старте не происходит.
Но через некоторое время (пару часов - мне хватило 2 часа) увидим, что и на уже давно открытом графике получаем ошибку. (запускал на m30)
..регулярно появляется ошибка 4401
справко:
Организация доступа к данным
Доступность данных
Наличие данных в формате HCC или даже в готовом для использования формате HC не всегда означает безусловную доступность этих данных для отображения на графике или для использования в mql5-программах.
При доступе к ценовым данным или к значениям индикаторов из mql5-программ следует помнить, что не гарантируется их доступность в определенный момент времени, либо с определенного момента времени. Это связано с тем, что в целях экономии ресурсов в MetaTrader 5 не хранится полная копия требуемых данных для mql5-программы, а дается прямой доступ к базе данных терминала.
Ценовая история по всем таймфреймам строится из общих данных формата HCC и любое обновление данных с сервера приводит к обновлению данных по всем таймфреймам и пересчету индикаторов. Вследствие этого, в доступе к данным может быть отказано даже в том случае, если эти данные были доступны мгновение назад.
CopyRate
При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, то функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.справко:
Похоже так и должно быть. До CopyRate SERIES_SYNCRONIZED можно проверить..посыпаю голову пеплом - таки да. Спасибо.
Хотя странно видеть запрос двух баров и недоступность истории, хотя меняется только нулевой бар. Ну да ладно - если описано в документации, значит не ошибка
в моей IsNewBar была ошибка выходит.
Вместо
нужно было писать
А я то думал, почему раз в пару часов получается IsNewBar(PERIOD_D1) == true -> отсюда и выяснил о недоступности истории, но не мог подумать на функцию, которую написал год или два назад.
Почему индикатор не может работать с цветовыми типами (COLOR_ARROW, и т.д.) более чем с одним буфером
пример кода
Задаем два DRAW_COLOR_ARROW (buf1 и buf2) и к каждому дополнительный цветовой буфер (clr1, clr2)
При этом видим, что второй буфер buf2 хоть и получает значения High/Low баров, но он не отображается на чарте. Складывается впечатление, что цвет стрелок этого буфера = clrNONE. То есть не работает задание цвета в clr2 буфер
вот скрин. видны только значения buf1/clr1. Значения второго буфера не отображаются цветом хотя значения получают.
Где ошибка?
Вопрос просто создан для ответа "в ДНК MQL5".
Такая чепуха и на DRAW_FILLING, и даже на относительно нормальном DRAW_HISTOGRAM2 (не так стабильно конечно, но баги встречаются).
Вот как раз из нестабильности багов, я делаю вывод что без СД вам вряд ли ответят.
Bild 642 для Win32
какая то проблема с трехмерными массивами double появляется если ошибочно выйти за пределы массива при выводе в ф-ции Print
скрипт уходит самостоятельно в бесконечный цикл.
Bild 642 для Win32
какая то проблема с трехмерными массивами double появляется если ошибочно выйти за пределы массива при выводе в ф-ции Print
Вообще выход за пределы происходит на две строчки раньше
а вы при этом вызываете экспоненту от несуществующего элемента, скорее всего нуля.
смотрите в журнал
Вообще выход за пределы происходит на две строчки раньше
а вы при этом вызываете экспоненту от несуществующего элемента, скорее всего нуля.
смотрите в журнал