public static void RaiseUpdateTradeEvent(string symbol, CommonLab.Trade t) { if (UpdateTradeEvent != null) { UpdateTradeEvent(symbol, t); } }
private static void Config_UpdateTradeEvent(string symbol, CommonLab.Trade t) { try { tradeDataManage.AddTrade(symbol, t); } catch (Exception e) { log.log(e.Message + e.StackTrace); } }
private void Config_UpdateTradeEvent(string symbol, CommonLab.Trade t) { double sec = (DateTime.Now - s).TotalSeconds; if (sec == 0) { sec = 1; } num++; string jsont = JsonConvert.SerializeObject(t); totall += jsont.Length; Config.RaiseUpdateConsoleEvent(System.Drawing.Color.Blue, t.ToString() + "\r\n avglen:" + totall / num + " deals:" + num / sec); }
/// <summary> /// 新增交易信息 /// </summary> /// <param name="symbol"></param> /// <param name="t"></param> public void AddTrade(string symbol, CommonLab.Trade t) { DateTime timeStamp = CommonLab.TimerHelper.ConvertStringToDateTime(t.ExchangeTimeStamp); string key = ""; if (timeStamp.Year < 2018) { return; } int count = 0; try { foreach (CommonLab.TimePeriodType type in Enum.GetValues(typeof(CommonLab.TimePeriodType))) { key = CommonLab.RedisKeyConvert.GetRedisKey(CommonLab.RedisKeyType.Trade, type, CommonLab.ExchangeNameConvert.GetShortExchangeName("binance"), symbol, timeStamp); //if (DateTime.Now.Hour == 0 && DateTime.Now.Minute < 5) //{ // log.log("key:" + key + " TradeData:"+ TradeData.Count); //} //count++; lock (TradeData) { count++; if (TradeData.ContainsKey(key)) { count++; TradeData[key].Update(t, GetLegalCurrency(symbol)); } else { count++; CommonLab.TradePeriod tpm = new CommonLab.TradePeriod(symbol, t, GetLegalCurrency(symbol)); count++; TradeData.TryAdd(key, tpm); } } } } catch (IndexOutOfRangeException e) { string json = Newtonsoft.Json.JsonConvert.SerializeObject(TradeData); log.log(count + "key:" + key + "\r\nORE" + e.Message + e.StackTrace + e.Source + "\r\n" + json); Console.WriteLine("key:" + key + "\r\nORE" + e.Message + e.StackTrace + e.Source + "\r\n" + json); //Console.ReadKey(); } }
private static void Exchange_TradeEvent(object sender, CommonLab.Trade t, CommonLab.EventTypes et, CommonLab.TradePair tp) { tradeCacheManage.Add(t); //Console.WriteLine("tradeCacheManage- Count:{0},AvgPrice{1}",tradeCacheManage.Trades.Count,tradeCacheManage.Avg()); }
public void StartListenTrade(List <string> Symbols) { if (Symbols.Count == 0) { return; } string CombinedStr = "/stream?streams="; for (int i = 0; i < Symbols.Count; i++) { CombinedStr += Symbols[i] + "@trade"; if (i < Symbols.Count - 1) { CombinedStr += "/"; } } wstrade = new WebSocket(spotwssurl + CombinedStr); if (Config.Proxy != null) { wstrade.SetProxy("http://" + Config.Proxy.IP + ":" + Config.Proxy.Port, "", ""); } wstrade.OnMessage += (sender, e) => { if (e.IsText) { LastCommTimeStamp = DateTime.Now; JObject Jobject = JObject.Parse(e.Data); string streamName = Jobject["stream"].ToString(); if (streamName.IndexOf("trade") < 0) { return; } string rawData = Jobject["data"].ToString(); string symbol = streamName.Split('@')[0]; try { JObject trade = JObject.Parse(rawData); CommonLab.Trade t = new CommonLab.Trade(); t.Amount = Convert.ToDouble(trade["q"].ToString()); t.Price = Convert.ToDouble(trade["p"].ToString()); t.TradeID = trade["t"].ToString(); t.BuyOrderID = trade["b"].ToString(); t.SellOrderID = trade["a"].ToString(); if (Convert.ToBoolean(trade["m"].ToString())) { t.Type = CommonLab.TradeType.Buy; } else { t.Type = CommonLab.TradeType.Sell; } t.ExchangeTimeStamp = Convert.ToDouble(trade["T"].ToString()) / 1000; t.LocalServerTimeStamp = CommonLab.TimerHelper.GetTimeStampMilliSeconds(DateTime.Now); Config.RaiseUpdateTradeEvent(symbol, t); //UpdateTicker(tradingpair, t); } catch (Exception err) { Console.WriteLine("trade err:" + err.Message + e.Data); } } }; wstrade.Connect(); }
private static void Exchange_TradeEvent(object sender, CommonLab.Trade t, CommonLab.EventTypes et, CommonLab.TradePair tp) { Console.BackgroundColor = ConsoleColor.DarkGreen; Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(DateTime.Now.ToString() + " trade-e:{0},{1}", t.ExchangeTimeStamp, t.ToString()); }