Видимо я не правильно вопросы задал, т.к. ответ ни на один не получил. Помогите разобраться с логикой некоторых интересующих меня вопросов.
Вопрос 1:
как надо прописать кусок кода, чтобы позу открыть в 18:44 на открытии. Свеча закроется в 18:45 для уточнения. Из другой ветки я прочитал, что i + 1 это текущий открытый бар. А это означает, что в момент времени 18:44 открывается новый бар i + 1 и это означает, что в заявке надо указывать именно i + 1, чтобы заявка на открытии сработала.
Мой вариант не сработал.
if (source.Bars[i].Date.Hour == 18 && source.Bars[i].Date.Minute == 44) source.Positions.BuyAtMarket(i + 1, 1, "LE");

Если я правильно понял, TSlab присваивает свече на минуту меньше реального времени. Если время 18:44:01 то лог отображает время свечи 18:43:00. И если следовать этой логике и мне надо открыть позу в в 18:44 то скорее надо так
if (source.Bars[i].Date.Hour == 18 && source.Bars[i].Date.Minute == 43) source.Positions.BuyAtMarket(i + 1, 1, "LE");
поправьте меня если я не прав.

Вопрос 2:
Если я к примеру использую 15 мин таймфрейм и есть условие, что позу могу открыть с 19:00 до 20:00 и если следовать той логике, что время свечи будет отставать на 1 шаг таймфрейма, то условие должно быть таким
source.Bars[i].Date.Hour == 18 && source.Bars[i].Date.Minute == 45 || source.Bars[i].Date.Hour == 19
поправьте меня если я не прав.

Вопрос 3:
как ограничить работу кода только будними днями, как должно выглядеть условие в C#? Это необходимо для того, чтобы в случае торгов в выходной день не были учтены данные свечек для расчета индикаторов.

Вопрос 4:
Если я хочу открыть позу по цене открытия текущего бара в момент его открытия, заявка должна быть такая?
source.Positions.SellAtPrice(i + 1, 1, source.Bars[i+1].Open, "ShE");