Календарь торгов
Atom Ответить
23.08.2013


Народ, а вообще есть исторический календарь рабочих торговых дней биржи? Чтобы можно было проверить исторические данные. Были торги в этот день или нет? Может это можно как-то автоматизировать?

Теги:


Спасибо:




7 Ответов
Bond

Фотография
Курсы
Дата: 24.08.2013
Ответить


На 2013 год:
http://moex.com/s690
На 2012 год:
http://moex.com/a254
На 2011 год:
http://www.rts.ru/s355
На 2010 год:
http://www.rts.ru/a19524
На 2009 год:
http://www.rts.ru/a17902
На 2008 год:
http://www.rts.ru/a15065
На 2007 год:
http://www.rts.ru/a13059
На 2006 год:
http://www.rts.ru/a743
На 2005 год:
http://www.rts.ru/a7751
На 2004 год:
http://www.rts.ru/a6598
На 2003 год:
http://www.rts.ru/a5194
На 2002 год:
http://www.rts.ru/a3414
На 2001 год:
http://www.rts.ru/a742
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.08.2013
Ответить


За 2011-2013 уже присутствуют в ExchangeBoard.Forts и ММВБ площадок.
Спасибо:

Bond

Фотография
Курсы
Дата: 24.08.2013
Ответить


Михаил Сухов Перейти
За 2011-2013 уже присутствуют в ExchangeBoard.Forts и ММВБ площадок.


Посмотрел исходный код... Надеюсь это старая версия, потому что календарь не верный!

Код

var specialWorkingDays = new[]
			{
				new DateTime(2011, 3, 5),
				
				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(2011, 1, 3),
				new DateTime(2011, 1, 4),
				new DateTime(2011, 1, 5),
				new DateTime(2011, 1, 6),
				new DateTime(2011, 1, 7),
				new DateTime(2011, 1, 10),
				new DateTime(2011, 2, 23),
				new DateTime(2011, 3, 7),
				new DateTime(2011, 3, 8),
				new DateTime(2011, 5, 2),
				new DateTime(2011, 5, 9),
				new DateTime(2011, 6, 13),
				new DateTime(2011, 11, 4),

				new DateTime(2012, 1, 2),
				new DateTime(2012, 2, 23), - не присутствует выходной в коде!!!
				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),

				new DateTime(2013, 1, 1),
				new DateTime(2013, 1, 2),
				new DateTime(2013, 1, 3),
				new DateTime(2013, 1, 4),
				new DateTime(2013, 1, 7),
				new DateTime(2013, 3, 8),
				new DateTime(2013, 5, 1),
				new DateTime(2013, 5, 2), - нет выходного дня на бирже!!!
				new DateTime(2013, 5, 3),
				new DateTime(2013, 5, 9),
				new DateTime(2013, 6, 12), 
				new DateTime(2013, 11, 4) - не присутствует выходной в коде!!!
			};
Автор топика
Спасибо:

Bond

Фотография
Курсы
Дата: 24.08.2013
Ответить


Доработал календарь в соответствии с данными биржи за 2001 - 2013 год. Просьба разработчикам внести изменения в исходный код API и Гидры для правильной работы и тестирования.
Код

static ExchangeBoard()
		
            // ÷ñÒ2141045121êÖ0õæ÷https://stocksharp.ru/fo...3918/Kaliendar--torghov/÷ñÒ2141045121êÖ1õæ÷
			
            var specialWorkingDays = new[]
			{
                new DateTime(2001, 3, 11),
                new DateTime(2001, 4, 28),
                new DateTime(2001, 6, 9),
                new DateTime(2001, 12, 29),

                new DateTime(2002, 4, 27),
                new DateTime(2002, 5, 18),
                new DateTime(2002, 11, 10),
                new DateTime(2002, 12, 15),

                new DateTime(2003, 1, 4),
                new DateTime(2003, 1, 5),
                new DateTime(2003, 6, 21),                

                new DateTime(2005, 3, 5),
                new DateTime(2005, 5, 14),

                new DateTime(2006, 2, 26),
                new DateTime(2006, 5, 6),

                new DateTime(2007, 4, 28),
                new DateTime(2007, 6, 9),

                new DateTime(2008, 5, 4),
                new DateTime(2008, 6, 7),
                new DateTime(2008, 11, 1),

                new DateTime(2009, 1, 11),
				
				new DateTime(2010, 2, 27),
                new DateTime(2010, 11, 13),

                new DateTime(2011, 3, 5),
				
				new DateTime(2012, 3, 11),
				new DateTime(2012, 4, 28),
				new DateTime(2012, 6, 9),
			};

			var specialHolidays = new[]
			{
                new DateTime(2001, 1, 1),
				new DateTime(2001, 1, 2),
				new DateTime(2001, 1, 8),
				new DateTime(2001, 3, 8),
				new DateTime(2001, 3, 9),
				new DateTime(2001, 4, 30),
				new DateTime(2001, 5, 1),
				new DateTime(2001, 5, 2),
				new DateTime(2001, 5, 9),
				new DateTime(2001, 6, 11),
				new DateTime(2001, 6, 12),
				new DateTime(2001, 11, 7),
				new DateTime(2001, 12, 12),
				new DateTime(2001, 12, 31),

                new DateTime(2002, 1, 1),
				new DateTime(2002, 1, 2),
				new DateTime(2002, 1, 7),
				new DateTime(2002, 2, 25),
				new DateTime(2002, 3, 8),
				new DateTime(2002, 5, 1),
				new DateTime(2002, 5, 2),
				new DateTime(2002, 5, 3),
				new DateTime(2002, 5, 9),
				new DateTime(2002, 5, 10),
				new DateTime(2002, 6, 12),
				new DateTime(2002, 11, 7),
				new DateTime(2002, 11, 8),
				new DateTime(2002, 12, 12),
				new DateTime(2002, 12, 13),

                new DateTime(2003, 1, 1),
				new DateTime(2003, 1, 2),
				new DateTime(2003, 1, 3),
				new DateTime(2003, 1, 6),
				new DateTime(2003, 1, 7),
				new DateTime(2003, 2, 24),
				new DateTime(2003, 3, 10),
				new DateTime(2003, 5, 1),
				new DateTime(2003, 5, 2),
				new DateTime(2003, 5, 9),
				new DateTime(2003, 6, 12),
				new DateTime(2003, 6, 13),
				new DateTime(2003, 11, 7),
				new DateTime(2004, 12, 12),

                new DateTime(2004, 1, 1),
				new DateTime(2004, 1, 2),				
				new DateTime(2004, 1, 7),
				new DateTime(2004, 2, 23),
				new DateTime(2004, 3, 8),
				new DateTime(2004, 5, 3),
				new DateTime(2004, 5, 4),
				new DateTime(2004, 5, 10),
				new DateTime(2004, 6, 14),
				new DateTime(2004, 12, 13),

				new DateTime(2005, 1, 3),
				new DateTime(2005, 1, 4),
				new DateTime(2005, 1, 5),
				new DateTime(2005, 1, 6),
				new DateTime(2005, 1, 7),
				new DateTime(2005, 1, 10),
				new DateTime(2005, 2, 23),
				new DateTime(2005, 3, 7),
				new DateTime(2005, 3, 8),
				new DateTime(2005, 5, 2),
				new DateTime(2005, 5, 9),
				new DateTime(2005, 5, 10),
				new DateTime(2005, 6, 13),
				new DateTime(2005, 11, 4),

				new DateTime(2006, 1, 2),
				new DateTime(2006, 1, 3),
				new DateTime(2006, 1, 4),
				new DateTime(2006, 1, 5),
				new DateTime(2006, 1, 6),
				new DateTime(2006, 1, 9),
				new DateTime(2006, 2, 23),
				new DateTime(2006, 2, 24),
				new DateTime(2006, 3, 8),
				new DateTime(2006, 4, 30),
				new DateTime(2006, 5, 1),
				new DateTime(2006, 5, 8),
				new DateTime(2006, 5, 9),
				new DateTime(2006, 6, 12),
				new DateTime(2006, 11, 6),

                new DateTime(2007, 1, 1),
				new DateTime(2007, 1, 2),
				new DateTime(2007, 1, 3),
				new DateTime(2007, 1, 4),
				new DateTime(2007, 1, 5),
				new DateTime(2007, 1, 8),
				new DateTime(2007, 2, 23),
				new DateTime(2007, 3, 8),
				new DateTime(2007, 4, 30),
				new DateTime(2007, 5, 1),
				new DateTime(2007, 5, 9),
				new DateTime(2007, 6, 11),
				new DateTime(2007, 6, 12),
				new DateTime(2007, 11, 5),
				new DateTime(2007, 12, 31),

                new DateTime(2008, 1, 1),
				new DateTime(2008, 1, 2),
				new DateTime(2008, 1, 3),
				new DateTime(2008, 1, 4),
				new DateTime(2008, 1, 7),
				new DateTime(2008, 1, 8),
				new DateTime(2008, 2, 25),
				new DateTime(2008, 3, 10),
				new DateTime(2008, 5, 1),
				new DateTime(2008, 5, 2),
				new DateTime(2008, 5, 9),
				new DateTime(2008, 6, 12),
				new DateTime(2008, 6, 13),
				new DateTime(2008, 11, 3),
				new DateTime(2008, 11, 4),

                new DateTime(2009, 1, 1),
				new DateTime(2009, 1, 2),
				new DateTime(2009, 1, 5),
				new DateTime(2009, 1, 6),
				new DateTime(2009, 1, 7),
				new DateTime(2009, 1, 8),
				new DateTime(2009, 1, 9),
				new DateTime(2009, 2, 23),
				new DateTime(2009, 3, 9),
				new DateTime(2009, 5, 1),
				new DateTime(2009, 5, 11),
				new DateTime(2009, 6, 12),
				new DateTime(2009, 11, 4),

                new DateTime(2010, 1, 1),
                new DateTime(2010, 1, 4),
                new DateTime(2010, 1, 5),
                new DateTime(2010, 1, 6),
                new DateTime(2010, 1, 7),
                new DateTime(2010, 1, 8),
				new DateTime(2010, 2, 22),
				new DateTime(2010, 2, 23),
				new DateTime(2010, 3, 8),
				new DateTime(2010, 5, 3),
				new DateTime(2010, 5, 10),
				new DateTime(2010, 6, 14),
				new DateTime(2010, 11, 4),
				new DateTime(2010, 11, 5),
				
				new DateTime(2011, 1, 3),
				new DateTime(2011, 1, 4),
				new DateTime(2011, 1, 5),
				new DateTime(2011, 1, 6),
				new DateTime(2011, 1, 7),
				new DateTime(2011, 1, 10),
				new DateTime(2011, 2, 23),
				new DateTime(2011, 3, 7),
				new DateTime(2011, 3, 8),
				new DateTime(2011, 5, 2),
				new DateTime(2011, 5, 9),
				new DateTime(2011, 6, 13),
				new DateTime(2011, 11, 4),

				new DateTime(2012, 1, 2),
				new DateTime(2012, 2, 23),
				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),

				new DateTime(2013, 1, 1),
				new DateTime(2013, 1, 2),
				new DateTime(2013, 1, 3),
				new DateTime(2013, 1, 4),
				new DateTime(2013, 1, 7),
				new DateTime(2013, 3, 8),
				new DateTime(2013, 5, 1),
				new DateTime(2013, 5, 9),
				new DateTime(2013, 6, 12),
				new DateTime(2013, 11, 4)
			};
ExchangeBoard.cs 6 KB (0)
Автор топика
Спасибо: Mikhail Sukhov

Bond

Фотография
Курсы
Дата: 24.08.2013
Ответить


Также непонятки с рабочим временем биржи за 2001 - 2009 годы.
По данным с биржи выходит так:
Код

Forts = new ExchangeBoard
			{
				Code = "FORTS",
				WorkingTime = new WorkingTime
				{
					Times = new[]
					{
                        // if Year = 2009 или 2008 или 2007 или 2006 или 2005 или 2004 или 2003 или 2002 или 2001
						    new Range<TimeSpan>("10:30:00".To<TimeSpan>(), "14:00:00".To<TimeSpan>()),          // работает с "10:30:00"

                            // if Year = 2008 или 2007
                                new Range<TimeSpan>("14:03:00".To<TimeSpan>(), "18:00:00".To<TimeSpan>()),      // работает до "18:00:00" ?
                            // if Year = 2002
                                new Range<TimeSpan>("14:03:00".To<TimeSpan>(), "18:30:00".To<TimeSpan>()),      // работает до "18:30:00" ?
                            // if Year = 2009 или 2006 или 2005 или 2004 или 2003 или 2002 или 2001
                                new Range<TimeSpan>("14:03:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),      // работает до "18:45:00"

						    new Range<TimeSpan>("19:00:00".To<TimeSpan>(), "23:50:00".To<TimeSpan>())           // работает до ???

                        // if Year = 2010 или 2011 или 2012 или 2013
						    new Range<TimeSpan>("10:00:00".To<TimeSpan>(), "14:00:00".To<TimeSpan>()),          // работает с "10:00:00" 
						    new Range<TimeSpan>("14:03:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),
						    new Range<TimeSpan>("19:00:00".To<TimeSpan>(), "23:50:00".To<TimeSpan>())

					},
					SpecialWorkingDays = ArrayHelper.Clone(specialWorkingDays),
					SpecialHolidays = ArrayHelper.Clone(specialHolidays),
				},
				ExpiryTime = new TimeSpan(18, 45, 00),
				IsSupportAtomicReRegister = true,
				Exchange = Exchange.Me,
			};


Может у кого-нибудь есть более точная информация?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.08.2013
Ответить


По датам - ок, а с диапазоном - не в ближайшем релизе.
Спасибо: Bond

Bond

Фотография
Курсы
Дата: 04.09.2013
Ответить


Михаил Сухов Перейти
По датам - ок, а с диапазоном - не в ближайшем релизе.

Разобрался со временем работы биржи! Проверил по историческим данным. Просьба внести в S# и Гидру.
Данных за 2001 и 2002 год мало и время там прыгает странно, ну, и ладно. Время работы начинается с 01.01.2003.
Код

Forts = new ExchangeBoard
			{
				Code = "FORTS",
				WorkingTime = new WorkingTime
				{
					Times = new[]
					{
                        // если с 15.05.2010 по 2013 год то
				        new Range<TimeSpan>("10:00:00".To<TimeSpan>(), "14:00:00".To<TimeSpan>()),      // работает с "10:00:00" до "14:00:00"

                        // если с 01.01.2003(что до хз) по 14.05.2010 то
			            new Range<TimeSpan>("10:30:00".To<TimeSpan>(), "14:00:00".To<TimeSpan>()),      // работает с "10:30:00" до "14:00:00"
                        //-----------------------------------------------------------------------------------------------------------------
                        // если с 26.05.2008 по 2013 год
                        new Range<TimeSpan>("14:03:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),      // работает с "14:03:00" до "18:45:00"

                        // если с 26.03.2007 по 23.05.2008 то
                        new Range<TimeSpan>("14:03:00".To<TimeSpan>(), "18:00:00".To<TimeSpan>()),      // работает с "14:03:00" до "18:00:00"

                        // если с 01.01.2003(что до хз) по 23.03.2007
                        new Range<TimeSpan>("14:03:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),      // работает с "14:03:00" до "18:45:00"
                        //-----------------------------------------------------------------------------------------------------------------                            
                        // если с 26.05.2008 по 2013 год то (вечерняя сессия)
				        new Range<TimeSpan>("19:00:00".To<TimeSpan>(), "23:50:00".To<TimeSpan>())       // работает с "19:00:00" до "23:50:00"
					},
					SpecialWorkingDays = ArrayHelper.Clone(specialWorkingDays),
					SpecialHolidays = ArrayHelper.Clone(specialHolidays),
				},
				ExpiryTime = new TimeSpan(18, 45, 00),  //!!! если с 24.03.2007 по 25.05.2008 то работает до "18:00:00"!
				IsSupportAtomicReRegister = true,
				Exchange = Exchange.Me,
			};

Micex = new ExchangeBoard
			{
				Code = "MICEX",
				WorkingTime = new WorkingTime
				{
					Times = new[]
					{
                        // если с 01.09.2011 по 2013 год то
				        new Range<TimeSpan>("10:00:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),      // работает с "10:00:00" до "18:45:00"

                        // если с 30.09.2008 по 31.08.2011
			            new Range<TimeSpan>("10:30:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),      // работает с "10:30:00" до "18:45:00"
 
                        // если с 26.03.2007 по 29.09.2008
                        new Range<TimeSpan>("10:30:00".To<TimeSpan>(), "17:50:00".To<TimeSpan>()),      // работает с "10:30:00" до "17:50:00"

                        // если с 01.01.2003(что до хз) по 23.03.2007 то
			            new Range<TimeSpan>("10:30:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),      // работает с "10:30:00" до "18:45:00"
					},
					SpecialWorkingDays = ArrayHelper.Clone(specialWorkingDays),
					SpecialHolidays = ArrayHelper.Clone(specialHolidays),
				},
				IsSupportMarketOrders = true,
				Exchange = Exchange.Me,
			};
Автор топика
Спасибо:


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

loading
clippy