Календарь торгов

Календарь торгов
Atom
8/23/2013
Bond


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

Tags:


Thanks:


Bond

Avatar
Date: 8/24/2013
Reply


На 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
Thanks:

Mikhail Sukhov

Avatar
Date: 8/24/2013
Reply


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

Bond

Avatar
Date: 8/25/2013
Reply


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


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

Code

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) - не присутствует выходной в коде!!!
			};
Thanks:

Bond

Avatar
Date: 8/25/2013
Reply


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

static ExchangeBoard()
		
            // ÷ñÒ326600818êÖ0õæ÷http://stocksharp.com/fo...918/Kaliendar--torghov/
÷ñÒ326600818êÖ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 (243)
Thanks: Mikhail Sukhov

Bond

Avatar
Date: 8/25/2013
Reply


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

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,
			};


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

Mikhail Sukhov

Avatar
Date: 8/25/2013
Reply


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

Bond

Avatar
Date: 9/4/2013
Reply


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

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

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,
			};
Thanks:


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

loading
clippy