Хотя бы подскажите как обозначить бар в определенное время?
Например
double H = High[i] // как описать что i - это бар допустим в 12-33?
Спасибо.
Хотя бы подскажите как обозначить бар в определенное время?
Например
double H = High[i] // как описать что i - это бар допустим в 12-33?
Спасибо.
Используй функцию iBarShift()
Хотя бы подскажите как обозначить бар в определенное время?
Например
double H = High[i] // как описать что i - это бар допустим в 12-33?
Спасибо.
Если Вы хотите узнать номер бара для заданного времени, то смотрите описание функции iBarShift
datetime my_time=D'2008.06.16 12:33'; int i; double H; i=iBarShift(Symbol(),Period(),my_time); H=High[i];
Спасибо сейчас буду пробовать =)
Люди вы меня извините, может я засоряю форум, но просто другого подходящего места научится создавать индикаторы я не могу найти =)
Подскажите что не так
datetime my_time= D'2008.06.16 12:33' ;
int i;
double H;
i=iBarShift(NULL,0,my_time,FALSE);
H=High[i];
bool ObjectCreate("line",OBJ_HLINE,0,my_time,H);
первый вопрос, почему если я ставлю строчку datetime my_time= D'12:33:00' ; у меня появляется ошибка '12:33:00' - date literal string is incomplete, хотя я в хелпе посмотрел там так можно.
второй вопрос если остается такая строчка datetime my_time= D'2008.06.16 12:33' это значит что мне будет строиться линия ТОЛЬКО 16 июня? а если я запущу 17 она уже не построется? Отсюда кстати и попытки поменять строчку как в первом вопросе.
Третий вопрос. У меня ошибка 'ObjectCreate' - variable expected, то есть я неправильно видимо использую эту функцию?
И правильно ли я вообще понимаю смысл, если мне нужен этот индикатор каждый день, то по идее при включении индикатора он уже должен искать линию которую он нарисовал со вчера и удалять ее, а уже потом рисовать новую, а если написать программу так как сейчас есть, то каждый день будет просто новая полоска и в итоге у меня будет куча полосок на графике. Или нет?
Я еще раз извиняюсь если не там пишу, просто в газетах не видел объявлении о курсах по MQL, а учителей находить где то надо =)
Подскажите что не так
datetime my_time= D'2008.06.16 12:33' ;
int i;
double H;
i=iBarShift(NULL,0,my_time,FALSE);
H=High[i];
bool ObjectCreate("line",OBJ_HLINE,0,my_time,H);
первый вопрос, почему если я ставлю строчку datetime my_time= D'12:33:00' ; у меня появляется ошибка '12:33:00' - date literal string is incomplete, хотя я в хелпе посмотрел там так можно.
второй вопрос если остается такая строчка datetime my_time= D'2008.06.16 12:33' это значит что мне будет строиться линия ТОЛЬКО 16 июня? а если я запущу 17 она уже не построется? Отсюда кстати и попытки поменять строчку как в первом вопросе.
Третий вопрос. У меня ошибка 'ObjectCreate' - variable expected, то есть я неправильно видимо использую эту функцию?
И правильно ли я вообще понимаю смысл, если мне нужен этот индикатор каждый день, то по идее при включении индикатора он уже должен искать линию которую он нарисовал со вчера и удалять ее, а уже потом рисовать новую, а если написать программу так как сейчас есть, то каждый день будет просто новая полоска и в итоге у меня будет куча полосок на графике. Или нет?
Я еще раз извиняюсь если не там пишу, просто в газетах не видел объявлении о курсах по MQL, а учителей находить где то надо =)
1. У меня тоже не проходит такое описание, хотя судя по хэлпу это допустимо, может быть разработчики пояснят?
2. Да. Если Вам надо вычислять это ежесуточно, используйте функцию StrToTime.
3. bool - это тип возвращаемого значения. Можно писать так:
bool fl; fl = ObjectCreate("line",OBJ_HLINE,0,my_time,H);
либо так:
if ( ObjectCreate("line",OBJ_HLINE,0,my_time,H) ) { /* тут Ваш код */ }
если же Вас не интересует возвращаемое значение, то можете просто написать
ObjectCreate("line",OBJ_HLINE,0,my_time,H);
4. Просто перед рисованием удалите старый объект функцией ObjectDelete.
1. У меня тоже не проходит такое описание, хотя судя по хэлпу это допустимо, может быть разработчики пояснят?
2. Да. Если Вам надо вычислять это ежесуточно, используйте функцию StrToTime.
3. bool - это тип возвращаемого значения. Можно писать так:
либо так:
4. Просто перед рисованием удалите старый объект функцией ObjectDelete.Вот спасибо! Сейчас снова буду разбираться.
Вроде бы все получается уже строит линию по времени, но опять есть вопрос
datetime my_time;
int i;
double H;
my_time=StrToTime("15:51");
i=iBarShift(NULL,0,my_time,FALSE);
H=High[i];
ObjectCreate("line",OBJ_HLINE,0,my_time,H);
Вот сейчас 10-00 часов у меня, если я в строке my_time=StrToTime("15:51");указываю время прошлое, например 09:15, или 08:25 то рисует все хорошо, а если указываю будущее, например 15:51, как написано, то он мне рисует хай самой новой свечи. Вот например у меня сейчас 10-03 так он рисует хай по этому времени. Я удаляю линию, он рисует по следующей.
Я опять что то не так сделал? Мне нужно чтобы он дождался именно времени 12-33 и построил по хаю именно той свечи
Вот спасибо! Сейчас снова буду разбираться.
Вроде бы все получается уже строит линию по времени, но опять есть вопрос
datetime my_time;
int i;
double H;
my_time=StrToTime("15:51");
i=iBarShift(NULL,0,my_time,FALSE);
H=High[i];
ObjectCreate("line",OBJ_HLINE,0,my_time,H);
Вот сейчас 10-00 часов у меня, если я в строке my_time=StrToTime("15:51");указываю время прошлое, например 09:15, или 08:25 то рисует все хорошо, а если указываю будущее, например 15:51, как написано, то он мне рисует хай самой новой свечи. Вот например у меня сейчас 10-03 так он рисует хай по этому времени. Я удаляю линию, он рисует по следующей.
Я опять что то не так сделал? Мне нужно чтобы он дождался именно времени 12-33 и построил по хаю именно той свечи
В Вашей версии фукция iBarShift возврашает смешение ближайшего бара. Поскольку, для будущего времени бар не существует, то возвращается ближайший, т.е. 0-ой. Сделайте тогда уж вот так:
datetime my_time; int i; double H; my_time=StrToTime("15:51"); i=iBarShift(NULL,0,my_time,TRUE); if ( i >= 0 ) { H=High[i]; ObjectCreate("line",OBJ_HLINE,0,my_time,H); }Будьте внимательны при чтении документации :)
В Вашей версии фукция iBarShift возврашает смешение ближайшего бара. Поскольку, для будущего времени бар не существует, то возвращается ближайший, т.е. 0-ой. Сделайте тогда уж вот так:
Будьте внимательны при чтении документации :)А дату в my_time добавлять не надо. А то дату по умолчанию возьмет.
В Вашей версии фукция iBarShift возврашает смешение ближайшего бара. Поскольку, для будущего времени бар не существует, то возвращается ближайший, т.е. 0-ой. Сделайте тогда уж вот так:
Будьте внимательны при чтении документации :)exact | - | Возвращаемое значение если бар не найден. FALSE - iBarShift возвращает ближайший. TRUE - iBarShift возвращает -1. |
Это из помощника. Я просто тут не понял немного. False - это значит если нет бара, то он возвращает ближайщий, то есть 0 то есть последний который появился. А что значит TRUE ? То что возвращает просто число -1,если бар не найден?
А как тогда расшифровуется эта строчка
i=iBarShift(NULL,0,my_time,TRUE);
if (i>0)
То есть, как я понимаю, i это тот бар который я хочу проанализировать, на (NULL) текущем инструменте, в (0) периоде моего графика, во время my_time, и если этого бара не существует, то берется а) ближайший, и б) просто число -1? Вот тут мне не понятно.
А следующий оператор if (i>0) показывает чтобы этот бар не был последним? Только что появившимся?
Очередное спасибо за розъяснения.
Извините, не понял.
Константы даты и времени могут быть представлены в виде литеральной строки, которая состоит из 6 частей, представляющих числовое значение года, месяца, числа (либо числа, месяца, года), часа, минуты и секунды. Константа обрамляется одинарными кавычками и начинается с символа D. Может опускаться либо дата (год, месяц, число), либо время (часы, минуты, секунды), либо все вместе. Диапазон значений от 1 января 1970 года до 31 декабря 2037 года. Примеры: D'2004.01.01 00:00' // Новый Год D'1980.07.19 12:30:27' D'19.07.1980 12:30:27' D'19.07.1980 12' //равнозначно D'1980.07.19 12:00:00' D'01.01.2004' //равнозначно D'01.01.2004 00:00:00' D'12:30:27' //равнозначно D'[дата компиляции] 12:30:27' D'' //равнозначно D'[дата компиляции] 00:00:00' Внутреннее представление - длинное целое число размером 4 байта. Значение представляет собой количество секунд, прошедшее с 00:00 1 января 1970 года. |
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Очень нужно создать индикатор (я так думаю простенький). Начал читать книги по MQL, что то запутался и никак не могу понять как. Поэтому решился все таки создать тут тему.
Сообственно, нужно, чтобы индикатор отследил Хай свечи в определенное время,например в 12-33, и на котировке хая нарисовал горизонтальную линию.
Спасибо, если кто то поможет.