Номер бара по времени

 
необходимо узнать номер бара на графике время открытия которого текущий день в 00:00. Верна ли запись iBarShift(NULL,NULL,StrToTime("Year().Month().Day() 00:00")); ?
Результат Print("Time =",TimeToStr(StrToTime("Year().Month().Day() 00:00")));
2005.07.26 10:04:33 proverka EURUSD,M1: Time =2001.01.01 00:00
 
Должно сработать.
Вот стандартный пример:
datetime some_time=D'2004.03.21 12:00';
int shift=iBarShift("",0,some_time);
Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);
 
Должно сработать.
Вот стандартный пример:
datetime some_time=D'2004.03.21 12:00';
int shift=iBarShift("",0,some_time);
Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);


может быть и работает когда известно конкретное datetime some_time=D'2004.03.21 12:00. Меня интересует запиь Print("Time =",TimeToStr(StrToTime("Year().Month().Day() 00:00"))); проверьте что увас получится
 
А откуда взялся такой способ StrToTime("Year().Month().Day() 00:00") представления даты?
Это же просто символьная строка!
 
А откуда взялся такой способ StrToTime("Year().Month().Day() 00:00") представления даты?
Это же просто символьная строка!

Результат Print("Time =",StrToTime("Year().Month().Day() 00:00"));
2005.07.26 11:39:29 proverka EURUSD,M1: Time =978307200
т.е Time =2001.01.01 00:00 - нормальное выполнение, если бы время показало точное.

datetime StrToTime( string value)


Функция преобразует строку содержащую время и/или дату в формате "yyyy.mm.dd [hh:mi"] в тип datetime (дата, время).

Что неправильно в моей записи.
Как бы вы нашли номер бара на графике если известны только часы и минуты (00:00), год, месяц, день текущие. Или мне каждый день надо в советнике записывать конкретную полную дату.
 
Мне надо на минутном графике найти дневной маскимум. Я испоьзую
MAX = High[Highest(NULL,NULL,MODE_HIGH,PER,0)];
где PER= iBarShift(NULL,NULL,StrToTime("Year().Month().Day() 00:00"))
 
В данном случае (текущий день в 00:00) я бы написал так:


datetime dt=CurTime()-(CurTime()%86400);
int shift=iBarShift("",0,dt);
Print("shift of bar with open time ",TimeToStr(dt)," is ",shift);
 
К сожалению, в билде 177 вылез креш на этом коде - уже исправили.
Сегодня выпустим билд 178 с исправлениями.
 
В данном случае (текущий день в 00:00) я бы написал так:


datetime dt=CurTime()-(CurTime()%86400);
int shift=iBarShift("",0,dt);
Print("shift of bar with open time ",TimeToStr(dt)," is ",shift);


1. Что такое 86400?
2. При запуске такого скрипта выдается критическая ошибка. Это только у меня ?
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
datetime dt=CurTime()-(CurTime()%86400);
int shift=iBarShift("",0,dt);
Print("shift of bar with open time ",TimeToStr(dt)," is ",shift);
//----
return(0);
}
 
datetime dt=CurTime()-(CurTime()%86400); с этим ясно
int shift=iBarShift("",0,dt); - строка вызывает критическую ошибку!
 
datetime dt=CurTime()-(CurTime()%86400); с этим ясно
int shift=iBarShift("",0,dt); - строка вызывает критическую ошибку!


Все разобрался, спасибо большое!
Причина обращения: