Exemplo n.º 1
0
        public void TestAppendIQuoteCapture_FillGap()
        {
            _quoteBasic.Add(600, 1, 1, 1, 1, 1);

            IQuoteCapture qc = new QuoteCapture("symbol1");

            // 不填充
            qc.Add(720, 12);
            _quoteBasic.Append(qc, 10, false);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(720, _quoteBasic.Time[1]);

            // 填充
            _quoteBasic.Clear();
            _quoteBasic.Add(600, 1, 1, 1, 1, 1);
            _quoteBasic.Append(qc, 10, true);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);
            Assert.AreEqual(720, _quoteBasic.Time[2]);

            qc.Add(840, 12);
            _quoteBasic.Append(qc, 10, true);
            Assert.AreEqual(840, _quoteBasic.Time[4]);

            qc.Add(890, 12);
            _quoteBasic.Append(qc, 10, true);
            Assert.AreEqual(840, _quoteBasic.Time[4]);

            qc.Add(910, 12);
            _quoteBasic.Append(qc, 10, true);
            Assert.AreEqual(900, _quoteBasic.Time[5]);
            Assert.AreEqual(910, _quoteBasic.Time[6]);
        }
Exemplo n.º 2
0
        public void TestCompressAndUncompress_Normal()
        {
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 1);
            _quoteCapture.Add(3, 1);

            _quoteCapture.Add(4, 2);
            _quoteCapture.Add(5, 2);
            _quoteCapture.Add(6, 2);
            _quoteCapture.Add(7, 2);

            _quoteCapture.Add(9, 2);

            _quoteCapture.Add(10, 3);
            _quoteCapture.Add(11, 3);
            _quoteCapture.Add(12, 3);

            var compress = QuoteCapture.Compress(_quoteCapture);

            Assert.AreNotEqual(compress.Count, _quoteCapture.Count);

            var uncompress = QuoteCapture.Uncompress(compress);

            Assert.AreEqual(_quoteCapture.Count, uncompress.Count);
            Assert.AreEqual(_quoteCapture.Symbol, uncompress.Symbol);
            Assert.AreEqual(_quoteCapture.PipFactor, uncompress.PipFactor);

            for (var i = 0; i < uncompress.Count; i++)
            {
                Assert.AreEqual(_quoteCapture.Time[i], uncompress.Time[i]);
                Assert.AreEqual(_quoteCapture.Price[i], uncompress.Price[i]);
            }
        }
Exemplo n.º 3
0
        public void TestAppendStream_Normal()
        {
            var quoteBasicCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>());

            for (int i = 0; i <= 2; i++)
            {
                quoteBasicCapture.Add(i, i);
            }

            using (var stream = File.OpenWrite(fileName))
                quoteBasicCapture.AppendStream(stream);
            var contentStr = File.ReadAllText(fileName);

            Assert.AreEqual(contentStr, "Symbol:DAG_2;PipFactor:5\r\nTime;Price;Volume;\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n");
            var time1 = File.GetLastWriteTime(fileName);

            Thread.Sleep(100);
            using (var stream = File.OpenWrite(fileName))
                quoteBasicCapture.AppendStream(stream);
            // test overrite existing file
            contentStr = File.ReadAllText(fileName);
            Assert.AreEqual(contentStr, "Symbol:DAG_2;PipFactor:5\r\nTime;Price;Volume;\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n");
            var time2 = File.GetLastWriteTime(fileName);

            Assert.IsTrue(time2 > time1);
            File.Delete(fileName);
        }
Exemplo n.º 4
0
        public void TestAppendStream_NoData()
        {
            var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>());

            using (var stream = File.OpenWrite(fileName))
                quoteCapture.AppendStream(stream);

            using (var stream = File.OpenRead(fileName))
                quoteCapture.LoadStream(stream);
        }
Exemplo n.º 5
0
        public void TestLoad_PipFactorNotMatch()
        {
            var str = @"  Symbol:DAG_2;PipFactor:51
                        Time;   Price;

                        1465235480;3531
                        1465235485;3532";

            var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>());

            File.WriteAllText(fileName, str);

            using (var stream = File.OpenRead(fileName))
                quoteCapture.LoadStream(stream);
        }
Exemplo n.º 6
0
        public void TestUncompress_Safety()
        {
            //只有1个数据的时候
            _quoteCapture.Add(5, -1);
            var result = QuoteCapture.Uncompress(_quoteCapture);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 1);
            Assert.AreEqual(result.Time[0], 5);
            Assert.AreEqual(result.Price[0], -1);

            //处理负数时间
            _quoteCapture.Clear();
            _quoteCapture.Add(-3, 1);
            _quoteCapture.Add(-1, -1);
            _quoteCapture.Add(5, 2);
            result = QuoteCapture.Uncompress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 4);
            Assert.AreEqual(result.Time[0], -3);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], -2);
            Assert.AreEqual(result.Price[1], 1);
            Assert.AreEqual(result.Time[2], -1);
            Assert.AreEqual(result.Price[2], 1);
            Assert.AreEqual(result.Time[3], 5);
            Assert.AreEqual(result.Price[3], 2);

            //处理非递增序列
            _quoteCapture.Clear();
            _quoteCapture.Add(0, 1);
            _quoteCapture.Add(-2, -1);
            _quoteCapture.Add(3, -1);//用-1作为分段起点
            _quoteCapture.Add(5, -1);
            result = QuoteCapture.Uncompress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 5);
            Assert.AreEqual(result.Time[0], 0);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], -2);
            Assert.AreEqual(result.Price[1], -1);
            Assert.AreEqual(result.Time[2], 3);
            Assert.AreEqual(result.Price[2], -1);
            Assert.AreEqual(result.Time[3], 4);
            Assert.AreEqual(result.Price[3], -1);
            Assert.AreEqual(result.Time[4], 5);
            Assert.AreEqual(result.Price[4], -1);
        }
Exemplo n.º 7
0
        public void TestLoad_IllegalContent()
        {
            //test robutstness to empty line, tab, space etc.
            var str = @" 
                        Symbol:DAG_2;PipFactor:5   
                        Time;   Price;

                        1465235480;3531
                        1465235485;3532_illegal";

            var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>());

            File.WriteAllText(fileName, str);

            using (var stream = File.OpenRead(fileName))
                quoteCapture.LoadStream(stream);
        }
        public void Add(string symbol, long timestamp, double price, double volume)
        {
            lock (this)
            {
                //add to quote capture
                if (!QuoteCaptures.ContainsKey(symbol))
                {
                    var qc = new QuoteCapture(symbol);
                    qc.DataAdded += Qc_DataAdded;
                    QuoteCaptures.TryAdd(symbol, qc);
                }

                if (timestamp > QuoteCaptures[symbol].LastTime)
                {
                    QuoteCaptures[symbol].Add(timestamp, price, volume);
                }
            }
        }
Exemplo n.º 9
0
        public void TestAssign()
        {
            IList <long>   time   = new List <long>();
            IList <double> price  = new List <double>();
            IList <double> volume = new List <double>();

            time.Add(10);
            price.Add(20);
            volume.Add(30);

            IQuoteCapture qc = new QuoteCapture("symbol", 1, time, price, volume);

            _quoteCapture.Assign(qc);
            Assert.AreEqual("symbol", _quoteCapture.Symbol);
            Assert.AreEqual(1, _quoteCapture.PipFactor);
            Assert.AreEqual(10, _quoteCapture.Time[0]);
            Assert.AreEqual(20, _quoteCapture.Price[0]);
            Assert.AreEqual(30, _quoteCapture.Volume[0]);
        }
Exemplo n.º 10
0
        public void TestAppendStream_Append()
        {
            var quoteBasic = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>());

            for (int i = 0; i <= 2; i++)
            {
                quoteBasic.Add(i, i);
            }

            using (var stream = File.OpenWrite(fileName))
                quoteBasic.AppendStream(stream);

            using (var stream = new FileStream(fileName, FileMode.Append, FileAccess.Write))
                quoteBasic.AppendStream(stream);

            var contentStr = File.ReadAllText(fileName);

            Assert.AreEqual(contentStr, "Symbol:DAG_2;PipFactor:5\r\nTime;Price;Volume;\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n");
        }
Exemplo n.º 11
0
        public void TestAppendIQuoteCapture()
        {
            _quoteBasic.Add(600, 1, 1, 1, 1, 1); // 600

            // 非整数倍
            IQuoteCapture qc = new QuoteCapture("symbol1");

            qc.Add(620, 20);
            _quoteBasic.Append(qc, -1, false, false);
            Assert.AreEqual(1, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.LastTime);

            // 整数倍
            qc.Add(660, 60);
            _quoteBasic.Append(qc, -1, false, false);
            Assert.AreEqual(2, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);

            // 为空
            qc = new QuoteCapture("symbol1");
            _quoteBasic.Append(qc, -1, false, false);
            Assert.AreEqual(2, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);;

            // 为null
            qc = null;
            _quoteBasic.Append(qc, -1, false, false);
            Assert.AreEqual(2, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);

            //// 不填补空洞
            //qb = new QuoteBasic("symbol1", 20);
            //qb.Add(6000, 1, 1, 1, 1, 1, false);
            //_quoteBasic.Append(qb);
            //Assert.AreEqual(3, _quoteBasic.Count);
            //Assert.AreEqual(600, _quoteBasic.Time[0]);
            //Assert.AreEqual(660, _quoteBasic.Time[1]);
            //Assert.AreEqual(6000, _quoteBasic.Time[2]);
        }
Exemplo n.º 12
0
        public void TestAppend()
        {
            IQuoteCapture qc = null;

            // 测试null
            _quoteCapture.Append(qc);
            Assert.AreEqual(0, _quoteCapture.Count);

            // 测试空
            qc = new QuoteCapture();
            _quoteCapture.Append(qc);
            Assert.AreEqual(0, _quoteCapture.Count);

            // 测试不同的symbol
            qc = new QuoteCapture("symbol1");
            qc.Add(10, 20, 30);
            _quoteCapture.Append(qc);
            Assert.AreEqual(0, _quoteCapture.Count);

            // 测试_quoteCapter.LastTime < qc.LastTime
            qc = new QuoteCapture("symbol0");
            _quoteCapture.Add(10, 20, 15);
            qc.Add(5, 20);
            _quoteCapture.Append(qc);
            Assert.AreEqual(1, _quoteCapture.Count);
            Assert.AreEqual(10, _quoteCapture.Time[0]);
            Assert.AreEqual(20, _quoteCapture.Price[0]);
            Assert.AreEqual(15, _quoteCapture.Volume[0]);

            // 测试不添加小于LastTime的数据
            qc.Add(10, 18, 18);
            qc.Add(20, 30, 17);
            _quoteCapture.Append(qc);
            Assert.AreEqual(2, _quoteCapture.Count);
            Assert.AreEqual(10, _quoteCapture.Time[0]);
            Assert.AreEqual(20, _quoteCapture.Time[1]);
            Assert.AreEqual(20, _quoteCapture.Price[0]);
            Assert.AreEqual(30, _quoteCapture.Price[1]);
            Assert.AreEqual(15, _quoteCapture.Volume[0]);
            Assert.AreEqual(17, _quoteCapture.Volume[1]);
        }
Exemplo n.º 13
0
        public void TestLoad_Space()
        {
            //test robutstness to empty line, tab, space etc.
            var str = @" Symbol:DAG_2;PipFactor:5   
                        Time;   Price;Volume;

                        1465235480;3531;0
                        1465235485;3532;0";

            var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>());

            File.WriteAllText(fileName, str);

            using (var stream = File.OpenRead(fileName))
                quoteCapture.LoadStream(stream);
            Assert.AreEqual(quoteCapture.Count, 2);
            Assert.AreEqual(quoteCapture.Time[0], 1465235480);
            Assert.AreEqual(quoteCapture.Price[0], 3531);
            Assert.AreEqual(quoteCapture.Time[1], 1465235485);
            Assert.AreEqual(quoteCapture.Price[1], 3532);
        }
Exemplo n.º 14
0
        public void TestExtract_IntInt()
        {
            IQuoteCapture qc = null;

            // 测试sindex > eindex
            TestHelper.AssertException(() => _quoteCapture.Extract(1, 0), typeof(ArgumentException));

            // 测试sindex < 0
            TestHelper.AssertException(() => _quoteCapture.Extract(-1, 0), typeof(ArgumentException));

            // 测试eindex < 0
            TestHelper.AssertException(() => _quoteCapture.Extract(0, -1), typeof(ArgumentException));

            // 测试eindex > _quoteCapture.Count - 1;
            _quoteCapture.Add(10, 12);
            TestHelper.AssertException(() => _quoteCapture.Extract(0, 5), typeof(ArgumentException));

            _quoteCapture = new QuoteCapture("xyz");
            _quoteCapture.Add(100, 10, 23);
            _quoteCapture.Add(200, 20, 24);
            _quoteCapture.Add(300, 30, 26);
            _quoteCapture.Add(400, 40, 27);
            _quoteCapture.Add(500, 50, 28);

            qc = _quoteCapture.Extract(1, 3);
            Assert.AreEqual(3, qc.Count);
            Assert.AreEqual(200, qc.Time[0]);
            Assert.AreEqual(300, qc.Time[1]);
            Assert.AreEqual(400, qc.Time[2]);
            Assert.AreEqual(20, qc.Price[0]);
            Assert.AreEqual(30, qc.Price[1]);
            Assert.AreEqual(40, qc.Price[2]);
            Assert.AreEqual(24, qc.Volume[0]);
            Assert.AreEqual(26, qc.Volume[1]);
            Assert.AreEqual(27, qc.Volume[2]);
        }
Exemplo n.º 15
0
        public void TestAppendIQuoteCapture_SubInterval()
        {
            _quoteBasic.Add(600, 1, 1, 1, 1, 1, false); // 600

            IQuoteCapture qc = new QuoteCapture("symbol1");

            qc.Add(620, 20);
            _quoteBasic.Append(qc, 20); // 600, 620
            Assert.AreEqual(2, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(620, _quoteBasic.Time[1]);

            qc = new QuoteCapture("symbol1");
            qc.Add(640, 40);
            _quoteBasic.Append(qc, 20); // 600, 640
            Assert.AreEqual(2, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(640, _quoteBasic.Time[1]);

            qc.Add(680, 80);
            _quoteBasic.Append(qc, 20); // 600, 660, 680
            Assert.AreEqual(3, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);
            Assert.AreEqual(680, _quoteBasic.Time[2]);

            qc.Add(700, 100);
            _quoteBasic.Append(qc, 20); // 600, 660, 700
            Assert.AreEqual(3, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);
            Assert.AreEqual(700, _quoteBasic.Time[2]);

            qc.Add(740, 140);
            qc.Add(760, 160);
            _quoteBasic.Append(qc, 20); // 600, 660, 720, 760
            Assert.AreEqual(4, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);
            Assert.AreEqual(720, _quoteBasic.Time[2]);
            Assert.AreEqual(760, _quoteBasic.Time[3]);

            qc = new QuoteCapture("symbol1");
            qc.Add(761, 1);
            qc.Add(762, 1);
            qc.Add(763, 1);
            _quoteBasic.Append(qc, 1);
            Assert.AreEqual(4, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);
            Assert.AreEqual(720, _quoteBasic.Time[2]);
            Assert.AreEqual(763, _quoteBasic.Time[3]);

            qc.Add(780, 90);
            _quoteBasic.Append(qc, 20);
            Assert.AreEqual(4, _quoteBasic.Count);
            Assert.AreEqual(600, _quoteBasic.Time[0]);
            Assert.AreEqual(660, _quoteBasic.Time[1]);
            Assert.AreEqual(720, _quoteBasic.Time[2]);
            Assert.AreEqual(780, _quoteBasic.Time[3]);
        }
Exemplo n.º 16
0
        public void TestUncompress_Normal()
        {
            TestHelper.AssertException(() => QuoteCapture.Uncompress(null), typeof(ArgumentNullException));
            Assert.AreEqual(QuoteCapture.Uncompress(_quoteCapture).Count, 0);
            //重复数据在开始
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(3, -1);
            _quoteCapture.Add(4, 2);
            var result = QuoteCapture.Uncompress(_quoteCapture);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 4);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 1);
            Assert.AreEqual(result.Time[2], 3);
            Assert.AreEqual(result.Price[2], 1);
            Assert.AreEqual(result.Time[3], 4);
            Assert.AreEqual(result.Price[3], 2);
            //重复数据在末尾
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 2);
            _quoteCapture.Add(5, -1);
            result = QuoteCapture.Uncompress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 5);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 2);
            Assert.AreEqual(result.Time[2], 3);
            Assert.AreEqual(result.Price[2], 2);
            Assert.AreEqual(result.Time[3], 4);
            Assert.AreEqual(result.Price[3], 2);
            Assert.AreEqual(result.Time[4], 5);
            Assert.AreEqual(result.Price[4], 2);
            //重复数据在中间
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 2);
            _quoteCapture.Add(4, -1);
            _quoteCapture.Add(5, 6);
            result = QuoteCapture.Uncompress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 5);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 2);
            Assert.AreEqual(result.Time[2], 3);
            Assert.AreEqual(result.Price[2], 2);
            Assert.AreEqual(result.Time[3], 4);
            Assert.AreEqual(result.Price[3], 2);
            Assert.AreEqual(result.Time[4], 5);
            Assert.AreEqual(result.Price[4], 6);
            //复合重复数据 开始中间结尾都有
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(3, -1);
            _quoteCapture.Add(4, 2);
            _quoteCapture.Add(6, -1);
            _quoteCapture.Add(7, 3);
            _quoteCapture.Add(8, 4);
            _quoteCapture.Add(10, -1);
            result = QuoteCapture.Uncompress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 10);

            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 1);
            Assert.AreEqual(result.Time[2], 3);
            Assert.AreEqual(result.Price[2], 1);
            Assert.AreEqual(result.Time[3], 4);
            Assert.AreEqual(result.Price[3], 2);
            Assert.AreEqual(result.Time[4], 5);
            Assert.AreEqual(result.Price[4], 2);
            Assert.AreEqual(result.Time[5], 6);
            Assert.AreEqual(result.Price[5], 2);
            Assert.AreEqual(result.Time[6], 7);
            Assert.AreEqual(result.Price[6], 3);
            Assert.AreEqual(result.Time[7], 8);
            Assert.AreEqual(result.Price[7], 4);
            Assert.AreEqual(result.Time[8], 9);
            Assert.AreEqual(result.Price[8], 4);
            Assert.AreEqual(result.Time[9], 10);
            Assert.AreEqual(result.Price[9], 4);
        }
Exemplo n.º 17
0
        public void TestCompress_Safety()
        {
            //不压缩重复数据
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 2);
            _quoteCapture.Add(3, 2);
            _quoteCapture.Add(3, 2);
            _quoteCapture.Add(4, 2);
            _quoteCapture.Add(5, 2);
            _quoteCapture.Add(6, 7);
            var result = QuoteCapture.Compress(_quoteCapture);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 7);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 1);
            Assert.AreEqual(result.Price[1], 1);

            Assert.AreEqual(result.Time[2], 2);
            Assert.AreEqual(result.Price[2], 2);
            Assert.AreEqual(result.Time[3], 3);
            Assert.AreEqual(result.Price[3], -1);

            Assert.AreEqual(result.Time[4], 3);
            Assert.AreEqual(result.Price[4], 2);
            Assert.AreEqual(result.Time[5], 5);
            Assert.AreEqual(result.Price[5], -1);
            Assert.AreEqual(result.Time[6], 6);
            Assert.AreEqual(result.Price[6], 7);

            //time时间突然变小也不压缩
            _quoteCapture.Clear();
            _quoteCapture.Add(3, 1);
            _quoteCapture.Add(2, 1);
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(3, 2);
            _quoteCapture.Add(4, 2);
            _quoteCapture.Add(5, 2);
            result = QuoteCapture.Compress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 5);
            Assert.AreEqual(result.Time[0], 3);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 1);
            Assert.AreEqual(result.Time[2], 1);
            Assert.AreEqual(result.Price[2], 1);
            Assert.AreEqual(result.Time[3], 3);
            Assert.AreEqual(result.Price[3], 2);
            Assert.AreEqual(result.Time[4], 5);
            Assert.AreEqual(result.Price[4], -1);

            //时间间隔大于1也不压缩
            _quoteCapture.Clear();
            _quoteCapture.Add(3, 2);
            _quoteCapture.Add(6, 2);
            _quoteCapture.Add(9, 2);
            _quoteCapture.Add(15, 2);
            result = QuoteCapture.Compress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 4);
            Assert.AreEqual(result.Time[0], 3);
            Assert.AreEqual(result.Price[0], 2);
            Assert.AreEqual(result.Time[1], 6);
            Assert.AreEqual(result.Price[1], 2);
            Assert.AreEqual(result.Time[2], 9);
            Assert.AreEqual(result.Price[2], 2);
            Assert.AreEqual(result.Time[3], 15);
            Assert.AreEqual(result.Price[3], 2);

            //测试负值情况
            _quoteCapture.Clear();
            _quoteCapture.Add(3, 2);
            _quoteCapture.Add(-2, 2);
            _quoteCapture.Add(-1, 2);
            _quoteCapture.Add(0, 2);
            result = QuoteCapture.Compress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 3);
            Assert.AreEqual(result.Time[0], 3);
            Assert.AreEqual(result.Price[0], 2);
            Assert.AreEqual(result.Time[1], -2);
            Assert.AreEqual(result.Price[1], 2);
            Assert.AreEqual(result.Time[2], 0);
            Assert.AreEqual(result.Price[2], -1);
        }
Exemplo n.º 18
0
        public void TestCompress_Normal()
        {//测试基本功能
            TestHelper.AssertException(() => QuoteCapture.Compress(null), typeof(ArgumentNullException));
            Assert.AreEqual(QuoteCapture.Compress(_quoteCapture).Count, 0);
            //重复数据在开始
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 1);
            _quoteCapture.Add(3, 1);
            _quoteCapture.Add(4, 2);
            var result = QuoteCapture.Compress(_quoteCapture);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 3);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 3);
            Assert.AreEqual(result.Price[1], -1);
            Assert.AreEqual(result.Time[2], 4);
            Assert.AreEqual(result.Price[2], 2);
            //重复数据在末尾
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 2);
            _quoteCapture.Add(3, 2);
            _quoteCapture.Add(4, 2);
            result = QuoteCapture.Compress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 3);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 2);
            Assert.AreEqual(result.Time[2], 4);
            Assert.AreEqual(result.Price[2], -1);
            //重复数据在中间
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 2);
            _quoteCapture.Add(3, 2);
            _quoteCapture.Add(4, 2);
            _quoteCapture.Add(5, 3);
            result = QuoteCapture.Compress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 4);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 2);
            Assert.AreEqual(result.Time[2], 4);
            Assert.AreEqual(result.Price[2], -1);
            Assert.AreEqual(result.Time[3], 5);
            Assert.AreEqual(result.Price[3], 3);
            //复合数据 开始中间末尾都有重复数据
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 1);
            _quoteCapture.Add(3, 1);

            _quoteCapture.Add(4, 2);
            _quoteCapture.Add(5, 2);
            _quoteCapture.Add(6, 2);
            _quoteCapture.Add(7, 2);
            _quoteCapture.Add(9, 2);

            _quoteCapture.Add(10, 3);
            _quoteCapture.Add(11, 3);
            _quoteCapture.Add(12, 3);

            result = QuoteCapture.Compress(_quoteCapture);
            Assert.IsNotNull(result);
            Assert.AreEqual(result.Count, 7);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 3);
            Assert.AreEqual(result.Price[1], -1);
            Assert.AreEqual(result.Time[2], 4);
            Assert.AreEqual(result.Price[2], 2);
            Assert.AreEqual(result.Time[3], 7);
            Assert.AreEqual(result.Price[3], -1);

            Assert.AreEqual(result.Time[4], 9);
            Assert.AreEqual(result.Price[4], 2);
            Assert.AreEqual(result.Time[5], 10);
            Assert.AreEqual(result.Price[5], 3);
            Assert.AreEqual(result.Time[6], 12);
            Assert.AreEqual(result.Price[6], -1);
        }
Exemplo n.º 19
0
 public void MethodInit()
 {
     _quoteCapture = new QuoteCapture("symbol0");
 }