private void UpdateBindDataBuyTradeData(string channel, Model.TradeModel latestData) { if (LatestIndex == null) { return; } string subResult = string.Format("{0} = {1} - {2}", Math.Round(double.Parse(latestData.Price) - double.Parse(LatestIndex.futureIndex), 2), latestData.Price, LatestIndex.futureIndex); if (channel.Contains(OKCoinEntities.OKCoinPeriod.ThisWeek)) { ThisWeekSubResult = subResult; PeriodTradeDict[OKCoinEntities.OKCoinPeriod.ThisWeek] = latestData; } else if (channel.Contains(OKCoinEntities.OKCoinPeriod.NextWeek)) { NextWeekSubResult = subResult; PeriodTradeDict[OKCoinEntities.OKCoinPeriod.NextWeek] = latestData; } else if (channel.Contains(OKCoinEntities.OKCoinPeriod.Quarter)) { QuarterSubResult = subResult; PeriodTradeDict[OKCoinEntities.OKCoinPeriod.Quarter] = latestData; } }
private void TradeDataMain(object obj) { var adapter = obj as OKCoinAdapter; if (adapter != null) { DateTime latestTime = DateTime.MinValue; string msg = null; while (true) { if (adapter.MessageQueue != null && adapter.MessageQueue.Count > 0 && adapter.MessageQueue.TryDequeue(out msg) && OKCoinConfig.IsChannelData(msg)) { try { var dataStr = OKCoinConfig.GetChannelData(msg); var data = Newtonsoft.Json.JsonConvert.DeserializeObject <string[][]>(dataStr); if (data != null && data.Length > 0) { var item = data.Last(); Model.TradeModel tradeItem = new Model.TradeModel(); tradeItem.TradeID = item[0]; tradeItem.Price = item[1]; tradeItem.TradeQty = item[2]; tradeItem.Time = item[3]; tradeItem.BSFlag = item[4]; UpdateBindDataBuyTradeData(adapter.Channel, tradeItem); } } catch (Exception ex) { App.Log.LogInfoFormat("TradeIndexModel.TradeDataMain Exception:{0}", ex.Message); } } else { Thread.Sleep(100); } } } }