Exchange.WorkingTime 2012

Exchange.WorkingTime 2012
Atom
2/12/2012
dvoris


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: 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: Извиняюсь, речь, конечно же, про TraderHelper.IsTradeDate. Пока написал свою проверку, не проблема. Есть проблема со справочниками [angry]

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

Могу помочь. Есть метод

public static bool IsTradeDate(this WorkingTime workingTime, DateTime date, bool checkHolidays = false)

а есть метод

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: я и написал TraderHelper.IsTradeDate [bored]

dvoris: TraderHelper.IsTradeDate(exchange, datetime, false)

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

Если на самом деле используется этот метод, просто передаётся Exchange.Rts.WorkingTime - выведите перед методом

Exchange.Rts.WorkingTime.SpecialHolidays.Contains(date);
Thanks:

dvoris

Avatar
Date: 2/13/2012
Reply


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

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

        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 как в последнем вашем куске кода?

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

И, ещё раз, если используется

public static bool IsTradeDate(this WorkingTime workingTime, DateTime date, bool checkHolidays = false)

выведите

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: Ваш 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