И еще по свойству OBJPROP_YSIZE у объекта OBJ_LABEL. Если объект создается программно и сразу же по нему читается свойство OBJPROP_YSIZE - возвращается 0. Через какое-то время размер возвращается нормально. Т.е. например если по щелчку мыши на объекте "A" создается объект "B" (OBJ_LABEL) и сразу же проверяется свойство OBJPROP_YSIZE - получаем 0. По еще одному щелчку мыши на объекте "A" - размер объекта "B" уже возвращается нормально.
Прикрепил известный индикатор новостей. До 509 работал и не только у меня.
Сейчас адаптировал его под 625.
Вывод на печать символов в строке 175 сразу после чтения файла.
Посмотрите файл "News.csv" (создаётся после запуска индикатора) в HEX-редакторе. Там видны все комбинации символов - "\r\n". После чтения, взамен, появляются символы "rn".
Там же есть макрос с параметром. Как-то странно этот параметр обрабатывается компилятором. В С++ можно имя параметра любое вставить. Потом оно подменяется переменной. Тут же, в MQL, только то, которое используется в коде. Т.е. только имя переменной.
Вот ещё проблемка - не рисуются объекты в тестере. Причём я не знаю, было ли такое раньше, или только в последних билдах появислоь, т.к. никогда не делал этого раньше, как-то не доводилось.
Простой код советника, который при размещении должен нарисовать линию на графике. И рисует, но не в тестере. В тестере почему-то выдаёт ошибку 4202 ERR_OBJECT_DOES_NOT_EXIST. Конечно does not exist, потому я его и создаю. :) Что ему надо?
Вот ещё проблемка - не рисуются объекты в тестере. Причём я не знаю, было ли такое раньше, или только в последних билдах появислоь, т.к. никогда не делал этого раньше, как-то не доводилось. Вот простой код советника - при размещении должен нарисовать линию на графике. И рисует, но не в тестере. В тестере почему-то выдаёт ошибку 4202 ERR_OBJECT_DOES_NOT_EXIST. Конечно does not exist, потому я его и создаю. :) Что ему надо?
При чём здесь это? Когда запускется тестер в режиме визуализации, понятно, что никаких объектов на графике ещё нет. Собственно, и ошибка сообщает об этом же.
Вам ехать? Или шашечки? Если ехать, то делайте. Если шашечки, то ждите ответа разработчиков.
У меня в тестере работает и в OnInit() и в OnTick(). Не нужно - звиняйте.
alxm: Некорректно работает функция ChartXYToTimePrice. Если координата X находится слева от нулевого бара на графике - то координаты преобразуются как и положено. А если координата X находится справа от нулевого бара - функция возвращает ошибку 4051 (Недопустимое значение параметра функции)
//+------------------------------------------------------------------+//| Test.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2013, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strict
int zz=0;
double x=0;
datetime y=0;
long shirina;
voidOnInit(){Comment("");}
voidOnTick()
{
ChartGetInteger(0,CHART_WIDTH_IN_PIXELS ,0,shirina);
ChartXYToTimePrice(0,int(shirina-50),100,zz,y,x);
Comment(shirina," ",shirina-50," ",y," ",x);
Но к сожалению че то не как,
Ренат обратите на это внимание, если зона х и у координат находятся в видимом диапазоне а так же дата и время по шкале находятся в видимом диапазоне то
ChartXYToTimePriceВсе таки должна возвращать координаты х и у при их запросе из под видимого времени и наоборот...
Ваш вариант работает, спасибо за наводку. Но дело, конечно же, не в проверке наличия объекта, которого заведомо нет. Есть два варианта функции ObjectCreate() - с указанием ChartID и без него. В моём коде первый вариант, в вашем - второй. В тестере, как выяснилось, работает только второй вариант.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Прикрепил известный индикатор новостей. До 509 работал и не только у меня.
Сейчас адаптировал его под 625.
Вывод на печать символов в строке 175 сразу после чтения файла.
Посмотрите файл "News.csv" (создаётся после запуска индикатора) в HEX-редакторе. Там видны все комбинации символов - "\r\n". После чтения, взамен, появляются символы "rn".
05:14:06 News_3 EURUSD,M5: 68 117
05:14:06 News_3 EURUSD,M5: 69 115
05:14:06 News_3 EURUSD,M5: 70 10
05:14:06 News_3 EURUSD,M5: 71 83
05:14:06 News_3 EURUSD,M5: 72 117
05:14:06 News_3 EURUSD,M5: 73 110
05:14:06 News_3 EURUSD,M5: 74 32
05:14:06 News_3 EURUSD,M5: 75 65
05:14:06 News_3 EURUSD,M5: 76 112
Этот код работал в воскресение, когда не было котировок! Запустил в понедельник, когда котировки пошли, перестал правильно читать файл.
Это совсем непонятно. Какая связь?...
============================
Посмотрел внимательно... Оказывается, символы "\r" и "\n" после чтения произвольно меняется на какой-нибудь другой!
Разобрался! Комбинация "\r\n" заменяется на "\n"! Зачем?
Повторю вопрос - Зачем?
Там же есть макрос с параметром. Как-то странно этот параметр обрабатывается компилятором. В С++ можно имя параметра любое вставить. Потом оно подменяется переменной. Тут же, в MQL, только то, которое используется в коде. Т.е. только имя переменной.
Вот ещё проблемка - не рисуются объекты в тестере. Причём я не знаю, было ли такое раньше, или только в последних билдах появислоь, т.к. никогда не делал этого раньше, как-то не доводилось.
Простой код советника, который при размещении должен нарисовать линию на графике. И рисует, но не в тестере. В тестере почему-то выдаёт ошибку 4202 ERR_OBJECT_DOES_NOT_EXIST. Конечно does not exist, потому я его и создаю. :) Что ему надо?
Вот ещё проблемка - не рисуются объекты в тестере. Причём я не знаю, было ли такое раньше, или только в последних билдах появислоь, т.к. никогда не делал этого раньше, как-то не доводилось. Вот простой код советника - при размещении должен нарисовать линию на графике. И рисует, но не в тестере. В тестере почему-то выдаёт ошибку 4202 ERR_OBJECT_DOES_NOT_EXIST. Конечно does not exist, потому я его и создаю. :) Что ему надо?
А если
if(ObectFind(бла-бла-бла)<0) ObjectCteate(бла-бла-бла)
А если
if(ObectFind(бла-бла-бла)<0) ObjectCteate(бла-бла-бла)
При чём здесь это? Когда запускем визуализацию, понятно, что никаких объектов на графике ещё нет. Собственно, и ошибка сообщает об этом же. Почему-то.
При чём здесь это? Когда запускется тестер в режиме визуализации, понятно, что никаких объектов на графике ещё нет. Собственно, и ошибка сообщает об этом же.
Вам ехать? Или шашечки? Если ехать, то делайте. Если шашечки, то ждите ответа разработчиков.
У меня в тестере работает и в OnInit() и в OnTick(). Не нужно - звиняйте.
Мне линию нарисовать. Если у вас рисует - покажите свой код, если не жалко.
ЗЫ. Добавил я сейчас в код эту проверку. Естественно, ничего не изменилось.
Мне линию нарисовать. Если у вас рисует - покажите свой код, если не жалко.
ЗЫ. Добавил я сейчас в код эту проверку. Ничего не изменилось, как и ожидалось.
Некорректно работает функция ChartXYToTimePrice. Если координата X находится слева от нулевого бара на графике - то координаты преобразуются как и положено. А если координата X находится справа от нулевого бара - функция возвращает ошибку 4051 (Недопустимое значение параметра функции)
Я уже про это то же писал:
Errors, MetaTrader 4, Открыта, Начата: 2014.01.13 13:59, #928691
Comment(shirina," ",shirina-50," ",y," ",x);
Но к сожалению че то не как,
Ренат обратите на это внимание, если зона х и у координат находятся в видимом диапазоне а так же дата и время по шкале находятся в видимом диапазоне то
ChartXYToTimePrice Все таки должна возвращать координаты х и у при их запросе из под видимого времени и наоборот...
Даже если это видимое время еще не наступило !
Ваш вариант работает, спасибо за наводку. Но дело, конечно же, не в проверке наличия объекта, которого заведомо нет. Есть два варианта функции ObjectCreate() - с указанием ChartID и без него. В моём коде первый вариант, в вашем - второй. В тестере, как выяснилось, работает только второй вариант.