예제 #1
0
        public void MakeBarFromTicks()
        {
            Bar bar = BarsFactory.MakeBar(MakeTicks(), new DateTime(2012, 12, 01, 10, 00, 15));

            Assert.AreEqual(142100, bar.High);
            Assert.AreEqual(138808, bar.Low);
            Assert.AreEqual(140000, bar.Open);
            Assert.AreEqual(141000, bar.Close);
            Assert.AreEqual(17000, bar.Volume);
            Assert.AreEqual(new DateTime(2012, 12, 01, 10, 00, 15), bar.DateTime);
        }
예제 #2
0
        public void GetPart()
        {
            long interval = TimeSpan.TicksPerMinute;
            long from     = new DateTime(2012, 10, 23, 20, 20, 0).Ticks;
            long to       = from + interval;

            IEnumerable <Tick> ticks = BarsFactory.GetTicksInterval(this.ticks, from, to);

            Assert.IsTrue(ticks.Count() == 5);

            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 20), ticks.ElementAt(0).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 25), ticks.ElementAt(1).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 28), ticks.ElementAt(2).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 33), ticks.ElementAt(3).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 38), ticks.ElementAt(4).DateTime);
        }
예제 #3
0
        public override void OnItemAdded(Tick item)
        {
            if (barSettings.Symbol != item.Symbol)
            {
                return;
            }
            ((FakeTimeTracker)this.timeTracker).stop = item.DateTime;

            DateTime end = GetPeriodEndDate();

            if (this.tradingData.Get <IEnumerable <Tick> >().LastOrDefault(t => t.Symbol == item.Symbol).DateTime < end)
            {
                return;
            }

            if (BarExists(end))
            {
                return;
            }

            if (end > this.timeTracker.StartAt + this.timeTracker.Duration)
            {
                return;
            }

            DateTime begin = end.AddSeconds(-this.barSettings.Interval);

            IEnumerable <Tick> barTicks = GetTicksInRangeOf(item, begin, end);

            if (barTicks == null)
            {
                return;
            }

            if (barTicks.Count() == 0)
            {
                return;
            }

            Bar fresh = BarsFactory.MakeBar(barTicks, end);

            fresh.Interval = this.barSettings.Interval;

            this.logger.Log(String.Format("{0:dd/MM/yyyy H:mm:ss.fff}, {1}, добавлен новый бар {2}", DateTime.Now, this.GetType().Name, fresh.ToString()));

            this.tradingData.Get <ObservableCollection <Bar> >().Add(fresh);
        }
예제 #4
0
        public void OrderTicksByDate()
        {
            IEnumerable <Tick> orderedTicks = BarsFactory.OrderByDateTime(this.ticks);

            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 20), orderedTicks.ElementAt(0).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 25), orderedTicks.ElementAt(1).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 28), orderedTicks.ElementAt(2).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 33), orderedTicks.ElementAt(3).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 20, 38), orderedTicks.ElementAt(4).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 21, 10), orderedTicks.ElementAt(5).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 21, 20), orderedTicks.ElementAt(6).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 21, 23), orderedTicks.ElementAt(7).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 21, 45), orderedTicks.ElementAt(8).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 21, 58), orderedTicks.ElementAt(9).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 22, 20), orderedTicks.ElementAt(10).DateTime);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 22, 45), orderedTicks.ElementAt(11).DateTime);
        }
예제 #5
0
        public void OrderTicksByPrice()
        {
            IEnumerable <Tick> orderedTicks = BarsFactory.OrderByPrice(this.ticks);

            Assert.AreEqual(149, orderedTicks.ElementAt(0).Price);
            Assert.AreEqual(149.55, orderedTicks.ElementAt(1).Price);
            Assert.AreEqual(150, orderedTicks.ElementAt(2).Price);
            Assert.AreEqual(150.15, orderedTicks.ElementAt(3).Price);
            Assert.AreEqual(150.43, orderedTicks.ElementAt(4).Price);
            Assert.AreEqual(151, orderedTicks.ElementAt(5).Price);
            Assert.AreEqual(151.12, orderedTicks.ElementAt(6).Price);
            Assert.AreEqual(152, orderedTicks.ElementAt(7).Price);
            Assert.AreEqual(152.38, orderedTicks.ElementAt(8).Price);
            Assert.AreEqual(152.40, orderedTicks.ElementAt(9).Price);
            Assert.AreEqual(152.49, orderedTicks.ElementAt(10).Price);
            Assert.AreEqual(155, orderedTicks.ElementAt(11).Price);
        }
예제 #6
0
        public void MakeThirdBar()
        {
            long interval = TimeSpan.TicksPerMinute;
            long from     = new DateTime(2012, 10, 23, 20, 22, 0).Ticks;
            long to       = from + interval;

            IEnumerable <Tick> ticks = BarsFactory.GetTicksInterval(this.ticks, from, to);

            Bar bar = BarsFactory.MakeBar(ticks, new DateTime(2012, 10, 23, 20, 22, 45));

            Assert.AreEqual(152.49, bar.High);
            Assert.AreEqual(150, bar.Low);
            Assert.AreEqual(152.49, bar.Open);
            Assert.AreEqual(150, bar.Close);
            Assert.AreEqual(200, bar.Volume);
            Assert.AreEqual(new DateTime(2012, 10, 23, 20, 22, 45), bar.DateTime);
        }
예제 #7
0
        public void BarsFactory_Load_All_Bars_From_File()
        {
            IEnumerable <Bar> bars = BarsFactory.Make(String.Concat(ProjectRootFolderNameFactory.Make(), "\\App_Data\\Import\\SPFB.RTS_120901_121001_Hour.txt"));

            Assert.AreEqual(294, bars.Count());
        }
예제 #8
0
        public void BarsFactory_Make_ForHour()
        {
            IEnumerable <Bar> bars = BarsFactory.Make(String.Concat(ProjectRootFolderNameFactory.Make(), "\\TestData\\SPFB.RTS.txt"));

            Assert.AreEqual(574, bars.Count());
        }