Exchange.WorkingTime 2012


Exchange.WorkingTime 2012
Atom
2/12/2012


Code
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;

Tags:


Thanks:


1 2  >
dvoris

Avatar
Date: 2/12/2012
Reply


Вероятно, баг (?):

После заведения нужных дат в exchange
TraderHelper.IsTradeDate(workingTime, datetime, false)
выдаёт true на даты 2012-12-31, 2012-4-30 и т.д. (понедельники, которые должны быть выходными)

P.S. удостоверился, что exchange.WorkingTime.SpecialWorkingDays и exchange.WorkingTime.SpecialHolidays заполнены как надо.
Thanks:

Alexander

Avatar
Date: 2/13/2012
Reply


dvoris Go to
TraderHelper.IsTradeTrade(exchange, datetime, false)


Такого метода в S# (4.0.18) нет.
Какой версией пользуетесь?
Thanks:

dvoris

Avatar
Date: 2/13/2012
Reply


Извиняюсь, речь, конечно же, про TraderHelper.IsTradeDate. Пока написал свою проверку, не проблема.
Есть проблема со справочниками [angry]
Thanks:

Alexander

Avatar
Date: 2/13/2012
Reply


dvoris Go to
Извиняюсь, речь, конечно же, про TraderHelper.IsTradeDate. Пока написал свою проверку, не проблема.
Есть проблема со справочниками [angry]


Опять мимо. Нет такого метода. Может с третьей попытки получится определить метод, который вы используете? :)

Могу помочь.
Есть метод
Code
public static bool IsTradeDate(this WorkingTime workingTime, DateTime date, bool checkHolidays = false)

а есть метод
Code
public static bool IsTradeTime(this Exchange exchange, DateTime dateTime)


С высокой долей вероятности вы используете один из них.
Thanks:

dvoris

Avatar
Date: 2/13/2012
Reply


я и написал TraderHelper.IsTradeDate [bored]
Аргументы в этом случае, понятно, workingtime, datetime, просто сначала писал про проблему с IsTradeTime, которую уже решил.
Thanks:

Alexander

Avatar
Date: 2/13/2012
Reply


dvoris Go to
я и написал TraderHelper.IsTradeDate [bored]


dvoris
TraderHelper.IsTradeDate(exchange, datetime, false)


В IsTradeDate exchange передавать нельзя. У вас компилироваться не будет, нет метода с этой сигнатурой.

Если на самом деле используется этот метод, просто передаётся Exchange.Rts.WorkingTime - выведите перед методом
Code
Exchange.Rts.WorkingTime.SpecialHolidays.Contains(date);
Thanks:

dvoris

Avatar
Date: 2/13/2012
Reply


В общем, ещё раз.. просьба проверить корректность работы TraderHelper.IsTradeDate

Заодно предлагаю ввести метод проверяющий сразу дату и время, чтоб два раза не бегать :)

Code
        public bool IsTradeDateTime(WorkingTime workingTime, DateTime datetime)
        {
            bool tradedate = true;

            DateTime date = new DateTime(datetime.Year,datetime.Month,datetime.Day);
            
            if (workingTime.SpecialWorkingDays.IndexOf(date) != -1)
            {
                tradedate = true;
            }
            else
            {
                if (workingTime.SpecialHolidays.IndexOf(date) != -1)
                {
                    tradedate = false;
                }
                else
                {
                    if ((date.DayOfWeek == DayOfWeek.Saturday) || (date.DayOfWeek == DayOfWeek.Sunday)) tradedate = false;
                }
            }

            if (!tradedate) return false;

            return TraderHelper.IsTradeTime(workingTime, datetime);
        }


Thanks:

Alexander

Avatar
Date: 2/13/2012
Reply


Давайте с начала.

Какой метод вы используете и он у вас работает не так как вы ожидаете?
А то 2 раза вы говорили о тех методах, которых в S# просто нет.

IsTradeDate? Или IsTradeTime как в последнем вашем куске кода?

Напишите полностью метод, указывая что вы туда передаёте (значения, не переменные).


И, ещё раз, если используется
Code
public static bool IsTradeDate(this WorkingTime workingTime, DateTime date, bool checkHolidays = false)

выведите
Code
workingTime.SpecialHolidays.Contains(date);
Thanks:

Alexander

Avatar
Date: 2/13/2012
Reply


Ваш IsTradeDateTime == IsTradeDate && IsTradeTime
Thanks:

dvoris

Avatar
Date: 2/13/2012
Reply


Alexander Mukhanchikov Go to
Ваш 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 (?)


Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy