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); }
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); }
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(); } } }