コード例 #1
0
 public void AddBid(AAA b)
 {
     // 由大到小
     if (Bids.Count > 1)
     {
         double diff = Bids[Bids.Count - 1].price - b.price;
         if (diff > 0)
         {
             TickSize = Codec.gcd(TickSize, diff);
         }
     }
     else
     {
         TickSize = Codec.gcd(TickSize, b.price);
     }
     Bids.Add(b);
 }
コード例 #2
0
 public void AddAsk(AAA a)
 {
     // 由小到大
     if (Asks.Count > 1)
     {
         double diff = a.price - Asks[Asks.Count - 1].price;
         if (diff > 0)
         {
             TickSize = Codec.gcd(TickSize, diff);
         }
     }
     else
     {
         TickSize = Codec.gcd(TickSize, a.price);
     }
     Asks.Add(a);
 }
コード例 #3
0
        public void TestReadCsvLeve3()
        {
            FileInfo fi = new FileInfo(@"d:\wukan\Desktop\DepthDataShow\20150120.txt");
            //FileInfo fo = new FileInfo(@"F:\BaiduYunDownload\DepthDataShow\20150120.pd0");

            PbTickSerializer pts = new PbTickSerializer();

            CCC ccc      = new CCC();
            CCC last_ccc = new CCC();

            AAA last = new AAA();

            last.buy = false;

            string last_symbol = "XXX";

            List <AAA> list = new List <AAA>();

            //using (Stream stream = File.Open(@"F:\BaiduYunDownload\DepthDataShow\20150120.pd0", FileMode.Create))
            {
                using (StreamReader file = new StreamReader(fi.OpenRead()))
                {
                    int    i = 0;
                    string str;
                    do
                    {
                        ++i;
                        str = file.ReadLine();
                        if (str == null)
                        {
                            break;
                        }

                        string[] arr = str.Split(',');

                        AAA a = new AAA();
                        a.symbol = arr[1];
                        a.buy    = arr[2] == "0";
                        a.price  = double.Parse(arr[3]);
                        a.size   = int.Parse(arr[4]);


                        if (last.buy == false && a.buy == true)
                        {
                            // 快照的切换点,把上次的存储都取出来,进行保存
                            // sell里先存的数字大的,后存的数字小的,最后的是卖一
                            // buy里也是先存数字大的,后存数字小的,最前的买一
                            //
                            foreach (var kv in ccc.dict)
                            {
                                kv.Value.MakeTick();

                                ccc.GetSerializer(kv.Key).Write(kv.Value.tick,
                                                                new Stream[] { ccc.GetStream(kv.Key) });
                            }

                            ccc.dict.Clear();
                        }

                        BBB bbb = ccc.Get(a.symbol);
                        bbb.symbol = a.symbol;
                        bbb.time   = arr[0];

                        if (bbb.symbol == "cu1502")
                        {
                            int nTest = 1;
                        }

                        if (a.buy)
                        {
                            bbb.AddBid(a);
                        }
                        else
                        {
                            bbb.AddAsk(a);
                        }


                        last        = a;
                        last_symbol = a.symbol;

                        //if (i < 4000)
                        //    Console.WriteLine(str);
                        //if (i > 4000)
                        //    break;
                    } while (str != null);
                    file.Close();
                }
            }
        }