public void TestPreRestoration()
 {
     ClientApi clientApi = new ClientApi("http://quantum1234.cloudapp.net:6688/api");
     IEnumerable<IStockBonus> bonus = clientApi.GetStockBonus("002498");
     IEnumerable<IStockKLine> kLines = clientApi.GetStockKLine(KLineType.Day, "002498", new DateTime(2013, 8, 1), new DateTime(2016, 2, 1));
     IStockKLine testDayKLine = kLines.FirstOrDefault(p => (p.Time.Year == 2013 && p.Time.Month == 8 && p.Time.Day == 27));
     IStockKLine newStockKLine = testDayKLine.KLinePreRestoration(bonus);
     Assert.AreEqual(1.84, newStockKLine.Close);
 }
        public void TestCollectionStatusClient()
        {
            using (var client = new ClientApi(serverAddress))
            {
                var result = client.GetAllServiceName().ToList();
                Assert.IsNotNull(result);

                var status = client.GetServiceStatus(result[0]);
                Assert.IsNotNull(status);
            }
        }
        public void TestKLineMin30Client()
        {
            using (var client = new ClientApi(serverAddress))
            {
                var result = client.GetStockKLine(
                    KLineType.Min30, "600036",
                    new DateTime(2015, 11, 10), new DateTime(2015, 11, 12)).ToList();

                Assert.IsNotNull(result);
                Assert.IsTrue(result[0].Open - 77.77 < 0.00000001);
            }
        }
        public void TestKLineDayClient()
        {
            using (var client = new ClientApi(serverAddress))
            {
                var result = client.GetStockKLine(
                    KLineType.Day, "600000",
                    new DateTime(2015, 11, 10), DateTime.Now).ToList();

                Assert.IsNotNull(result);
                Assert.IsTrue(result[0].Open - 18 < 0.00000001);

                result = client.GetStockKLine(
                    KLineType.Day, "600000",
                    new DateTime(1990, 1, 1), DateTime.Now).ToList();
            }
        }
        public void TestMA()
        {
            using (var client = new ClientApi(serverAddress))
            {
                // 从Pitman获取K线数据
                var lstKLine = client.GetStockKLine(KLineType.Day, "603085", new DateTime(2015,6, 1), new DateTime(2016, 3, 4));

                // 调用K线扩展方法获取MA指标的值
                var lstMA5 = lstKLine.MA(5).ToList();
                var lstMA10 = lstKLine.MA(10).ToList();
                var lstMA20 = lstKLine.MA(20).ToList();
                var lstMA60 = lstKLine.MA(60).ToList();

                // 判断值的正确性
                Assert.AreEqual(lstMA5[0].Value, 12.79);
                Assert.AreEqual(lstMA5[1].Value, 14.06);
                Assert.AreEqual(lstMA5[5].Value, 20.59);

                Assert.AreEqual(lstMA10[0].Value, 16.69);
                Assert.AreEqual(lstMA10[1].Value, 18.36);
                Assert.AreEqual(lstMA10[10].Value, 30.77);

                Assert.AreEqual(lstMA20[0].Value, 23.73);
                Assert.AreEqual(lstMA20[1].Value, 25.19);
                Assert.AreEqual(lstMA20[40].Value, 33.01);

                Assert.AreEqual(lstMA60[0].Value, 34.99);
                Assert.AreEqual(lstMA60[1].Value, 35.42);
                Assert.AreEqual(lstMA60[2].Value, 35.78);

                lstKLine = client.GetStockKLine(KLineType.Day, "603085", new DateTime(2015, 6, 1), new DateTime(2016, 3, 8));

                // 调用K线扩展方法获取MA指标的值
                lstMA5 = lstKLine.MA(5, lstMA5).ToList();
                lstMA10 = lstKLine.MA(10, lstMA10).ToList();
                lstMA20 = lstKLine.MA(20, lstMA20).ToList();
                lstMA60 = lstKLine.MA(60, lstMA60).ToList();

                Assert.AreEqual(lstMA5[0].Value, 12.79);
                Assert.AreEqual(lstMA10[0].Value, 16.69);
                Assert.AreEqual(lstMA20[0].Value, 23.73);
                Assert.AreEqual(lstMA60[0].Value, 34.99);

                int count = lstKLine.ToList().Count;
                Assert.AreEqual(lstMA5[count - 5].Value, 30.45);
                Assert.AreEqual(lstMA10[count - 10].Value, 30.35);
                Assert.AreEqual(lstMA20[count - 20].Value, 31.37);
                Assert.AreEqual(lstMA60[count - 60].Value, 37.58);
            }
        }
        public void TestKDJ()
        {
            using (var client = new ClientApi(serverAddress))
            {
                // 从Pitman获取K线数据
                var lstKLine = client.GetStockKLine(KLineType.Day, "300500", new DateTime(2015, 6, 1), new DateTime(2016, 3, 1));

                // 调用K线扩展方法获取MA指标的值
                var lstKDJ = lstKLine.KDJ().ToList();

                // 判断值的正确性
                Assert.AreEqual(lstKDJ[0].KValue, 100);
                Assert.AreEqual(lstKDJ[0].DValue, 100);
                Assert.AreEqual(lstKDJ[0].JValue, 100);

                Assert.AreEqual(lstKDJ[10].KValue, 100);
                Assert.AreEqual(lstKDJ[10].DValue, 100);
                Assert.AreEqual(lstKDJ[10].JValue, 100);

                Assert.AreEqual(Math.Round(lstKDJ[11].KValue, 2), 93.42);
                Assert.AreEqual(Math.Round(lstKDJ[11].DValue, 2), 97.81);
                Assert.AreEqual(Math.Round(lstKDJ[11].JValue, 2), 84.64);

                Assert.AreEqual(Math.Round(lstKDJ[12].KValue, 2), 82.10);
                Assert.AreEqual(Math.Round(lstKDJ[12].DValue, 2), 92.57);
                Assert.AreEqual(Math.Round(lstKDJ[12].JValue, 2), 61.16);

                Assert.AreEqual(Math.Round(lstKDJ[13].KValue, 2), 69.39);
                Assert.AreEqual(Math.Round(lstKDJ[13].DValue, 2), 84.84);
                Assert.AreEqual(Math.Round(lstKDJ[13].JValue, 2), 38.48);

                lstKLine = client.GetStockKLine(KLineType.Day, "300500", new DateTime(2015, 6, 1), new DateTime(2016, 3, 8));

                // 调用K线扩展方法获取MA指标的值
                lstKDJ = lstKLine.KDJ(lstKDJ).ToList();

                Assert.AreEqual(Math.Round(lstKDJ[13].KValue, 2), 69.39);
                Assert.AreEqual(Math.Round(lstKDJ[13].DValue, 2), 84.84);
                Assert.AreEqual(Math.Round(lstKDJ[13].JValue, 2), 38.48);

                Assert.AreEqual(Math.Round(lstKDJ[14].KValue, 2), 60.72);
                Assert.AreEqual(Math.Round(lstKDJ[14].DValue, 2), 76.80);
                Assert.AreEqual(Math.Round(lstKDJ[14].JValue, 2), 28.57);

                Assert.AreEqual(Math.Round(lstKDJ[15].KValue, 2), 50.70);
                Assert.AreEqual(Math.Round(lstKDJ[15].DValue, 2), 68.10);
                Assert.AreEqual(Math.Round(lstKDJ[15].JValue, 2), 15.89);

                Assert.AreEqual(Math.Round(lstKDJ[16].KValue, 2), 45.70);
                Assert.AreEqual(Math.Round(lstKDJ[16].DValue, 2), 60.63);
                Assert.AreEqual(Math.Round(lstKDJ[16].JValue, 2), 15.82);

                Assert.AreEqual(Math.Round(lstKDJ[17].KValue, 2), 40.70);
                Assert.AreEqual(Math.Round(lstKDJ[17].DValue, 2), 53.99);
                Assert.AreEqual(Math.Round(lstKDJ[17].JValue, 2), 14.13);

                Assert.AreEqual(Math.Round(lstKDJ[18].KValue, 2), 33.32);
                Assert.AreEqual(Math.Round(lstKDJ[18].DValue, 2), 47.10);
                Assert.AreEqual(Math.Round(lstKDJ[18].JValue, 2), 5.76);
            }
        }
        public void TestMACD()
        {
            using (var client = new ClientApi(serverAddress))
            {
                // 从Pitman获取K线数据
                var lstKLine = client.GetStockKLine(KLineType.Day, "300500", new DateTime(2015, 6, 1), new DateTime(2016, 3, 1));

                // 调用K线扩展方法获取MACD指标的值
                var lstMACD = lstKLine.MACD().ToList();

                // 判断值的正确性
                //I DIF DEA MACD
                //0
                Assert.AreEqual(lstMACD[0].DIF, 0);
                Assert.AreEqual(lstMACD[0].DEA, 0);
                Assert.AreEqual(lstMACD[0].MACD, 0);
                //1
                Assert.AreEqual(Math.Round(lstMACD[1].DIF, 2), 0.24);
                Assert.AreEqual(Math.Round(lstMACD[1].DEA, 2), 0.05);
                Assert.AreEqual(Math.Round(lstMACD[1].MACD, 2), 0.38);
                //2
                Assert.AreEqual(Math.Round(lstMACD[2].DIF, 2), 0.69);
                Assert.AreEqual(Math.Round(lstMACD[2].DEA, 2), 0.18);
                Assert.AreEqual(Math.Round(lstMACD[2].MACD, 2), 1.03);
                //3
                Assert.AreEqual(Math.Round(lstMACD[3].DIF, 2), 1.32);
                Assert.AreEqual(Math.Round(lstMACD[3].DEA, 2), 0.41);
                Assert.AreEqual(Math.Round(lstMACD[3].MACD, 2), 1.84);
                //4
                Assert.AreEqual(Math.Round(lstMACD[4].DIF, 2), 2.13);
                Assert.AreEqual(Math.Round(lstMACD[4].DEA, 2), 0.75);
                Assert.AreEqual(Math.Round(lstMACD[4].MACD, 2), 2.75);
                //5
                Assert.AreEqual(Math.Round(lstMACD[5].DIF, 2), 3.08);
                Assert.AreEqual(Math.Round(lstMACD[5].DEA, 2), 1.22);
                Assert.AreEqual(Math.Round(lstMACD[5].MACD, 2), 3.73);
                //6
                Assert.AreEqual(Math.Round(lstMACD[6].DIF, 2), 4.18);
                Assert.AreEqual(Math.Round(lstMACD[6].DEA, 2), 1.81);
                Assert.AreEqual(Math.Round(lstMACD[6].MACD, 2), 4.75);
                //7
                Assert.AreEqual(Math.Round(lstMACD[7].DIF, 2), 5.42);
                Assert.AreEqual(Math.Round(lstMACD[7].DEA, 2), 2.53);
                Assert.AreEqual(Math.Round(lstMACD[7].MACD, 2), 5.78);
                //8
                Assert.AreEqual(Math.Round(lstMACD[8].DIF, 2), 6.80);
                Assert.AreEqual(Math.Round(lstMACD[8].DEA, 2), 3.39);
                Assert.AreEqual(Math.Round(lstMACD[8].MACD, 2), 6.83);
                //9
                Assert.AreEqual(Math.Round(lstMACD[9].DIF, 2), 8.32);
                Assert.AreEqual(Math.Round(lstMACD[9].DEA, 2), 4.37);
                Assert.AreEqual(Math.Round(lstMACD[9].MACD, 2), 7.89);
                //10
                Assert.AreEqual(Math.Round(lstMACD[10].DIF, 2), 9.98);
                Assert.AreEqual(Math.Round(lstMACD[10].DEA, 2), 5.49);
                Assert.AreEqual(Math.Round(lstMACD[10].MACD, 2), 8.97);
                //11
                Assert.AreEqual(Math.Round(lstMACD[11].DIF, 2), 10.96);
                Assert.AreEqual(Math.Round(lstMACD[11].DEA, 2), 6.59);
                Assert.AreEqual(Math.Round(lstMACD[11].MACD, 2), 8.74);
                //12
                Assert.AreEqual(Math.Round(lstMACD[12].DIF, 2), 11.00);
                Assert.AreEqual(Math.Round(lstMACD[12].DEA, 2), 7.47);
                Assert.AreEqual(Math.Round(lstMACD[12].MACD, 2), 7.06);
                //13
                Assert.AreEqual(Math.Round(lstMACD[13].DIF, 2), 10.61);
                Assert.AreEqual(Math.Round(lstMACD[13].DEA, 2), 8.10);
                Assert.AreEqual(Math.Round(lstMACD[13].MACD, 2), 5.02);

                lstKLine = client.GetStockKLine(KLineType.Day, "300500", new DateTime(2015, 7, 1), new DateTime(2016, 3, 8));
                lstMACD = lstKLine.MACD(lstMACD).ToList();
                //13
                Assert.AreEqual(Math.Round(lstMACD[13].DIF, 2), 10.61);
                Assert.AreEqual(Math.Round(lstMACD[13].DEA, 2), 8.10);
                Assert.AreEqual(Math.Round(lstMACD[13].MACD, 2), 5.02);
                //14
                Assert.AreEqual(Math.Round(lstMACD[14].DIF, 2), 10.38);
                Assert.AreEqual(Math.Round(lstMACD[14].DEA, 2), 8.55);
                Assert.AreEqual(Math.Round(lstMACD[14].MACD, 2), 3.65);
                //15
                Assert.AreEqual(Math.Round(lstMACD[15].DIF, 2), 10.07);
                Assert.AreEqual(Math.Round(lstMACD[15].DEA, 2), 8.86);
                Assert.AreEqual(Math.Round(lstMACD[15].MACD, 2), 2.42);
                //16
                Assert.AreEqual(Math.Round(lstMACD[16].DIF, 2), 9.92);
                Assert.AreEqual(Math.Round(lstMACD[16].DEA, 2), 9.07);
                Assert.AreEqual(Math.Round(lstMACD[16].MACD, 2), 1.70);
                //17
                Assert.AreEqual(Math.Round(lstMACD[17].DIF, 2), 9.60);
                Assert.AreEqual(Math.Round(lstMACD[17].DEA, 2), 9.17);
                Assert.AreEqual(Math.Round(lstMACD[17].MACD, 2), 0.85);
                //18
                Assert.AreEqual(Math.Round(lstMACD[18].DIF, 2), 9.02);
                Assert.AreEqual(Math.Round(lstMACD[18].DEA, 2), 9.14);
                Assert.AreEqual(Math.Round(lstMACD[18].MACD, 2), -0.25);
            }
        }
        public void TestStockStructureClient()
        {
            using (var client = new ClientApi(serverAddress))
            {
                var result = client.GetStockStructure("600036");

                Assert.IsNotNull(result);
            }
        }
        public void TestSecurityClient()
        {
            using (var client = new ClientApi(serverAddress))
            {
                var result = client.GetAllSecurity().ToList();

                Assert.IsNotNull(result);
            }
        }
        public void TestParticipationClient()
        {
            using (var client = new ClientApi(serverAddress))
            {
                var result = client.GetParticipation("600036").ToList()[0];

                Assert.IsNotNull(result);
                Assert.AreEqual(new DateTime(1999,9,9,9,9,9), result.Time);
            }
        }