コード例 #1
0
ファイル: CoinConfig.cs プロジェクト: Ben-lanqing/CoinTrade
 public static List <CoinConfig> Load()
 {
     try
     {
         string conFilePath = AppDomain.CurrentDomain.BaseDirectory + "CoinConfigs.json";
         if (!File.Exists(conFilePath))
         {
             throw (new Exception("CoinConfigs配置文件不存在"));
         }
         StreamReader sr      = new StreamReader(conFilePath, Encoding.Default);
         string       jsonStr = sr.ReadToEnd();
         var          list    = JsonConvert.DeserializeObject <List <CoinConfig> >(jsonStr);
         if (list != null && list.Count > 0)
         {
             Log4NetUtility.Info("加载系统配置", "已成功加载系统配置CoinConfigs");
             return(list);
         }
         else
         {
             throw (new Exception("CoinConfigs配置文件异常"));
         }
     }
     catch (Exception e)
     {
         Log4NetUtility.Error("加载系统配置CoinConfigs", "加载配置异常:" + Utils.Exception2String(e));
         throw (e);
     }
 }
コード例 #2
0
        public Ticker GetTicker(string platform, string symbol)
        {
            try
            {
                switch (platform)
                {
                //case "OK":
                //    return GetTicker_OK(symbol);
                //case "BA":
                //    return GetDepth_BA(symbol, size);
                case "HB":
                //return GetTicker_OK(symbol);
                case "FC":
                    return(GetTicker_FC(symbol));

                default:
                    return(null);
                }
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("GetTicker", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("GetTicker", e);
                return(null);
            }
        }
コード例 #3
0
        public List <Kline> GetKline(string platform, string symbol, string resolution, int limit = 60)
        {
            try
            {
                switch (platform)
                {
                //case "OK":
                //    return GetTicker_OK(symbol);
                //case "BA":
                //    return GetDepth_BA(symbol, size);
                case "HB":
                //return GetTicker_OK(symbol);
                case "FC":
                    return(GetKline_FC(symbol, resolution, limit));

                default:
                    return(null);
                }
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("GetKline", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("GetKline", e);
                return(null);
            }
        }
コード例 #4
0
        public bool Connnet()
        {
            try
            {
                websocket = new WebSocketSharp.WebSocket(WEBSOCKET_API);

                websocket.OnError += (sender, e) =>
                {
                    Console.WriteLine("Error:" + e.Exception.Message.ToString());
                    Log4NetUtility.Debug("OnError", e.Exception.Message);
                };
                websocket.OnOpen    += OnOpened;
                websocket.OnClose   += Websocket_Closed;;
                websocket.OnMessage += ReceviedMsg;
                websocket.ConnectAsync();
                while (!websocket.IsAlive)
                {
                    Console.WriteLine("Waiting WebSocket connnet......");
                    Thread.Sleep(1000);
                }
                heartBeatTimer.Elapsed += new System.Timers.ElapsedEventHandler(heatBeat);
                //heartBeatTimer.Start();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:" + ex.Message);
                Log4NetUtility.Error("WebSocketApi_OK", Utils.Exception2String(ex));
            }
            return(true);
        }
コード例 #5
0
ファイル: RestApi_BC.cs プロジェクト: Ben-lanqing/CoinTrade
        public string userinfo()
        {
            string result = "";

            try
            {
                var method = "GET";
                //string timeSpamt = GetDateTime();
                //var sign = CreateSign(method, USERINFO_URL, secret_key, timeSpamt, null);
                //WebHeaderCollection header = new WebHeaderCollection();
                //header.Add("FC-ACCESS-KEY", api_key);
                //header.Add("FC-ACCESS-SIGNATURE", sign);
                //header.Add("FC-ACCESS-TIMESTAMP", timeSpamt);
                Dictionary <string, object> paras = new Dictionary <string, object>();
                paras.Add("AccessKey", api_key);
                paras.Add("SignatureMethod", "HmacSHA256");
                paras.Add("SignatureVersion", "V1.0");
                paras.Add("Timestamp", DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"));
                paras.Add("Signature", null);
                int statusCode;
                result = RequestDataSync($"{url_prex}{USERINFO_URL}", method, paras, null, out statusCode);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("userinfo", Utils.Exception2String(e));
                Log4NetUtility.Error("userinfo", result);
                DbHelper.CreateInstance().AddError("userinfo", e);
            }
            return(result);
        }
コード例 #6
0
ファイル: RestApi_FC.cs プロジェクト: Ben-lanqing/CoinTrade
        public string order_info(string order_id)
        {
            string result = "";

            try
            {
                var    method    = "GET";
                string timeSpamt = GetDateTime();
                // 构造参数签名
                //Dictionary<string, object> paras = new Dictionary<string, object>();
                //if (!string.IsNullOrEmpty(order_id))
                //{
                //    paras.Add("order_id", order_id);
                //}
                var sign = CreateSign(method, ORDERS_INFO_URL + "/" + order_id, secret_key, timeSpamt, null);
                WebHeaderCollection header = new WebHeaderCollection();
                header.Add("FC-ACCESS-KEY", api_key);
                header.Add("FC-ACCESS-SIGNATURE", sign);
                header.Add("FC-ACCESS-TIMESTAMP", timeSpamt);

                int statusCode;
                result = RequestDataSync($"{url_prex}{ORDERS_INFO_URL}/{order_id}", method, null, header, out statusCode);
                return(result);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("order_info", result);
                throw e;
            }
        }
コード例 #7
0
ファイル: RobotReport.cs プロジェクト: Ben-lanqing/CoinTrade
        private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            string reportStr = "";

            try
            {
                var account = robotTrade.CurrentAccount;
                var ticker  = robotMarket.GetTicker(info.Symbol);
                if (DateTime.Now.Minute == 0)
                {
                    //整点日志
                    reportStr = GetReport(info, account, ticker, true);
                }
                else
                {
                    //分钟日志
                    reportStr = GetReport(info, account, ticker, false);
                }

                Log4NetUtility.Info("ReportDetail ", reportStr);
            }
            catch (Exception ex)
            {
                Log4NetUtility.Error("ReportTimer", Utils.Exception2String(ex));
            }
        }
コード例 #8
0
        public int ClearCurrentOrders(string symbol)
        {
            try
            {
                switch (platform)
                {
                case "OK":
                //return GetTicker_OK(symbol);
                //case "BA":
                //    return GetDepth_BA(symbol, size);
                case "HB":
                //return GetTicker_OK(symbol);
                case "FC":
                    return(ClearCurrentOrders_FC(symbol));

                default:
                    return(-1);
                }
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("ClearOrders", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("ClearOrders", e);
                return(-1);
            }
        }
コード例 #9
0
ファイル: RestApi_BC.cs プロジェクト: Ben-lanqing/CoinTrade
        public string trade(string symbol, string side, string type, string price, string amount)
        {
            string result = "";

            try
            {
                var    method    = "POST";
                string timeSpamt = GetDateTime();
                // 构造参数签名
                Dictionary <string, object> paras = new Dictionary <string, object>();
                if (!string.IsNullOrEmpty(amount))
                {
                    paras.Add("amount", amount);
                }
                if (!string.IsNullOrEmpty(price))
                {
                    paras.Add("price", price);
                }
                if (!string.IsNullOrEmpty(side))
                {
                    paras.Add("side", side);
                }
                if (!string.IsNullOrEmpty(symbol))
                {
                    paras.Add("symbol", symbol);
                }
                if (!string.IsNullOrEmpty(type))
                {
                    paras.Add("type", type);
                }

                if (type == "market")
                {
                    paras.Remove("price");
                }

                var sign = CreateSign(method, TRADE_URL, secret_key, timeSpamt, paras);
                WebHeaderCollection header = new WebHeaderCollection();
                header.Add("FC-ACCESS-KEY", api_key);
                header.Add("FC-ACCESS-SIGNATURE", sign);
                header.Add("FC-ACCESS-TIMESTAMP", timeSpamt);

                int statusCode;
                result = RequestDataSync($"{url_prex}{TRADE_URL}", method, paras, header, out statusCode);
                return(result);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("userinfo", Utils.Exception2String(e));
                Log4NetUtility.Error("userinfo", result);
                DbHelper.CreateInstance().AddError("userinfo", e);
            }

            return(result);
        }
コード例 #10
0
ファイル: RobotHFT.cs プロジェクト: Ben-lanqing/CoinTrade
        /// <summary>
        /// 全仓挂单
        /// </summary>
        private void HangOrders()
        {
            try
            {
                #region 新缓存列表 newSessionOrders
                List <Order> newSessionOrders = new List <Order>();
                decimal      newFloatPrice    = GetStandardPrice(GetTicker().last);
                info.floatPrice    = newFloatPrice;
                info.buyOrderCount = info.sellOrderCount = info.OrderQty;
                //info.ShockCount_tmp = info.UpCount_tmp = info.DownCount_tmp = 0;
                for (int i = 1; i <= info.buyOrderCount; i++)
                {
                    decimal orderprice = newFloatPrice - i * info.SpanPrice;
                    Order   order      = new Order()
                    {
                        price = orderprice, amount = info.TradeQty, type = "buy"
                    };
                    newSessionOrders.Add(order);
                }
                for (int i = 1; i <= info.sellOrderCount; i++)
                {
                    decimal orderprice = newFloatPrice + i * info.SpanPrice;
                    Order   order      = new Order()
                    {
                        price = orderprice, amount = info.TradeQty, type = "sell"
                    };
                    newSessionOrders.Add(order);
                }

                #endregion
                #region 挂单、缓存
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                robotSession.ClearSessionAllOrders();
                foreach (var addOrder in newSessionOrders)
                {
                    TradeOrder(addOrder);
                    Thread.Sleep(250);
                }
                //Parallel.ForEach(newSessionOrders, addOrder =>
                //{
                //    TradeOrder(addOrder);
                //});
                stopwatch.Stop();
                Log4NetUtility.Info("HangOrders", robotSession.LogSring());
                Log4NetUtility.Info("HangOrders", $"Order中间价:{newFloatPrice}。交易总用时(毫秒):{stopwatch.ElapsedMilliseconds}");
                #endregion
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("HangOrders", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("HangOrders", e);
            }
        }
コード例 #11
0
 public static string Model2Json(T model)
 {
     try
     {
         return(JsonConvert.SerializeObject(model));
     }
     catch (Exception e)
     {
         Log4NetUtility.Error("ModelHelper", Utils.Exception2String(e));
         //Log4NetUtility.Error("ModelHelper", str);
         DbHelper.CreateInstance().AddError("ModelHelper", e);
         return("");
     }
 }
コード例 #12
0
ファイル: RestApi_FC.cs プロジェクト: Ben-lanqing/CoinTrade
        /// <summary>
        /// 批量获取用户订单
        /// </summary>
        /// <param name="type">查询类型 0:未成交,未成交 1:完全成交,已撤销</param>
        /// <param name="symbol">btc_usd: 比特币 ltc_usd: 莱特币</param>
        /// <param name="order_id">订单ID(多个订单ID中间以","分隔,一次最多允许查询50个订单)</param>
        /// limit=20&states=submitted,partial_filled&symbol=ethusdt
        /// <returns></returns>
        public string orders_info(string limit, string states, string symbol, string after, string before)
        {
            string result = "";

            try
            {
                var    method    = "GET";
                string timeSpamt = GetDateTime();
                // 构造参数签名
                Dictionary <string, object> paras = new Dictionary <string, object>();
                if (!string.IsNullOrEmpty(after))
                {
                    paras.Add("after", after);
                }
                if (!string.IsNullOrEmpty(before))
                {
                    paras.Add("before", before);
                }

                if (!string.IsNullOrEmpty(limit))
                {
                    paras.Add("limit", limit);
                }
                if (!string.IsNullOrEmpty(states))
                {
                    paras.Add("states", states);
                }
                if (!string.IsNullOrEmpty(symbol))
                {
                    paras.Add("symbol", symbol);
                }
                var sign = CreateSign(method, ORDERS_INFO_URL, secret_key, timeSpamt, paras);
                //var sign = CreateSign(method, "/v2/orders?limit=20&states=submitted&symbol=ethusdt", secret_key, timeSpamt, null);
                WebHeaderCollection header = new WebHeaderCollection();
                header.Add("FC-ACCESS-KEY", api_key);
                header.Add("FC-ACCESS-SIGNATURE", sign);
                header.Add("FC-ACCESS-TIMESTAMP", timeSpamt);

                int statusCode;
                result = RequestDataSync($"{url_prex}{ORDERS_INFO_URL}?{ConvertQueryString(paras, true)}", method, null, header, out statusCode);
                //result = RequestDataSync("https://api.fcoin.com/v2/orders?limit=20&states=submitted&symbol=ethusdt", method, null, header, out statusCode);
                return(result);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("orders_info", result);

                throw e;
            }
        }
コード例 #13
0
 public void AddDepth(depth depth)
 {
     try
     {
         using (var db = new MarkeDBEntities())
         {
             db.depth.Add(depth);
             db.SaveChanges();
         }
     }
     catch (Exception e)
     {
         Log4NetUtility.Error("AddDepth", e.Message);
     }
 }
コード例 #14
0
 private void AddOrUpdateOrders2DB(List <Order> orders)
 {
     try
     {
         List <order> list = new List <order>();
         foreach (var order in orders)
         {
             AddOrUpdateOrder2DB(order);
         }
     }
     catch (Exception e)
     {
         Log4NetUtility.Error("AddOrUpdateOrders2DB", Utils.Exception2String(e));
         DbHelper.CreateInstance().AddError("AddOrUpdateOrders2DB", e);
     }
 }
コード例 #15
0
        public Orders GetOrders_FC(string order_id)
        {
            try
            {
                string JsonStr = restApi_FC.order_info(order_id);
                var    data    = ModelHelper <API.Rest.FCoin.orderInfo> .Json2Model(JsonStr);

                Orders order = new Orders(data);
                return(order);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("GetOrderInfo_FC", Utils.Exception2String(e));
                return(new Orders());
            }
        }
コード例 #16
0
 private void DoPlan(long dotime)
 {
     #region ObjectLock
     if (planDoTime == -1)
     {
         lock (planObjectLock)
         {
             if (planDoTime == -1)
             {
                 planDoTime = dotime;
             }
         }
     }
     #endregion
     if (planDoTime == dotime)
     {
         try
         {
             GetData();
             // 当前订单不在缓存中
             robotSession.CheckLostOrders(currentOrder);
             //遍历缓存订单对比当前订单,处理成交订单
             if (filledOrders.Count != 0)
             {
                 UpdateFilledSessionOrders();
                 robotSession.FilledSessionOrders(FilledSessionOrders, currentOrder);
             }
             if (CheckLittleTrade(info.ResetTimes, info.ShockTimes))
             {
                 CurrentEvent?.Invoke(null, new CurrentEventArgs(CurrentEventType.LittleTrade, null, null));
             }
             LimitFilledSessionOrders();
         }
         #region catch finally
         catch (Exception e)
         {
             ////DbHelper.CreateInstance().AddErrInfo("DoPlan", e);
             Log4NetUtility.Error("DoPlan", Utils.Exception2String(e));
             DbHelper.CreateInstance().AddError("DoPlan", e);
         }
         finally
         {
             planDoTime = -1;
         }
         #endregion
     }
 }
コード例 #17
0
ファイル: RestApi_BC.cs プロジェクト: Ben-lanqing/CoinTrade
        public string candles(string symbol, string resolution, int limit)
        {
            string result = "";

            try
            {
                HttpUtilManager httpUtil = HttpUtilManager.getInstance();
                string          url      = $"{CANDLES_URL}/{resolution}/{symbol}";
                result = httpUtil.requestHttpGet(url_prex, url, "limit = " + limit);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("RestApi_BC", result);
                throw e;
            }
            return(result);
        }
コード例 #18
0
ファイル: RestApi_BC.cs プロジェクト: Ben-lanqing/CoinTrade
        /// <summary>
        /// 行情
        /// </summary>
        /// <param name="symbol">btc_usd:比特币    ltc_usd :莱特币</param>
        /// <returns></returns>
        public string ticker(string symbol)
        {
            string result = "";

            try
            {
                HttpUtilManager httpUtil = HttpUtilManager.getInstance();

                result = httpUtil.requestHttpGet(url_prex, TICKER_URL + symbol, "");
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("RestApi_BC", result);
                throw e;
            }
            return(result);
        }
コード例 #19
0
        public Orders GetOrders_FC(string limit, string states, string symbol, string after = null, string before = null)
        {
            try
            {
                string JsonStr = restApi_FC.orders_info(limit, states, symbol, after, before);
                var    data    = ModelHelper <API.Rest.FCoin.ordersInfo> .Json2Model(JsonStr);

                Orders order = new Orders(data);
                return(order);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("GetOrderInfo_FC", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("GetOrderInfo_FC", e);
                return(new Orders());
            }
        }
コード例 #20
0
        /// <summary>
        /// 发送get请求得到响应内容
        /// </summary>
        /// <param name="url_prex">url前缀</param>
        /// <param name="url">请求路径url</param>
        /// <param name="param">请求参数键值对</param>
        /// <returns>响应字符串</returns>
        public String requestHttpGet(String url_prex, String url, String param)
        {
            String          responseContent = "";
            HttpWebResponse httpWebResponse = null;
            StreamReader    streamReader    = null;

            try
            {
                url = url_prex + url;
                if (param != null && !param.Equals(""))
                {
                    url = url + "?" + param;
                }
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                httpWebRequest.Method = "GET";
                httpWebResponse       = (HttpWebResponse)httpWebRequest.GetResponse();
                streamReader          = new StreamReader(httpWebResponse.GetResponseStream());
                if (streamReader == null)
                {
                    return("");
                }
                responseContent = streamReader.ReadToEnd();
                if (responseContent == null || "".Equals(responseContent))
                {
                    return("");
                }
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("requestHttpGet", responseContent);

                throw e;
            }
            finally
            {
                if (httpWebResponse != null)
                {
                    httpWebResponse.Close();
                }
                if (streamReader != null)
                {
                    streamReader.Close();
                }
            }
            return(responseContent);
        }
コード例 #21
0
        public string depht(string symbol, string level = "full")
        {
            string result = "";

            try
            {
                HttpUtilManager httpUtil = HttpUtilManager.getInstance();
                string          url      = $"{DEPTH_URL}/{level}/{symbol}";
                result = httpUtil.requestHttpGet(url_prex, url, "");
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("RestApi_FC", result);

                throw e;
            }
            return(result);
        }
コード例 #22
0
 public static T Json2Model(string str)
 {
     try
     {
         if (string.IsNullOrWhiteSpace(str) || str.Contains("html"))
         {
             return(default(T));
         }
         return(JsonConvert.DeserializeObject <T>(str));
     }
     catch (Exception e)
     {
         Log4NetUtility.Error("ModelHelper", Utils.Exception2String(e));
         Log4NetUtility.Error("ModelHelper", str);
         DbHelper.CreateInstance().AddError("ModelHelper", e);
         return(default(T));
     }
 }
コード例 #23
0
ファイル: RobotHFT.cs プロジェクト: Ben-lanqing/CoinTrade
        private void RobotHFT_CurrentEvent(object sender, CurrentEventArgs e)
        {
            try
            {
                //Log4NetUtility.Debug($"CurrentEvent:{e.EventType} {e.OrderList?.FirstOrDefault()?.type} {e.OrderList?.FirstOrDefault()?.price.ToString("0.0000")}");
                switch (e.EventType)
                {
                case CurrentEventType.OrderFilled:
                    var filledorder = (Order)sender;
                    var neworder    = e.OrderList.FirstOrDefault();
                    if (filledorder != null && neworder != null)
                    {
                        CurrentOrderFilled(filledorder, neworder);
                    }
                    break;

                case CurrentEventType.LostOrders:
                    var lostOrders = e.OrderList;
                    if (lostOrders != null)
                    {
                        CurrentLostOrders(lostOrders);
                    }
                    break;

                case CurrentEventType.DirtyOrders:
                    var dirtyOrders = e.OrderList;
                    if (dirtyOrders != null)
                    {
                        CurrentDirtyOrders(dirtyOrders);
                    }
                    break;

                case CurrentEventType.LittleTrade:
                    ReSetOrder(true);
                    break;
                }
            }
            catch (Exception ex)
            {
                Log4NetUtility.Error("CurrentEvent", Utils.Exception2String(ex));
            }
        }
コード例 #24
0
        //private void AddOrder2DB(Order order)
        //{
        //    try
        //    {
        //        order orderdb = new order();
        //        orderdb.amount = Math.Round(order.amount, 4);
        //        orderdb.createdate = order.create_date;
        //        orderdb.fees = order.fill_fees;
        //        orderdb.orderid = order.order_id;
        //        orderdb.platform = platform;
        //        orderdb.price = Math.Round(order.price, 4);
        //        orderdb.side = order.type;
        //        orderdb.status = order.status;
        //        orderdb.symbol = order.symbol;
        //        orderdb.date = DateTime.Now.ToString("yyyyMMddHHmmss");

        //        using (var db = new CoinTradeDBEntities())
        //        {
        //            db.order.Add(orderdb);
        //            db.SaveChanges();
        //        }
        //    }
        //    catch (Exception e)
        //    {
        //        Log4NetUtility.Error("AddOrder2DB", Utils.Exception2String(e));

        //    }
        //}
        private void AddOrders2DB(List <Order> orders, string symbol)
        {
            try
            {
                List <order> list       = new List <order>();
                var          filledlist = filledOrdersDic[symbol];
                foreach (var order in orders)
                {
                    if (!filledlist.Exists(a => a.order_id == order.order_id))
                    {
                        AddOrder2DB(order);
                    }
                }
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("AddOrders2DB", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("AddOrders2DB", e);
            }
        }
コード例 #25
0
ファイル: RobotHFT.cs プロジェクト: Ben-lanqing/CoinTrade
        private void RobotHFT_SessionEvent(object sender, SessionEventArgs e)
        {
            try
            {
                Log4NetUtility.Debug($"SessionEvent:{e.EventType} {e.OrderList?.FirstOrDefault()?.type} {e.OrderList?.FirstOrDefault()?.price.ToString("0.0000")}");
                switch (e.EventType)
                {
                case SessionEventType.Normal:
                    break;

                case SessionEventType.DoubleOrder:
                    CancelOrders(e.OrderList);
                    break;

                case SessionEventType.ErrPrice:
                    CancelOrders(e.OrderList);
                    break;

                case SessionEventType.MoreOrder:
                    CancelOrders(e.OrderList);
                    break;

                case SessionEventType.LessOrder:
                    TradeOrder(CreateLessOrder());
                    break;

                case SessionEventType.LostOrder:
                    TradeOrder(e.OrderList?.FirstOrDefault());
                    break;

                case SessionEventType.Reset:
                    ReSetOrder();
                    break;
                }
            }
            catch (Exception ex)
            {
                Log4NetUtility.Error("SessionEvent", Utils.Exception2String(ex));
            }
        }
コード例 #26
0
        public bool ReConnnet()
        {
            try
            {
                isConnning = true;
                heartBeatTimer.Close();
                Console.WriteLine($"Websocket_Closed");
                //OnClosed?.Invoke(null, null);
                ResetSocket();

                countConnect++;
                reConnnetCount = 0;
                while (!websocket.IsAlive)
                {
                    Thread.Sleep(1000);
                    reConnnetCount++;
                    if (reConnnetCount < 60 && websocket.ReadyState == WebSocketState.Connecting)
                    {
                        Console.WriteLine($"Waiting WebSocket ReConnnet..{reConnnetCount}....");
                        continue;
                    }
                    if (reConnnetCount > 60 || websocket.ReadyState == WebSocketState.Closed || websocket.ReadyState == WebSocketState.Closing)
                    {
                        ResetSocket();
                        reConnnetCount = 0;
                        Console.WriteLine($"websocket.ReadyState: {websocket.ReadyState}");
                        Console.WriteLine($"Waiting WebSocket ReConnnet..{reConnnetCount}....");
                    }
                }
                heartBeatTimer.Elapsed += new System.Timers.ElapsedEventHandler(heatBeat);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:" + ex.Message);
                Log4NetUtility.Error("WebSocketApi_FC", Utils.Exception2String(ex));
            }
            isConnning = false;
            return(true);
        }
コード例 #27
0
        public Account GetAccount(string platform)
        {
            try
            {
                switch (platform)
                {
                case "HB":

                case "FC":
                    return(GetAccount_FC());

                default:
                    return(null);
                }
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("GetAccount", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("GetAccount", e);
                return(null);
            }
        }
コード例 #28
0
        public static Config LoadConfig()
        {
            try
            {
                Log4NetUtility.Info("加载系统配置", "开始加载系统配置");

                string conFilePath = AppDomain.CurrentDomain.BaseDirectory + "config.json";
                if (!File.Exists(conFilePath))
                {
                    throw (new Exception("配置文件不存在"));
                }
                StreamReader sr        = new StreamReader(conFilePath, Encoding.Default);
                string       jsonStr   = sr.ReadToEnd();
                Config       SysConfig = JsonConvert.DeserializeObject <Config>(jsonStr);
                Log4NetUtility.Info("加载系统配置", "已成功加载系统配置");
                return(SysConfig);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("加载系统配置", "加载配置异常:" + Utils.Exception2String(e));
                throw (e);
            }
        }
コード例 #29
0
ファイル: RestApi_FC.cs プロジェクト: Ben-lanqing/CoinTrade
        public string userinfo()
        {
            string result = "";

            try
            {
                var    method              = "GET";
                string timeSpamt           = GetDateTime();
                var    sign                = CreateSign(method, USERINFO_URL, secret_key, timeSpamt, null);
                WebHeaderCollection header = new WebHeaderCollection();
                header.Add("FC-ACCESS-KEY", api_key);
                header.Add("FC-ACCESS-SIGNATURE", sign);
                header.Add("FC-ACCESS-TIMESTAMP", timeSpamt);

                int statusCode;
                result = RequestDataSync($"{url_prex}{USERINFO_URL}", method, null, header, out statusCode);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("userinfo", result);
                throw e;
            }
            return(result);
        }
コード例 #30
0
        private void AddOrUpdateOrder2DB(Order order)
        {
            try
            {
                order orderdb = new order();
                orderdb.orderid    = order.order_id;
                orderdb.amount     = Math.Round(order.amount, 4);
                orderdb.createdate = order.create_date;
                orderdb.fees       = order.fill_fees;
                orderdb.platform   = platform;
                orderdb.price      = Math.Round(order.price, 4);
                orderdb.side       = order.type;
                orderdb.status     = order.status;
                orderdb.symbol     = order.symbol;
                orderdb.date       = DateTime.Now.ToString("yyyyMMddHHmmss");

                DbHelper.CreateInstance().AddUpdateOrder(orderdb);
            }
            catch (Exception e)
            {
                Log4NetUtility.Error("AddOrUpdateOrder2DB", Utils.Exception2String(e));
                DbHelper.CreateInstance().AddError("AddOrUpdateOrder2DB", e);
            }
        }