示例#1
0
 public static string PriceFormat(string Zqdm)
 {
     if (L2Api.Get精度(Zqdm) == 2)
     {
         return("#0.00");
     }
     else
     {
         return("#0.000");
     }
 }
示例#2
0
 private void button1_Click(object sender, EventArgs e)
 {
     AccountDataSet.价格提示Row 价格提示Row1 = Program.accountDataSet.价格提示.New价格提示Row();
     价格提示Row1.证券代码 = this.comboBox证券代码.Text;
     价格提示Row1.证券名称 = this.comboBox证券代码.Text;
     价格提示Row1.提示类型 = this.comboBox提示类型.SelectedIndex;
     价格提示Row1.提示价格 = Math.Round(this.numericUpDown提示价格.Value, L2Api.Get精度(this.comboBox证券代码.Text), MidpointRounding.AwayFromZero);
     价格提示Row1.提示等级 = this.comboBox提示等级.SelectedIndex;
     价格提示Row1.启用   = this.checkBox启用.Checked;
     Program.accountDataSet.价格提示.Add价格提示Row(价格提示Row1);
 }
示例#3
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            foreach (AASClient.AASServiceReference.DbDataSet.订单Row 订单Row1 in Program.serverDb.订单)
            {
                decimal XJ, ZS;
                if (TDFData.DataSourceConfig.IsUseTDFData && TDFData.DataCache.GetInstance().MarketNewDict.ContainsKey(订单Row1.证券代码))
                {
                    var marketData = TDFData.DataCache.GetInstance().MarketNewDict[订单Row1.证券代码];
                    XJ = (decimal)marketData.Match / 10000;
                    ZS = (decimal)marketData.PreClose / 10000;

                    //订单Row1.当前价位 = Math.Round((XJ == 0 ? ZS : XJ), L2Api.Get精度(订单Row1.证券代码), MidpointRounding.AwayFromZero);
                    订单Row1.当前价位 = Math.Round((XJ == 0 ? ZS : XJ), 2, MidpointRounding.AwayFromZero);
                    订单Row1.刷新浮动盈亏();
                    //Program.logger.LogRunning("根据TDF行情数据更新,证券代码{0}, 现价{1}, 昨收{2}, 计算后当前价位{3}", 订单Row1.证券代码, XJ, ZS, 订单Row1.当前价位);
                }
                else if (Program.HqDataTable.ContainsKey(订单Row1.证券代码))
                {
                    DataTable DataTable1 = Program.HqDataTable[订单Row1.证券代码];
                    DataRow   DataRow1   = DataTable1.Rows[0];
                    XJ          = decimal.Parse((DataRow1["现价"] as string));
                    ZS          = decimal.Parse((DataRow1["昨收"] as string));
                    订单Row1.当前价位 = Math.Round((XJ == 0 ? ZS : XJ), L2Api.Get精度(订单Row1.证券代码), MidpointRounding.AwayFromZero);
                    订单Row1.刷新浮动盈亏();
                    //Program.logger.LogRunning("根据Tdx行情数据更新,证券代码{0}, 现价{1}, 昨收{2}, 计算后当前价位{3}", 订单Row1.证券代码, XJ, ZS, 订单Row1.当前价位);
                }
                else
                {
                    Program.logger.LogRunning("证券代码{0}, 无行情数据,将不更新当前价位及浮动盈亏数据", 订单Row1.证券代码);
                }
            }



            this.label市值合计.Text = Program.serverDb.订单.Get市值合计().ToString();
            this.label浮动盈亏.Text = Program.serverDb.订单.Get浮动盈亏().ToString();

            decimal 当日委托交易费用 = 0;

            foreach (AASClient.AASServiceReference.JyDataSet.委托Row 委托Row1 in Program.jyDataSet.委托.Where(r => r.成交数量 > 0))
            {
                当日委托交易费用 += 委托Row1.Get交易费用();
            }

            //decimal 当日委托交易费用 = Program.jyDataSet.委托.Get交易费用();
            decimal 毛利 = Program.serverDb.已平仓订单.Get毛利();

            this.label实现盈亏.Text = (毛利 - 当日委托交易费用).ToString();
        }
示例#4
0
        private void button1_Click(object sender, EventArgs e)
        {
            decimal 委托价格 = Math.Round(this.numericUpDown价格.Value, L2Api.Get精度(this.textBox证券代码.Text), MidpointRounding.AwayFromZero);
            decimal 委托数量 = Math.Round(this.numericUpDown数量.Value, 0, MidpointRounding.AwayFromZero);


            string Ret = Program.AASServiceClient.SendOrder(this.textBox交易员.Text, this.textBox证券代码.Text, this.comboBox交易方向.SelectedIndex, 委托数量, 委托价格);

            string[] Data = Ret.Split('|');
            if (Data[1] != string.Empty)
            {
                MessageBox.Show(Data[1], "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }



            MessageBox.Show("下单成功", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }
示例#5
0
        private static void Refresh订单(AASServiceReference.DbDataSet.订单Row 订单Row1)
        {
            decimal XJ, ZS;

            if (regexStockChina.IsMatch(订单Row1.证券代码))
            {
                if (TDFData.DataSourceConfig.IsUseTDFData && TDFData.DataCache.GetInstance().MarketNewDict.ContainsKey(订单Row1.证券代码))
                {
                    var marketData = TDFData.DataCache.GetInstance().MarketNewDict[订单Row1.证券代码];
                    XJ = (decimal)marketData.Match / 10000;
                    ZS = (decimal)marketData.PreClose / 10000;

                    订单Row1.当前价位 = Math.Round((XJ == 0 ? ZS : XJ), 2, MidpointRounding.AwayFromZero);
                    订单Row1.刷新浮动盈亏();
                }
                else if (Program.HqDataTable.ContainsKey(订单Row1.证券代码))
                {
                    DataTable DataTable1 = Program.HqDataTable[订单Row1.证券代码];
                    DataRow   DataRow1   = DataTable1.Rows[0];
                    XJ          = decimal.Parse((DataRow1["现价"] as string));
                    ZS          = decimal.Parse((DataRow1["昨收"] as string));
                    订单Row1.当前价位 = Math.Round((XJ == 0 ? ZS : XJ), L2Api.Get精度(订单Row1.证券代码), MidpointRounding.AwayFromZero);
                    订单Row1.刷新浮动盈亏();
                }
            }
            else if (regexStockECoin.IsMatch(订单Row1.证券代码))
            {
                if (MarketAdapter.BinanceAdapter.Instance.PriceDict.ContainsKey(订单Row1.证券代码))
                {
                    XJ          = MarketAdapter.BinanceAdapter.Instance.PriceDict[订单Row1.证券代码];
                    订单Row1.当前价位 = XJ;
                    订单Row1.刷新浮动盈亏();
                }
                else
                {
                    MarketAdapter.BinanceAdapter.Instance.Subscribe(订单Row1.证券代码);
                }
            }
        }
示例#6
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (this.comboBox证券代码.Text.Length == 6 &&
                char.IsNumber(this.comboBox证券代码.Text[0]) &&
                char.IsNumber(this.comboBox证券代码.Text[1]) &&
                char.IsNumber(this.comboBox证券代码.Text[2]) &&
                char.IsNumber(this.comboBox证券代码.Text[3]) &&
                char.IsNumber(this.comboBox证券代码.Text[4]) &&
                char.IsNumber(this.comboBox证券代码.Text[5]))
            {
                string 证券名称 = L2Api.Get名称(this.comboBox证券代码.Text);
                if (TDFData.DataSourceConfig.IsUseTDFData && TDFData.DataCache.GetInstance().MarketNewDict.ContainsKey(this.comboBox证券代码.Text))
                {
                    证券名称 = Manager.StockCodeManager.GetNameByCode(this.comboBox证券代码.Text);
                }

                if (证券名称 == string.Empty)
                {
                    MessageBox.Show("未取到证券名称");
                    return;
                }

                AASClient.AccountDataSet.价格提示Row 价格提示Row1 = Program.accountDataSet.价格提示.New价格提示Row();
                价格提示Row1.证券代码 = this.comboBox证券代码.Text;
                价格提示Row1.证券名称 = 证券名称;
                价格提示Row1.提示类型 = this.comboBox提示类型.SelectedIndex;
                价格提示Row1.提示价格 = Math.Round(this.numericUpDown提示价格.Value, L2Api.Get精度(this.comboBox证券代码.Text), MidpointRounding.AwayFromZero);
                价格提示Row1.提示等级 = this.comboBox提示等级.SelectedIndex;
                价格提示Row1.启用   = this.checkBox启用.Checked;
                Program.accountDataSet.价格提示.Add价格提示Row(价格提示Row1);
            }
            else
            {
                MessageBox.Show("证券代码错误");
            }
        }
示例#7
0
        private void backgroundWorker报价_DoWork(object sender, DoWorkEventArgs e)
        {
            while (!this.backgroundWorker报价.CancellationPending)
            {
                this.backgroundWorker报价.ReportProgress(0);


                try
                {
                    if (DateTime.Now >= this.LastFetchDay.AddDays(1).AddHours(1))
                    {
                        Program.AASServiceClient.FectchAllTable(Program.Current平台用户.用户名);
                        this.LastFetchDay = DateTime.Today;
                    }



                    成交DataTableChanged 成交DataTableChanged1;
                    if (Program.成交表通知.TryDequeue(out 成交DataTableChanged1))
                    {
                        AASClient.AASServiceReference.JyDataSet.成交DataTable 成交DataTable1 = 成交DataTableChanged1.TableChanged as AASClient.AASServiceReference.JyDataSet.成交DataTable;
                        this.backgroundWorker报价.ReportProgress(4, 成交DataTable1);
                    }


                    委托DataTableChanged 委托DataTableChanged1;
                    if (Program.委托表通知.TryDequeue(out 委托DataTableChanged1))
                    {
                        AASClient.AASServiceReference.JyDataSet.委托DataTable 委托DataTable1 = 委托DataTableChanged1.TableChanged as AASClient.AASServiceReference.JyDataSet.委托DataTable;
                        this.backgroundWorker报价.ReportProgress(5, 委托DataTable1);
                    }

                    平台用户DataTableChanged 平台用户DataTableChanged1;
                    if (Program.平台用户表通知.TryDequeue(out 平台用户DataTableChanged1))
                    {
                        AASClient.AASServiceReference.DbDataSet.平台用户DataTable 平台用户DataTable1 = 平台用户DataTableChanged1.TableChanged as AASClient.AASServiceReference.DbDataSet.平台用户DataTable;
                        this.backgroundWorker报价.ReportProgress(1, 平台用户DataTable1);
                    }

                    额度分配DataTableChanged 额度分配DataTableChanged1;
                    if (Program.额度分配表通知.TryDequeue(out 额度分配DataTableChanged1))
                    {
                        AASClient.AASServiceReference.DbDataSet.额度分配DataTable 额度分配DataTable1 = 额度分配DataTableChanged1.TableChanged as AASClient.AASServiceReference.DbDataSet.额度分配DataTable;
                        this.backgroundWorker报价.ReportProgress(2, 额度分配DataTable1);
                    }

                    订单DataTableChanged 订单DataTableChanged1;
                    if (Program.订单表通知.TryDequeue(out 订单DataTableChanged1))
                    {
                        AASClient.AASServiceReference.DbDataSet.订单DataTable 订单DataTable1 = 订单DataTableChanged1.TableChanged 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), L2Api.Get精度(订单Row1.证券代码), MidpointRounding.AwayFromZero);


                                //订单Row1.刷新浮动盈亏(Program.Current平台用户.手续费率);
                                订单Row1.刷新浮动盈亏();
                            }
                        }

                        this.backgroundWorker报价.ReportProgress(6, 订单DataTable1);
                    }

                    已平仓订单DataTableChanged 已平仓订单DataTableChanged1;
                    if (Program.已平仓订单表通知.TryDequeue(out 已平仓订单DataTableChanged1))
                    {
                        AASClient.AASServiceReference.DbDataSet.已平仓订单DataTable 已平仓订单DataTable1 = 已平仓订单DataTableChanged1.TableChanged as AASClient.AASServiceReference.DbDataSet.已平仓订单DataTable;
                        this.backgroundWorker报价.ReportProgress(7, 已平仓订单DataTable1);
                    }



                    Notify Notify1;
                    if (Program.交易通知.TryDequeue(out Notify1))
                    {
                        Program.logger.LogJy(Notify1.操作员, Notify1.证券代码, Notify1.证券名称, Notify1.委托编号, Notify1.买卖方向, Notify1.委托数量, Notify1.委托价格, Notify1.信息);
                    }



                    Thread.Sleep(100);
                }
                catch (Exception ex)
                {
                    Program.logger.LogRunning("报价线程异常:{0} {1}", ex.Message, ex.StackTrace);

                    Thread.Sleep(1000);
                }
            }
        }