Ejemplo n.º 1
0
        void filter_NotifyOrderData(string data)
        {
            if (string.IsNullOrEmpty(data))
            {
                return;
            }

            //_catchDataStatus = true;//有数据的时候就设置为得到数据状态
            _currentBrowser.LastCatchDataTime = DateTime.Now;
            List <TradeDepthsEntity> diff = new List <TradeDepthsEntity>();

            try
            {
                //var order = JsonConvert.DeserializeObject<BTMOrder>(data);
                var trade = JsonConvert.DeserializeObject <tradeInfo>(data);
                SetUpdateLabel?.Invoke(trade);
                if (!trade.tradeDepths.Any())
                {
                    LogPrint?.Invoke("没有抓取到数据");
                }
                if (_lastdata != null)
                {
                    diff =
                        trade.tradeDepths.Except(_lastdata, Equality <TradeDepthsEntity> .CreateComparer(p => p.id))
                        .ToList();
                }
                else
                {
                    diff = trade.tradeDepths.ToList();
                }
                _lastdata = trade.tradeDepths;

                NotifyOrderData?.Invoke(diff, trade);
            }
            catch (Exception e)
            {
                LogPrint?.Invoke(string.Format("{0}-{1}", "filter_NotifyOrderData", e.Message));
                LoggerFactory.GetLog().Error("filter_NotifyOrderData 出错!", e);
            }
        }
Ejemplo n.º 2
0
        void filter_NotifyOrderData(string data)
        {
            //_catchDataStatus = true;//有数据的时候就设置为得到数据状态
            _currentBrowser.LastCatchDataTime = DateTime.Now;
            SetUpdateLabel?.Invoke(DateTime.Now);
            try
            {
                //var order = JsonConvert.DeserializeObject<BTMOrder>(data);
                //var order = JsonConvert.DeserializeObject(data);
                var         entity = JsonConvert.DeserializeObject <Btc9Entity>(data);
                OrderEntity order  = new OrderEntity()
                {
                    max        = entity.cmark.max_price,
                    min        = entity.cmark.min_price,
                    sum        = entity.cmark.H24_done_money,
                    volume     = entity.cmark.H24_done_num,
                    data       = data,
                    sourcesite = "btc9"
                };

                List <OrderDetailEntity> list = new List <OrderDetailEntity>();
                foreach (var d in entity.ctrade)
                {
                    OrderDetailEntity item = new OrderDetailEntity();
                    item.price  = d.price;
                    item.amount = d.amount;
                    item.money  = d.money;
                    System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
                    // 当地时区
                    item.time       = startTime.AddSeconds(d.add_time);
                    item.type       = d.type.Contains("red");
                    item.sourcesite = "btc9";

                    list.Add(item);
                }
                if (_lastdata == null) //下面代码是在一定程度上解决数据重复的问题.
                {
                    _lastdata = list.FirstOrDefault(i => i.time == list.Max(a => a.time));
                }
                else
                {
                    var _index = list.FindIndex(
                        i =>
                        i.time == _lastdata.time && i.price == _lastdata.price && i.type == _lastdata.type &&
                        i.amount == _lastdata.amount);
                    if (_index == 0)
                    {
                        return;
                    }
                    else if (_index >= 1)
                    {
                        list.RemoveRange(_index, list.Count - _index);
                    }
                    _lastdata = _lastdata = list.FirstOrDefault(i => i.time == list.Max(a => a.time));
                }

                NotifyOrderData?.Invoke(Prefix, order, list);
            }
            catch (Exception e)
            {
                LoggerFactory.GetLog().Error("filter_NotifyOrderData 出错!", e);
            }
        }
Ejemplo n.º 3
0
        void filter_NotifyOrderData(string data)
        {
            //_catchDataStatus = true;//有数据的时候就设置为得到数据状态
            _currentBrowser.LastCatchDataTime = DateTime.Now;

            SetUpdateLabel?.Invoke(DateTime.Now);

            try
            {
                //var order = JsonConvert.DeserializeObject<BTMOrder>(data);
                var order = JsonConvert.DeserializeObject <OrderEntity>(data);
                order.sourcesite = "jubi";
                order.data       = JsonConvert.SerializeObject(order.d);
                List <OrderDetailEntity> list = new List <OrderDetailEntity>();
                foreach (var d in order.d)
                {
                    OrderDetailEntity item = new OrderDetailEntity();
                    double            p, am;
                    double.TryParse(d[1], out p);
                    item.price = p;
                    double.TryParse(d[2], out am);
                    item.amount = am;
                    item.money  = p * am;
                    DateTime dt;
                    DateTime.TryParse(d[4] + " " + d[0], out dt);
                    item.time       = dt;
                    item.type       = d[3] == "buy";
                    item.sourcesite = "jubi";

                    list.Add(item);
                }
                //var groupList= list.GroupBy(i => new {i.type, i.time}).Select(i => i).ToList();
                //list.Clear();
                //foreach (var orderDetailEntities in groupList)///分组合并同时间大资金分批的问题.
                //{
                //    OrderDetailEntity item = new OrderDetailEntity();

                //    item.amount = orderDetailEntities.Sum(i => i.amount);
                //    item.money = orderDetailEntities.Sum(i => i.money);
                //    item.time = orderDetailEntities.Key.time;
                //    item.price = item.type
                //        ? orderDetailEntities.Min(i => i.price)
                //        : orderDetailEntities.Max(i => i.price);
                //    item.type = orderDetailEntities.Key.type;
                //    list.Add(item);
                //}
                if (_lastdata == null)//下面代码是在一定程度上解决数据重复的问题.
                {
                    _lastdata = list.FirstOrDefault(i => i.time == list.Max(a => a.time));
                }
                else
                {
                    var _index = list.FindIndex(
                        i =>
                        i.time == _lastdata.time && i.price == _lastdata.price && i.type == _lastdata.type &&
                        i.amount == _lastdata.amount);
                    if (_index == 0)
                    {
                        return;
                    }
                    else if (_index >= 1)
                    {
                        list.RemoveRange(_index, list.Count - _index);
                    }
                    _lastdata = _lastdata = list.FirstOrDefault(i => i.time == list.Max(a => a.time));
                }
                NotifyOrderData?.Invoke(Prefix, order, list);
            }
            catch (Exception e)
            {
                LoggerFactory.GetLog().Error("filter_NotifyOrderData 出错!", e);
            }
        }