private static void ExporttoDisk(object obj) { KFCC.ExchangeInterface.IExchanges e = (KFCC.ExchangeInterface.IExchanges)obj; string year = exporttime.Year.ToString(); string month = exporttime.Month.ToString(); string day = exporttime.Day.ToString(); string path = @"raw/" + e.Name;// + @"/" + year + @"/" + month + @"/"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } foreach (KeyValuePair <string, KFCC.ExchangeInterface.SubscribeInterface> item in e.SubscribedTradingPairs) { string file = path + @"/" + item.Key + "/" + year + @"/" + month + @"/" + day + ".txt"; CommonLab.Log log = new CommonLab.Log(file); CommonLab.Ticker t = item.Value.TradeInfo.t.Clone(); //double ts= CommonLab.TimerHelper.GetTimeStamp(exporttime.AddSeconds(-exporttime.Second).ToUniversalTime()); t.ExchangeTimeStamp = ts; log.RawLog(t.ToOCHLString()); } }
private void ExportTodisk() { while (true) { List <string> keys = new List <string>(); // string key = "TradePerMin@" + symbol + "@" + CommonLab.TimerHelper.ConvertStringToDateTime(t.ExchangeTimeStamp).ToString("yyMMddHHmm") + "@" + direction; lock (LockTickObject) { try { foreach (KeyValuePair <string, BinacneETF.BATicker> item in TickerData) { string Key = item.Key.ToString(); //string str = redisKeyType+ "@" + timePeriod + "@" +exchangename+"@"+ symbol.ToLower()+"@"+ t.ToString("yyyy.MM.dd HH:mm"); DateTime t = Convert.ToDateTime(Key.Split('@')[4]); string type = Key.Split('@')[0]; string period = Key.Split('@')[1]; string exchangename = CommonLab.ExchangeNameConvert.GetLongExchangeName(Key.Split('@')[2]); string symbol = Key.Split('@')[3]; CommonLab.TimePeriodType periodType = (CommonLab.TimePeriodType)Enum.Parse(typeof(CommonLab.TimePeriodType), period); // bool FlushFlag = false; switch (periodType) { case CommonLab.TimePeriodType.m1: if ((DateTime.UtcNow - t).TotalMinutes >= 1) { keys.Add(item.Key); } break; case CommonLab.TimePeriodType.m5: if ((DateTime.UtcNow - t).TotalMinutes >= 5) { keys.Add(item.Key); } break; case CommonLab.TimePeriodType.m10: if ((DateTime.UtcNow - t).TotalMinutes >= 10) { keys.Add(item.Key); } break; case CommonLab.TimePeriodType.m30: if ((DateTime.UtcNow - t).TotalMinutes >= 30) { keys.Add(item.Key); } break; case CommonLab.TimePeriodType.h1: if ((DateTime.UtcNow - t).TotalHours >= 1) { keys.Add(item.Key); } break; case CommonLab.TimePeriodType.h4: if ((DateTime.UtcNow - t).TotalHours >= 4) { keys.Add(item.Key); } break; case CommonLab.TimePeriodType.d1: if ((DateTime.UtcNow - t).TotalHours >= 24) { keys.Add(item.Key); } break; default: break; } string jsont = item.Value.ToOCHLString(); if (CommonLab.RedisKeyConvert.GetRedisKeyExpiredTime(periodType) == -1) { db.StringSet(item.Key, jsont); } else { db.KeyExpire(item.Key, DateTime.UtcNow.AddMinutes(48 * 60)); } } } catch (Exception e) { log.log(e.Message + e.StackTrace); } foreach (string key in keys) { DateTime t = Convert.ToDateTime(key.Split('@')[4]); string year = t.Year.ToString(); string month = t.Month.ToString(); string day = t.Day.ToString(); string type = key.Split('@')[0]; string period = key.Split('@')[1]; string exchangename = CommonLab.ExchangeNameConvert.GetLongExchangeName(key.Split('@')[2]); string symbol = key.Split('@')[3]; string file = "ExchangeDataFiles" + @"/" + type + "/" + period + "/" + "/" + exchangename + "/" + symbol + "/" + year + @"/" + month + @"/" + day + ".txt"; CommonLab.Log log = new CommonLab.Log(file); //double ts= CommonLab.TimerHelper.GetTimeStamp(exporttime.AddSeconds(-exporttime.Second).ToUniversalTime()); log.RawLog(TickerData[key].ToOCHLString()); TickerData.Remove(key); } } Thread.Sleep(60 * 1000); } }