private void CalcSellingVolume(ReceiveDataSocket receiveData)
 {
     if (receiveData != null)
     {
         double[][] asks = receiveData.tick.asks;
         for (var i = 0; i < asks.Length; i++)
         {
             BitDetailEntity bitEntity = new BitDetailEntity();
             for (var j = 0; j < asks[i].Length; j++)
             {
                 //价格
                 if (j == 0)
                 {
                     bitEntity.Price = decimal.Parse(asks[i][j].ToString());
                 }
                 //成交量
                 else if (j == 1)
                 {
                     bitEntity.Number = asks[i][j];
                 }
             }
             asksList.Add(bitEntity);
         }
     }
 }
        public virtual void Calc(ReceiveDataSocket receiveData)
        {
            CalcBuyVolume(receiveData);
            CalcSellingVolume(receiveData);

            AnalysisDepth();

            if (forecastAmount > 0)
            {
                var dic = GetPairs(receiveData.ch);
                AnalysisBuyPrice(dic[CRRENCY_NAME]);
                string currencyName = dic.Keys.Contains(CRRENCY_NAME) ? dic[CRRENCY_NAME] : string.Empty;
                //当深度有变化才进行插入操作
                if (!HuoBiContract.depthDic.Keys.Contains(currencyName))
                {
                    var bitTarget = new
                    {
                        CurrencyName     = currencyName,
                        ForecastAmount   = forecastAmount,
                        ServerReturnTime = receiveData.tick.ts,
                        ForecastTime     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")
                    };
                    HuoBiContract.depthDic.Add(currencyName, forecastAmount);
                    string json = JsonConvert.SerializeObject(bitTarget);
                    //Trace.WriteLine(json);
                    InsertToRedis(json, currencyName, receiveData.tick.ts);
                }
                else
                {
                    decimal value = HuoBiContract.depthDic[currencyName];
                    if (value != forecastAmount)
                    {
                        var bitTarget = new
                        {
                            CurrencyName     = currencyName,
                            ForecastAmount   = forecastAmount,
                            ServerReturnTime = receiveData.tick.ts,
                            ForecastTime     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")
                        };
                        //更新
                        HuoBiContract.depthDic[currencyName] = forecastAmount;
                        string json = JsonConvert.SerializeObject(bitTarget);
                        //Trace.WriteLine(json);
                        InsertToRedis(json, currencyName, receiveData.tick.ts);
                    }
                }
            }
        }
示例#3
0
 public void ExecuteDetpthJob(ReceiveDataSocket receiveData)
 {
     lock (objDepthLock)
     {
         if (isDepthFlg)
         {
             isDepthFlg = false;
             try
             {
                 var service = ServerLocation._iServiceProvider.Resolve <BitBaseService>();
                 service.Calc(receiveData);
             }
             catch (Exception ex)
             {
                 LogManage.Job.Error($"ExecuteDetpthQueueJob执行报错:{ex}");
             }
             finally
             {
                 isDepthFlg = true;
             }
         }
     }
 }