if (sec.Bars[i].Date.TimeOfDay == new TimeSpan( 10, 0, 0 ))
но так лучше не сравнивать, потому что бара в 10:00 может и не быть.
Теоретический может не быть. На практике не знаю, у меня мало опыта, но думаю на ликвидных инструментах это довольно безопасно. В отличие от измерения времени в барах - тут пропуски баров регулярные из-за клиринга.
Я бы нашел первый и последний бар предыдущего дня так:
var j = 0;
var lastBar =0;
var firstBar =0;
while (sec.Bars[i-j].Date.Day==sec.Bars[i].Date.Day)
{
j++;
lastBar = i-j;
}
j = 0;
while (sec.Bars[lastBar-j] .Date.Day==sec.Bars[lastBar].Date.Day)
{
firstBar = lastBar - j;
j++;
}