コード例 #1
0
ファイル: Config.cs プロジェクト: radtek/CoinsPro
 public static void RaiseUpdateTradeEvent(string symbol, CommonLab.Trade t)
 {
     if (UpdateTradeEvent != null)
     {
         UpdateTradeEvent(symbol, t);
     }
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: radtek/CoinsPro
 private static void Config_UpdateTradeEvent(string symbol, CommonLab.Trade t)
 {
     try
     {
         tradeDataManage.AddTrade(symbol, t);
     }
     catch (Exception e)
     {
         log.log(e.Message + e.StackTrace);
     }
 }
コード例 #3
0
ファイル: Form1.cs プロジェクト: radtek/CoinsPro
        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);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: radtek/CoinsPro
        /// <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();
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: radtek/CoinsPro
 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());
 }
コード例 #6
0
ファイル: WssHelper.cs プロジェクト: radtek/CoinsPro
        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();
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: radtek/CoinsPro
 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());
 }