Пример #1
0
 private void Refresh业绩()
 {
     Task.Run(() => {
         AASClient.AASServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable1 = this.Generate业绩统计();
         Tool.RefreshDrcjDataTable(Program.jyDataSet.业绩统计, 业绩统计DataTable1, new string[] { "证券代码" });
     });
 }
Пример #2
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[] { "证券代码" });
        }
Пример #3
0
        public AASClient.AASServiceReference.JyDataSet.业绩统计DataTable Generate业绩统计()
        {
            AASClient.AASServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable1 = new AASClient.AASServiceReference.JyDataSet.业绩统计DataTable();

            EnumerableRowCollection wtTraded = Program.jyDataSet.委托.Where(r => r.成交数量 > 0);

            foreach (JyDataSet.委托Row 委托Row1 in wtTraded)
            {
                decimal 交易费用 = 委托Row1.Get交易费用();

                if (!业绩统计DataTable1.Any(r => r.证券代码 == 委托Row1.证券代码))
                {
                    #region 生成业绩统计Row
                    AASClient.AASServiceReference.JyDataSet.业绩统计Row 业绩统计RowNew = 业绩统计DataTable1.New业绩统计Row();
                    业绩统计RowNew.交易员  = 委托Row1.交易员;
                    业绩统计RowNew.组合号  = 委托Row1.组合号;
                    业绩统计RowNew.证券代码 = 委托Row1.证券代码;
                    业绩统计RowNew.证券名称 = 委托Row1.证券名称;



                    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.净利润 = 业绩统计RowNew.毛利 - 业绩统计RowNew.交易费用;
                    业绩统计DataTable1.Add业绩统计Row(业绩统计RowNew);

                    #endregion
                }
                else
                {
                    #region 修改业绩统计Row
                    AASClient.AASServiceReference.JyDataSet.业绩统计Row 业绩统计Row1 = 业绩统计DataTable1.First(r => 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.净利润   = 业绩统计Row1.毛利 - 业绩统计Row1.交易费用;
                    #endregion
                }
            }



            foreach (AASClient.AASServiceReference.JyDataSet.业绩统计Row 业绩统计Row1 in 业绩统计DataTable1)
            {
                if (Program.serverDb.已平仓订单.Any(r => r.证券代码 == 业绩统计Row1.证券代码))
                {
                    业绩统计Row1.毛利  = Program.serverDb.已平仓订单.Where(r => r.证券代码 == 业绩统计Row1.证券代码).Sum(r => r.毛利);
                    业绩统计Row1.净利润 = 业绩统计Row1.毛利 - 业绩统计Row1.交易费用;
                }
            }


            return(业绩统计DataTable1);
        }
Пример #4
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;
            }
        }
Пример #5
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);


                AASClient.AASServiceReference.JyDataSet.业绩统计DataTable 业绩统计DataTable2 = this.Generate业绩统计();
                Tool.RefreshDrcjDataTable(Program.jyDataSet.业绩统计, 业绩统计DataTable2, new string[] { "证券代码" });
                break;

            default:
                break;
            }
        }