private void Refresh业绩() { Task.Run(() => { AASClient.AASServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable1 = this.Generate业绩统计(); Tool.RefreshDrcjDataTable(Program.jyDataSet.业绩统计, 业绩统计DataTable1, new string[] { "证券代码" }); }); }
private void QueryDataMain() { while (true) { //首先判断是否需要请求,可根据是否有委托未至最终状态作为条件。 try { //var notFinishOrder = Program.serverDb.已发委托.Where(_ => (_.委托数量 > _.成交数量 + _.撤单数量)); string status = ""; if (Program.AASServiceClient.State == CommunicationState.Opened || Program.AASServiceClient.State == CommunicationState.Created || Program.AASServiceClient.State == CommunicationState.Opening) { status = "连接状态:已连接"; } else { status = "连接状态:未连接"; Program.AutoReLogin(); } this.Invoke(new Action(() => { toolStripStatusLabelConnect.Text = status; })); //var info = Program.AASServiceClient.QueryDataStatus(Program.Current平台用户.用户名); //if (info != null && info.StartsWith("1|")) //{ // var changes = info.Split('|'); // var wtChange = changes[1] == "1"; // var cjChange = changes[2] == "1"; // var ddChange = changes[3] == "1"; // if (wtChange) // { // var dt = Program.AASServiceClient.Query委托(Program.Current平台用户.用户名); // lock (Program.jyDataSet.委托) // { // Tool.RefreshDrcjDataTable(Program.jyDataSet.委托, dt, new string[] { "组合号", "委托编号" }); // } // } // if (cjChange) // { // var dt = Program.AASServiceClient.Query成交(Program.Current平台用户.用户名); // lock (Program.jyDataSet.成交) // { // Tool.RefreshDrcjDataTable(Program.jyDataSet.成交, dt, new string[] { "组合号", "委托编号", "成交编号" }); // } // } //} var dt = Program.AASServiceClient.Query订单(Program.Current平台用户.用户名); Tool.RefreshDrcjDataTable(Program.serverDb.订单, dt, new string[] { "组合号", "证券代码" }); } catch { } Thread.Sleep(5000); } }
private void RefreshOrder(ProgressChangedEventArgs e) { AASClient.AASServiceReference.JyDataSet.委托DataTable 委托DataTable1 = e.UserState as AASClient.AASServiceReference.JyDataSet.委托DataTable; if (委托DataTable1 == null) { Program.logger.LogRunning("委托更新错误,委托列表为空,不能执行更新!"); return; } //List<string> lstID = new List<string>(); Dictionary <string, List <string> > dictOrder = new Dictionary <string, List <string> >(); var newDt = 委托DataTable1.Copy(); newDt.Clear(); for (int i = 0; i < 委托DataTable1.Rows.Count; i++) { var row = 委托DataTable1.Rows[i]; var orderID = row["委托编号"] as string; var groupID = row["组合号"] as string; if (dictOrder.ContainsKey(groupID) && dictOrder[groupID].Contains(orderID)) { continue; } else { if (dictOrder.ContainsKey(groupID)) { dictOrder[groupID].Add(orderID); } else { dictOrder.Add(groupID, new List <string>() { orderID }); } } newDt.ImportRow(row); } Tool.RefreshDrcjDataTable(Program.jyDataSet.委托, newDt, new string[] { "组合号", "委托编号" }); AASClient.AASServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable1 = this.Generate业绩统计(); Tool.RefreshDrcjDataTable(Program.jyDataSet.业绩统计, 业绩统计DataTable1, new string[] { "证券代码" }); }
public void 可用仓位Change(可用仓位Change request) { if (Program.serverDb.可用仓位 == null || Program.serverDb.可用仓位.Count == 0) { var db = Program.AASServiceClient.QueryTotalPosition(); Tool.RefreshDrcjDataTable(Program.serverDb.可用仓位, db, new string[] { "组合号", "证券代码" }); } else { //var positionInfo = Program.serverDb.可用仓位.FirstOrDefault(_=> _.组合号 == request.AccountName && _.证券代码 == request.StockID); //if (positionInfo != null) //{ // positionInfo.剩余数量 = request.qtyLimit; //} } }
private void RefreshOrder(ProgressChangedEventArgs e) { AASClient.AASServiceReference.JyDataSet.委托DataTable 委托DataTable1 = e.UserState as AASClient.AASServiceReference.JyDataSet.委托DataTable; DateTime receiveTime = DateTime.Now; if (委托DataTable1 == null) { Program.logger.LogRunning("委托更新错误,委托列表为空,不能执行更新!"); return; } Tool.RefreshDrcjDataTable(Program.jyDataSet.委托, 委托DataTable1, new string[] { "组合号", "委托编号" }); Refresh业绩(); foreach (var item in 委托DataTable1) { if (dictOrderSend.ContainsKey(item.证券代码) && dictOrderSend[item.证券代码].ContainsKey(item.委托编号)) { if (dictOrderSend[item.证券代码][item.委托编号] != "---") { Program.logger.LogInfo(string.Format("证券代码{0}, 委托编号{1} 首次收到该委托信息。 下单完成时间{2}, 收到委托时间{3}. ", item.证券代码, item.委托编号, dictOrderSend[item.证券代码][item.委托编号], receiveTime.ToString("HH:mm:ss fff"))); dictOrderSend[item.证券代码][item.委托编号] = "---"; } } else if (!dictOrderSend.ContainsKey(item.证券代码)) { dictOrderSend.Add(item.证券代码, new ConcurrentDictionary <string, string>()); } else if (!dictOrderSend[item.证券代码].ContainsKey(item.委托编号)) { dictOrderSend[item.证券代码][item.委托编号] = "---"; } if (dictOrderCancel.ContainsKey(item.证券代码) && dictOrderCancel[item.证券代码].ContainsKey(item.委托编号)) { if (dictOrderCancel[item.证券代码][item.委托编号] != "---") { Program.logger.LogInfo(string.Format("证券代码{0}, 委托编号{1} 首次收到该委托撤单数据。 撤单完成时间{2}, 收到委托时间{3}. ", item.证券代码, item.委托编号, dictOrderCancel[item.证券代码][item.委托编号], receiveTime.ToString("HH:mm:ss fff"))); dictOrderCancel[item.证券代码][item.委托编号] = "---"; } } } }
private void backgroundWorker报价_ProgressChanged(object sender, ProgressChangedEventArgs e) { switch (e.ProgressPercentage) { case 0: this.toolStripStatusLabel时间.Text = DateTime.Now.ToString("HH:mm:ss"); break; case 1: AASClient.AASServiceReference.DbDataSet.平台用户DataTable 平台用户DataTable1 = e.UserState as AASClient.AASServiceReference.DbDataSet.平台用户DataTable; Tool.RefreshDrcjDataTable(Program.serverDb.平台用户, 平台用户DataTable1, new string[] { "用户名" }); Program.Current平台用户 = Program.serverDb.平台用户.First(r => r.用户名 == Program.Current平台用户.用户名); break; case 2: AASClient.AASServiceReference.DbDataSet.额度分配DataTable TradeLimitDataTable = e.UserState as AASClient.AASServiceReference.DbDataSet.额度分配DataTable; Tool.RefreshDrcjDataTable(Program.serverDb.额度分配, TradeLimitDataTable, new string[] { "证券代码" }); foreach (HqForm HqForm1 in this.hqForm) { HqForm1.comboBox代码.AutoCompleteCustomSource.Clear(); foreach (AASClient.AASServiceReference.DbDataSet.额度分配Row 交易额度Row1 in Program.serverDb.额度分配) { HqForm1.comboBox代码.AutoCompleteCustomSource.Add(string.Format("{0} {1} {2}", 交易额度Row1.证券代码, 交易额度Row1.拼音缩写, 交易额度Row1.证券名称)); HqForm1.comboBox代码.AutoCompleteCustomSource.Add(string.Format("{0} {1} {2}", 交易额度Row1.拼音缩写, 交易额度Row1.证券代码, 交易额度Row1.证券名称)); } } break; case 3: break; case 4: AASClient.AASServiceReference.JyDataSet.成交DataTable 成交DataTable1 = e.UserState as AASClient.AASServiceReference.JyDataSet.成交DataTable; Tool.RefreshDrcjDataTable(Program.jyDataSet.成交, 成交DataTable1, new string[] { "组合号", "委托编号", "成交编号" }); break; case 5: RefreshOrder(e); break; case 6: AASClient.AASServiceReference.DbDataSet.订单DataTable 订单DataTable1 = e.UserState as AASClient.AASServiceReference.DbDataSet.订单DataTable; Tool.RefreshDrcjDataTable(Program.serverDb.订单, 订单DataTable1, new string[] { "组合号", "证券代码" }); break; case 7: AASClient.AASServiceReference.DbDataSet.已平仓订单DataTable 已平仓订单DataTable1 = e.UserState as AASClient.AASServiceReference.DbDataSet.已平仓订单DataTable; Program.serverDb.已平仓订单.Clear(); Program.serverDb.已平仓订单.Merge(已平仓订单DataTable1); Refresh业绩(); break; default: break; } }
private void backgroundWorker报价_ProgressChanged(object sender, ProgressChangedEventArgs e) { switch (e.ProgressPercentage) { case 0: this.toolStripStatusLabel时间.Text = DateTime.Now.ToString("HH:mm:ss"); break; case 1: AASClient.AASServiceReference.DbDataSet.平台用户DataTable 平台用户DataTable1 = e.UserState as AASClient.AASServiceReference.DbDataSet.平台用户DataTable; Tool.RefreshDrcjDataTable(Program.serverDb.平台用户, 平台用户DataTable1, new string[] { "用户名" }); Program.Current平台用户 = Program.serverDb.平台用户.First(r => r.用户名 == Program.Current平台用户.用户名); break; case 2: AASClient.AASServiceReference.DbDataSet.额度分配DataTable TradeLimitDataTable = e.UserState as AASClient.AASServiceReference.DbDataSet.额度分配DataTable; Tool.RefreshDrcjDataTable(Program.serverDb.额度分配, TradeLimitDataTable, new string[] { "证券代码" }); foreach (HqForm HqForm1 in this.hqForm) { HqForm1.comboBox代码.AutoCompleteCustomSource.Clear(); foreach (AASClient.AASServiceReference.DbDataSet.额度分配Row 交易额度Row1 in Program.serverDb.额度分配) { HqForm1.comboBox代码.AutoCompleteCustomSource.Add(string.Format("{0}", 交易额度Row1.证券代码)); } } break; case 3: break; case 4: AASClient.AASServiceReference.JyDataSet.成交DataTable 成交DataTable1 = e.UserState as AASClient.AASServiceReference.JyDataSet.成交DataTable; Tool.RefreshDrcjDataTable(Program.jyDataSet.成交, 成交DataTable1, new string[] { "组合号", "委托编号", "成交编号" }); break; case 5: RefreshOrder(e); break; case 6: AASClient.AASServiceReference.DbDataSet.订单DataTable 订单DataTable1 = e.UserState as AASClient.AASServiceReference.DbDataSet.订单DataTable; foreach (AASClient.AASServiceReference.DbDataSet.订单Row 订单Row1 in 订单DataTable1) { if (Program.HqDataTable.ContainsKey(订单Row1.证券代码)) { DataTable DataTable1 = Program.HqDataTable[订单Row1.证券代码]; DataRow DataRow1 = DataTable1.Rows[0]; decimal XJ = decimal.Parse((DataRow1["现价"] as string)); decimal ZS = decimal.Parse((DataRow1["昨收"] as string)); 订单Row1.当前价位 = Math.Round((XJ == 0 ? ZS : XJ), 8, MidpointRounding.AwayFromZero); //订单Row1.刷新浮动盈亏(Program.Current平台用户.手续费率); 订单Row1.刷新浮动盈亏(); } } Tool.RefreshDrcjDataTable(Program.serverDb.订单, 订单DataTable1, new string[] { "组合号", "证券代码" }); break; case 7: AASClient.AASServiceReference.DbDataSet.已平仓订单DataTable 已平仓订单DataTable1 = e.UserState as AASClient.AASServiceReference.DbDataSet.已平仓订单DataTable; Program.serverDb.已平仓订单.Clear(); Program.serverDb.已平仓订单.Merge(已平仓订单DataTable1); AASClient.AASServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable2 = this.Generate业绩统计(); Tool.RefreshDrcjDataTable(Program.jyDataSet.业绩统计, 业绩统计DataTable2, new string[] { "证券代码" }); break; default: break; } }