var specialWorkingDays = new[]
{
new DateTime(2012, 3, 11),
new DateTime(2012, 4, 28),
new DateTime(2012, 6, 9),
new DateTime(2012, 12, 29),
};
var specialHolidays = new[]
{
new DateTime(2012, 1, 2),
new DateTime(2012, 3, 8),
new DateTime(2012, 3, 9),
new DateTime(2012, 4, 30),
new DateTime(2012, 5, 1),
new DateTime(2012, 5, 9),
new DateTime(2012, 6, 11),
new DateTime(2012, 6, 12),
new DateTime(2012, 11, 5),
new DateTime(2012, 12, 31),
};
Exchange.Rts.WorkingTime.SpecialWorkingDays = specialWorkingDays;
Exchange.Rts.WorkingTime.SpecialHolidays = specialHolidays;
← Atrás
Comentarios (17)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
Вероятно, баг (?):
После заведения нужных дат в exchange TraderHelper.IsTradeDate(workingTime, datetime, false) выдаёт true на даты 2012-12-31, 2012-4-30 и т.д. (понедельники, которые должны быть выходными)
P.S. удостоверился, что exchange.WorkingTime.SpecialWorkingDays и exchange.WorkingTime.SpecialHolidays заполнены как надо.
Такого метода в S# (4.0.18) нет. Какой версией пользуетесь?
Извиняюсь, речь, конечно же, про TraderHelper.IsTradeDate. Пока написал свою проверку, не проблема.
Есть проблема со справочниками 😠
Опять мимо. Нет такого метода. Может с третьей попытки получится определить метод, который вы используете? :)
Могу помочь. Есть метод
а есть метод
С высокой долей вероятности вы используете один из них.
я и написал TraderHelper.IsTradeDate 😑 Аргументы в этом случае, понятно, workingtime, datetime, просто сначала писал про проблему с IsTradeTime, которую уже решил.
В IsTradeDate exchange передавать нельзя. У вас компилироваться не будет, нет метода с этой сигнатурой.
Если на самом деле используется этот метод, просто передаётся Exchange.Rts.WorkingTime - выведите перед методом
В общем, ещё раз.. просьба проверить корректность работы TraderHelper.IsTradeDate
Заодно предлагаю ввести метод проверяющий сразу дату и время, чтоб два раза не бегать :)
Давайте с начала.
Какой метод вы используете и он у вас работает не так как вы ожидаете? А то 2 раза вы говорили о тех методах, которых в S# просто нет.
IsTradeDate? Или IsTradeTime как в последнем вашем куске кода?
Напишите полностью метод, указывая что вы туда передаёте (значения, не переменные).
И, ещё раз, если используется
выведите
Ваш IsTradeDateTime == IsTradeDate && IsTradeTime
"TraderHelper.IsTradeDate(exchange.workingTime, datetime, false) выдаёт true на даты 2012-12-31, 2012-4-30 и т.д. (понедельники, которые должны быть выходными)" т.е. игнорит SpecialHolidays (?)
Если вызывать TraderHelper.IsTradeDate(exchange.workingTime, datetime, true) то выдаёт false на выходные, которые должны быть рабочими - игнорит SpecialWorkingDays (?)
Так, разобрались с 5го раза какой метод используете. Уже прогресс.
Давайте попробуем хотя бы с 3го раза получить ответ на заданный вопрос
Я исправился с именем метода во втором посте. Насчёт workingTime.SpecialHolidays.Contains(date):
Разобрался. Предложенный вами вариант будет работать, если обрезать время - IsTradeDate(.., t) && IsTradeDate(.., new DateTime(t.Year,t.Month,t.Day)) Видимо, IsTradeDate просто проверяет SpecialHolidays.Contains(t) и SpecialWorkingDays.Contains(t). Хотелось бы просто IsTradeDateTime(Trader.MarketTime), что и реализовал.
P.S. Плохо не видеть исходников :(
Есть метод IsTradeTime, который и проверяет всё что вам нужно:
🤨 #4 >>Извиняюсь, речь, конечно же, про TraderHelper.IsTradeDate
Как можно было узнать, что IsTradeTime проверяет и дату? В доке об этом не сказано :)
P.S. Плохо не видеть исходников.
Если день не торгуемый (выходной) - то очевидно что переданное время не торгуемое.
Если не очевидно по описанию метода - проверяется за пару минут тестом.