Exchange.WorkingTime 2012
Atom
12.02.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;

Теги:


Спасибо:


1 2  >
dvoris

Фотография
Дата: 12.02.2012
Ответить


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

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

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

Alexander

Фотография
Дата: 13.02.2012
Ответить


dvoris
TraderHelper.IsTradeTrade(exchange, datetime, false)


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

dvoris

Фотография
Дата: 13.02.2012
Ответить


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

Alexander

Фотография
Дата: 13.02.2012
Ответить


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)


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

dvoris

Фотография
Дата: 13.02.2012
Ответить


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

Alexander

Фотография
Дата: 13.02.2012
Ответить


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


dvoris
TraderHelper.IsTradeDate(exchange, datetime, false)


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

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

dvoris

Фотография
Дата: 13.02.2012
Ответить


В общем, ещё раз.. просьба проверить корректность работы 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);
        }


Спасибо:

Alexander

Фотография
Дата: 13.02.2012
Ответить


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

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

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

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


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

выведите
Код
workingTime.SpecialHolidays.Contains(date);
Спасибо:

Alexander

Фотография
Дата: 13.02.2012
Ответить


Ваш IsTradeDateTime == IsTradeDate && IsTradeTime
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


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 (?)


Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy