
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Баг в билде 1335.
При создании линии индикатором (или ЕА), другой индикатор (или ЕА) видит такую линию с цветом clrRed.
Как я понимаю, создающий индикатор не успевает прописать нужный цвет в объекте, но другие индикаторы уже видят этот объект на чарте, с цветом clrRed.
Раньше такого бага не было, объекты успевали создаваться полностью и появлялись на чарте с нужным цветом (и другими параметрами).
Прошу исправить.
Иначе нужно придумывать костыли с паузой-ожиданием создания объектов.
Прилагаю два индикатора, запускать одновременно, и кликать на чарте.
пс. в МТ5 не проверял, возможно и там есть такая "фича".
Баг в билде 1335.
При создании линии индикатором (или ЕА), другой индикатор (или ЕА) видит такую линию с цветом clrRed.
Как я понимаю, создающий индикатор не успевает прописать нужный цвет в объекте, но другие индикаторы уже видят этот объект на чарте, с цветом clrRed.
Раньше такого бага не было, объекты успевали создаваться полностью и появлялись на чарте с нужным цветом (и другими параметрами).
Прошу исправить.
Иначе нужно придумывать костыли с паузой-ожиданием создания объектов.
Прилагаю два индикатора, запускать одновременно, и кликать на чарте.
пс. в МТ5 не проверял, возможно и там есть такая "фича".
Вроде бы не баг и не фича. Ведь создание объекта и изменение его свойств происходят, судя по коду, последовательно. То есть сразу после ObjectCreate() возникает событие CHARTEVENT_OBJECT_CREATE. Потом только выполнение переходит к ObjectSetInteger с изменением цвета. Таким образом, по очередности событий все в пределах логики. Для понимания происходящего попробуйте создать объект вручную. Его свойства будут прочитаны абсолютно правильно.
Но сама проблема ясна. Пока не знаю, что предложить, нужно подумать, как такое разрулить.
Вроде бы не баг и не фича. Ведь создание объекта и изменение его свойств происходят, судя по коду, последовательно. То есть сразу после ObjectCreate() возникает событие CHARTEVENT_OBJECT_CREATE. Потом только выполнение переходит к ObjectSetInteger с изменением цвета. Таким образом, по очередности событий все в пределах логики. Для понимания происходящего попробуйте создать объект вручную. Его свойства будут прочитаны абсолютно правильно.
Но сама проблема ясна. Пока не знаю, что предложить, нужно подумать, как такое разрулить.
проверил в МТ5 такого не происходит.
также такого не происходит при создании объекта вручную (с другим цветом).
если предположить что всё правильно, тогда должно приходить событие CHARTEVENT_OBJECT_CHANGE, но его нет
Скорее всего ChartRedraw(); спасёт «Отца русской демократии.»
Объект нарисован, но полное его отображение и новые свойства будут только на следующем тике или после принудительной перерисовке графика.
Скорее всего ChartRedraw(); спасёт «Отца русской демократии.»
Объект нарисован, но полное его отображение и новые свойства будут только на следующем тике или после принудительной перерисовке графика.
почитайте для чего нужна функция OnChartEvent.
Немного недоглядели в перегрузках.
О, как оказывается...
А то всё приходилось использовать #ifdef __MQL4__
Немного недоглядели в перегрузках.
А где вы видели такую перегрузку? На кой дьявол там 0? Что он означает?
А где вы видели такую перегрузку? На кой дьявол там 0? Что он означает?
У ObjectsTotal() два варианта: из старого MQL4 и из нового. В старом всего один аргумент - тип объекта, int. В новом - три аргумента, но два из них по умолчанию, а первый - ID чарта, long. Если указать просто 0, то компилятор не сможет определить, какой вариант использовать - с long или с int. Вот и требуется подсказка в виде приведения типа.
Немного недоглядели в перегрузках.
Прошу прощения, я прочёл OrdersTotal(). От этого и непонимание…
У ObjectsTotal() два варианта: из старого MQL4 и из нового. В старом всего один аргумент - тип объекта, int. В новом - три аргумента, но два из них по умолчанию, а первый - ID чарта, long. Если указать просто 0, то компилятор не сможет определить, какой вариант использовать - с long или с int. Вот и требуется подсказка в виде приведения типа.
Я не использую такую перегрузку. Не нравится мне такие параметры 0, NULL и прочее. Для меня приятней завести переменную, в OnInit() назначить ей ChartID() и никаких проблем. Но, для любителей таких вариантов, может быть и неудобно…