private void InitHistoryOrder(DbDataSet.已发委托DataTable dt) { if (dt != null && dt.Count > 0) { foreach (var item in dt) { try { int orderId = int.Parse(item.委托编号); queueOrderTraderRelation.Enqueue(new OrderTrader(item.交易员, orderId, item.委托编号.ToUpper())); queueOrder.Enqueue(new OrderOrTradeUpdatedMessage() { Orderid = orderId, LastFilledTradeQuantity = item.成交数量, Price = item.委托价格, OriginalQuantity = item.委托数量, Symbol = item.证券代码, Status = GetStatusByDescription(item.状态说明), Side = item.买卖方向 == 0 ? "BUY" : "SELL", EventTime = (long)(DateTime.Today.AddHours(9) - StartTime).TotalMilliseconds, }); } catch (Exception ex) { Program.logger.LogInfo("BinanceAdapter.InitHistoryOrder Exception: {0}", ex.Message); } } } }
public static void SendWTDataToServer() { try { Program.logger.LogInfo("委托数据发送开始..."); YJServiceReference.JyDataSet.已发委托DataTable new已发委托DataTable1 = new YJServiceReference.JyDataSet.已发委托DataTable(); AASServer.DbDataSet.已发委托DataTable 已发委托DataTable1 = new DbDataSet.已发委托DataTable(); 已发委托DataTable1.LoadToday(); foreach (AASServer.DbDataSet.已发委托Row 已发委托Row1 in 已发委托DataTable1) { YJServiceReference.JyDataSet.已发委托Row 已发委托RowNew = new已发委托DataTable1.New已发委托Row(); new已发委托DataTable1.Add已发委托Row(已发委托RowNew); 已发委托RowNew.日期 = 已发委托Row1.日期; 已发委托RowNew.组合号 = 已发委托Row1.组合号; 已发委托RowNew.委托编号 = 已发委托Row1.委托编号; 已发委托RowNew.交易员 = 已发委托Row1.交易员; 已发委托RowNew.状态说明 = 已发委托Row1.状态说明; 已发委托RowNew.市场代码 = 已发委托Row1.市场代码; 已发委托RowNew.证券代码 = 已发委托Row1.证券代码; 已发委托RowNew.证券名称 = 已发委托Row1.证券名称; 已发委托RowNew.买卖方向 = 已发委托Row1.买卖方向; 已发委托RowNew.成交价格 = 已发委托Row1.成交价格; 已发委托RowNew.成交数量 = 已发委托Row1.成交数量; 已发委托RowNew.委托价格 = 已发委托Row1.委托价格; 已发委托RowNew.委托数量 = 已发委托Row1.委托数量; 已发委托RowNew.撤单数量 = 已发委托Row1.撤单数量; } if (Program.DataServiceClient != null) { Program.DataServiceClient.SendWTDataAsync(new已发委托DataTable1, CommonUtils.Mac); Program.logger.LogInfo("委托数据发送结束"); } else { Program.logger.LogInfo("委托数据发送失败"); } } catch (Exception) { throw; } }
public void Init(string apiKey, string secretKey, string accountName, string account, DbDataSet.已发委托DataTable dt) { if (!IsInited) { lock (sync) { if (!IsInited && DateTime.Now > AutoBanTime) { ApiClient apiClient = new ApiClient(apiKey, secretKey); binanceClient = new BinanceClient(apiClient); binanceClient.ListenUserDataEndpoint(AccountHandler, TradesHandler, OrdersHandler); Thread.Sleep(stopMiniSeconds); QueryServerTime(); var accInfo = binanceClient.GetAccountInfo().Result; Thread.Sleep(stopMiniSeconds); foreach (var item in accInfo.Balances) { dictBalance[item.Asset] = item; } lastRequesTime = DateTime.Now; if (exchangeInfo == null) { exchangeInfo = binanceClient.GetExchangeInfo().Result; Thread.Sleep(stopMiniSeconds); } AccountName = accountName; Account = account; InitHistoryOrder(dt); historyOrder = dt; IsInited = true; } } } }
public static void SendYJDataToServer() { Program.logger.LogInfo("业绩数据发送开始..."); YJServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable1 = new YJServiceReference.JyDataSet.业绩统计DataTable(); StringBuilder sb = new StringBuilder(); AASServer.DbDataSet.已发委托DataTable 已发委托DataTable1 = new DbDataSet.已发委托DataTable(); AASServer.DbDataSet.已平仓订单DataTable 已平仓订单DataTable1 = new DbDataSet.已平仓订单DataTable(); Dictionary <string, AASServer.DbDataSet.平台用户Row> dictUser = new Dictionary <string, DbDataSet.平台用户Row>(); 已平仓订单DataTable1.Load(); 已发委托DataTable1.LoadToday(); foreach (AASServer.DbDataSet.已发委托Row 已发委托Row1 in 已发委托DataTable1.Where(r => r.成交数量 != 0)) { decimal 交易费用 = 0; decimal 交易额度 = 0; try { AASServer.DbDataSet.平台用户Row AASUser1; if (dictUser.ContainsKey(已发委托Row1.交易员)) { AASUser1 = dictUser[已发委托Row1.交易员]; } else { AASUser1 = Program.db.平台用户.Get平台用户(已发委托Row1.交易员); dictUser.Add(已发委托Row1.交易员, AASUser1); } var group = ShareLimitAdapter.Instance.GetLimitGroup(已发委托Row1.交易员); if (group != null) { var stockLimitItem = group.GroupStockList.FirstOrDefault(_ => _.GroupAccount == 已发委托Row1.组合号 && _.StockID == 已发委托Row1.证券代码); if (stockLimitItem != null) { 交易费用 += ShareLimitAdapter.Instance.Get交易费用(已发委托Row1, decimal.Parse(stockLimitItem.Commission)); 交易额度 = decimal.Parse(stockLimitItem.LimitCount); } else { Program.logger.LogInfo("业绩统计逻辑异常,额度共享逻辑未找到组合号{0}下证券代码{1}对应的配置项!"); } } else { AASServer.DbDataSet.额度分配Row AASPermition = Program.db.额度分配.Get额度分配(已发委托Row1.交易员, 已发委托Row1.证券代码); if (AASPermition == null) { AASUser1 = Program.db.平台用户.Get平台用户(已发委托Row1.交易员); 交易费用 = 已发委托Row1.Get交易费用(AASUser1.手续费率); } else { 交易费用 = 已发委托Row1.Get交易费用(AASPermition.手续费率); 交易额度 = AASPermition.交易额度; } } if (!业绩统计DataTable1.Any(r => r.交易员 == 已发委托Row1.交易员 && r.组合号 == 已发委托Row1.组合号 && r.证券代码 == 已发委托Row1.证券代码)) { #region 生成业绩统计Row YJServiceReference.JyDataSet.业绩统计Row 业绩统计RowNew = 业绩统计DataTable1.New业绩统计Row(); 业绩统计RowNew.交易员 = 已发委托Row1.交易员; 业绩统计RowNew.组合号 = 已发委托Row1.组合号; 业绩统计RowNew.证券代码 = 已发委托Row1.证券代码; 业绩统计RowNew.证券名称 = 已发委托Row1.证券名称; 业绩统计RowNew.交易额度 = 交易额度; if (已发委托Row1.买卖方向 == 0) { #region 买单 业绩统计RowNew.买入数量 = 已发委托Row1.成交数量; 业绩统计RowNew.买入金额 = 已发委托Row1.成交价格 * 已发委托Row1.成交数量; 业绩统计RowNew.买入均价 = 已发委托Row1.成交价格; 业绩统计RowNew.卖出数量 = 0; 业绩统计RowNew.卖出金额 = 0; 业绩统计RowNew.卖出均价 = 0; #endregion } else { #region 卖单 业绩统计RowNew.买入数量 = 0; 业绩统计RowNew.买入金额 = 0; 业绩统计RowNew.买入均价 = 0; 业绩统计RowNew.卖出数量 = 已发委托Row1.成交数量; 业绩统计RowNew.卖出金额 = 已发委托Row1.成交价格 * 已发委托Row1.成交数量; 业绩统计RowNew.卖出均价 = 已发委托Row1.成交价格; #endregion } 业绩统计RowNew.毛利 = 0; 业绩统计RowNew.交易费用 = 交易费用; 业绩统计RowNew.净利润 = 0; 业绩统计RowNew.分组 = Enum.GetName(typeof(分组), AASUser1.分组); 业绩统计RowNew.日期 = Convert.ToInt32(已发委托Row1.日期.ToString("yyyyMMdd")); 业绩统计DataTable1.Add业绩统计Row(业绩统计RowNew); #endregion } else { #region 修改业绩统计Row YJServiceReference.JyDataSet.业绩统计Row 业绩统计Row1 = 业绩统计DataTable1.First(r => r.交易员 == 已发委托Row1.交易员 && r.组合号 == 已发委托Row1.组合号 && r.证券代码 == 已发委托Row1.证券代码); if (已发委托Row1.买卖方向 == 0) { #region 买单 业绩统计Row1.买入数量 += 已发委托Row1.成交数量; 业绩统计Row1.买入金额 += 已发委托Row1.成交价格 * 已发委托Row1.成交数量; 业绩统计Row1.买入均价 = Math.Round(业绩统计Row1.买入金额 / 业绩统计Row1.买入数量, 3, MidpointRounding.AwayFromZero); #endregion } else { #region 卖单 业绩统计Row1.卖出数量 += 已发委托Row1.成交数量; 业绩统计Row1.卖出金额 += 已发委托Row1.成交价格 * 已发委托Row1.成交数量; 业绩统计Row1.卖出均价 = Math.Round(业绩统计Row1.卖出金额 / 业绩统计Row1.卖出数量, 3, MidpointRounding.AwayFromZero); #endregion } 业绩统计Row1.毛利 = 0; 业绩统计Row1.交易费用 += 交易费用; 业绩统计Row1.净利润 = 0; #endregion } } catch (Exception ex) { Program.logger.LogInfo("已发委托.交易员=" + 已发委托Row1.交易员 + ",委托编号=" + 已发委托Row1.委托编号 + System.Environment.NewLine + ex.Message); } } foreach (YJServiceReference.JyDataSet.业绩统计Row 业绩统计Row1 in 业绩统计DataTable1) { if (已平仓订单DataTable1.Any(r => r.交易员 == 业绩统计Row1.交易员 && r.组合号 == 业绩统计Row1.组合号 && r.证券代码 == 业绩统计Row1.证券代码)) { 业绩统计Row1.毛利 = 已平仓订单DataTable1.Where(r => r.交易员 == 业绩统计Row1.交易员 && r.组合号 == 业绩统计Row1.组合号 && r.证券代码 == 业绩统计Row1.证券代码).Sum(r => r.毛利); 业绩统计Row1.净利润 = 业绩统计Row1.毛利 - 业绩统计Row1.交易费用; } } if (Program.DataServiceClient != null) { Program.DataServiceClient.SendYJDataAsync(业绩统计DataTable1, CommonUtils.Mac); Program.logger.LogInfo("业绩数据发送结束"); } else { Program.logger.LogInfo("业绩数据发送失败"); } }