Exemple #1
0
 private void Refresh业绩()
 {
     Task.Run(() => {
         AASClient.AASServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable1 = this.Generate业绩统计();
         Tool.RefreshDrcjDataTable(Program.jyDataSet.业绩统计, 业绩统计DataTable1, new string[] { "证券代码" });
     });
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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[] { "证券代码" });
        }
Exemple #4
0
 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;
         //}
     }
 }
Exemple #5
0
        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.委托编号] = "---";
                    }
                }
            }
        }
Exemple #6
0
        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;
            }
        }
Exemple #7
0
        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;
            }
        }