Exemplo n.º 1
0
        /// <summary>
        /// 获取指定品种指定日期前历史主力合约。
        /// </summary>
        /// <param name="varieties"></param>
        /// <param name="settlementDate"></param>
        /// <returns></returns>
        private List <string> GetHistoryMainContract(USeProduct varieties, DateTime settlementDate)
        {
            string cmdText = string.Format(@"select m.main_contract from {0}.main_contract m
left join {0}.contracts c on m.main_contract = c.contract
where m.varieties = '{1}' and m.exchange = '{2}' and m.settlement_date < '{3:yyyy-MM-dd}' and c.is_trading = 1
order by settlement_date desc;",
                                           m_alpahDBName, varieties.ProductCode, varieties.Market.ToString(), settlementDate);

            DataTable table = new DataTable();

            using (MySqlConnection connection = new MySqlConnection(m_dbConnStr))
            {
                connection.Open();
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmdText, connection);
                adapter.Fill(table);
                adapter.Dispose();
            }

            List <string> histroyMainContractList = new List <string>();

            if (table != null && table.Rows.Count > 0)
            {
                foreach (DataRow row in table.Rows)
                {
                    histroyMainContractList.Add(row["main_contract"].ToString());
                }
            }
            return(histroyMainContractList);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 保存连续合约。
        /// </summary>
        /// <param name="varieties">品种。</param>
        /// <param name="settlementDate">结算日。</param>
        /// <param name="serialContractList">连续合约。</param>
        private void SaveSerialContract(USeProduct varieties, DateTime settlementDate, List <string> serialContractList)
        {
            using (MySqlConnection connection = new MySqlConnection(m_dbConnStr))
            {
                connection.Open();
                string       cmdText = GetSerialContractUpdateSql();
                MySqlCommand command = new MySqlCommand(cmdText, connection);
                command.Parameters.AddWithValue("@varieties", varieties.ProductCode);
                command.Parameters.AddWithValue("@exchange", varieties.Market.ToString());
                command.Parameters.AddWithValue("@settlement_date", settlementDate.Date);

                for (int i = 1; i <= 12; i++)
                {
                    string key   = string.Format("@serial_contract{0}", i);
                    string value = i <= serialContractList.Count ? serialContractList[i - 1] : "";
                    command.Parameters.AddWithValue(key, value);
                }

                int result = command.ExecuteNonQuery();
                if (result < 1)
                {
                    command.CommandText = GetSerialContractInsertSql();
                    result = command.ExecuteNonQuery();
                    Debug.Assert(result == 1);
                }
            }
        }
        /// <summary>
        /// 修改-下单参数
        /// </summary>
        /// <param name="argument"></param>
        public ArbitrageOrderCreateForm(ArbitrageArgument argument, USeProduct product)
        {
            InitializeComponent();

            m_product           = product;
            m_arbitrageArgument = argument;
        }
Exemplo n.º 4
0
        private void SetMarketPanelButton(Panel panel, USeProduct product)
        {
            foreach (Control subControl in panel.Controls)
            {
                if ((subControl is Button) == false)
                {
                    continue;
                }

                Button btn = subControl as Button;
                Debug.Assert(btn != null);
                if (btn.Tag == null)
                {
                    continue;
                }
                Debug.Assert(btn.Tag != null && (btn.Tag is USeProduct));

                if ((btn.Tag as USeProduct).ProductCode == product.ProductCode)
                {
                    btn.BackColor = System.Drawing.Color.LawnGreen;
                    btn.Font      = new System.Drawing.Font("Microsoft Sans Serif", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    btn.ForeColor = System.Drawing.Color.Purple;
                    btn.UseVisualStyleBackColor = false;
                }
                else
                {
                    btn.BackColor = SystemColors.Control;
                    btn.Font      = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    btn.ForeColor = System.Drawing.SystemColors.ControlText;
                    btn.UseVisualStyleBackColor = false;
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 获取指定品种指定日期成交量最大的合约。
        /// </summary>
        /// <param name="varities"></param>
        /// <param name="settlementDate"></param>
        /// <returns></returns>
        private string GetMaxVolumeInstrument2(USeProduct varities, DateTime settlementDate)
        {
            string cmdText = string.Format(@"select dk.contract,dk.date_time,dk.openinterest from {0}.day_kline dk
left join {0}.contracts  c on dk.contract = c.contract
where dk.date_time = '{1:yyyy-MM-dd}' and c.varieties = '{2}' and c.exchange = '{3}'
order by dk.openinterest desc,dk.contract asc
limit 1;",
                                           m_alpahDBName, settlementDate, varities.ProductCode, varities.Market.ToString());

            DataTable table = new DataTable();

            using (MySqlConnection connection = new MySqlConnection(m_dbConnStr))
            {
                connection.Open();
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmdText, connection);
                adapter.Fill(table);
                adapter.Dispose();
            }

            if (table != null && table.Rows.Count > 0)
            {
                Debug.Assert(table.Rows.Count == 1);
                return(table.Rows[0]["contract"].ToString());
            }
            else
            {
                return(string.Empty);
            }
        }
Exemplo n.º 6
0
 /// <summary>
 /// 寻找并选中
 /// </summary>
 /// <param name="product"></param>
 private void FindButtonProduct(USeProduct product)
 {
     GetMarketPanelButton(this.panelSFE, product);
     GetMarketPanelButton(this.panelDCE, product);
     GetMarketPanelButton(this.panelCFFE, product);
     GetMarketPanelButton(this.panelCZCE, product);
 }
Exemplo n.º 7
0
        /// <summary>
        /// 获取K线生成器。
        /// </summary>
        /// <param name="instrument"></param>
        /// <returns></returns>
        private List <KLineFactory> GetIndexKLineFactory(USeInstrument instrument)
        {
            Debug.Assert(instrument.Market != USeMarket.Unknown);
            string varieties = USeTraderProtocol.GetVarieties(instrument.InstrumentCode);


            List <KLineFactory> factoryList = null;

            if (m_indexkLineFactoryDic.TryGetValue(varieties, out factoryList) == false)
            {
                USeProduct product = m_productManager.GetPruduct(varieties);

                factoryList = new List <KLineFactory>();
                DayTradeRange tradeRange      = m_tradeRangeManager.CreateTradeRange(varieties);
                DateTime      tradeDay        = tradeRange.GetTradeDay(DateTime.Now);
                USeInstrument indexInstrument = USeTraderProtocol.GetVarietiesIndexCode(product);
                USeKLine      dayKLine        = GetDayKLine(tradeDay, indexInstrument);

                List <USeInstrument> instrumentList = m_instrumentManager.GetAllInstruments(varieties, product.Market);


                IndexDayKLineFactory dayFactory = new IndexDayKLineFactory(product, instrumentList, dayKLine, m_dayKLinePublishInterval, m_kLinePublisher, tradeRange, m_eventLogger, m_instrumentManager);
                factoryList.Add(dayFactory);
                IndexMinKLineFactory min1Factory = new IndexMinKLineFactory(product, instrumentList, USeCycleType.Min1, m_kLinePublisher, tradeRange, m_eventLogger, m_instrumentManager);
                factoryList.Add(min1Factory);

                m_indexkLineFactoryDic.Add(varieties, factoryList);
            }

            Debug.Assert(factoryList != null && factoryList.Count == 2);
            return(factoryList);
        }
Exemplo n.º 8
0
        public void ProductListButtonDoubleClickHandler(object sender, EventArgs e)
        {
            m_product         = this.selectProductControl1.SelectedProduct;
            this.DialogResult = DialogResult.Yes;

            this.Close();
        }
Exemplo n.º 9
0
        /// <summary>
        /// 初始化方法。
        /// </summary>
        public void Initialize()
        {
            string strSel = string.Format(@"select * from {0}.varieties
where exchange in ({1});",
                                          m_alphaDBName, USeTraderProtocol.GetInternalFutureMarketSqlString());
            DataTable table = MySQLDriver.GetTableFromDB(m_dbConnStr, strSel);

            List <USeProduct> productList = new List <USeProduct>();

            foreach (DataRow row in table.Rows)
            {
                string     exchange = row["exchange"].ToString();
                USeProduct product  = new USeProduct()
                {
                    ProductCode    = row["code"].ToString(),
                    Market         = (USeMarket)Enum.Parse(typeof(USeMarket), exchange),
                    ShortName      = row["short_name"].ToString(),
                    LongName       = row["long_name"].ToString(),
                    VolumeMultiple = Convert.ToDecimal(row["volume_multiple"]),
                    PriceTick      = Convert.ToDecimal(row["price_tick"])
                };
                productList.Add(product);
            }

            m_varietiesDic.Clear();
            foreach (USeProduct product in productList)
            {
                m_varietiesDic.Add(product.ProductCode, product);
            }
        }
Exemplo n.º 10
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            m_product         = this.selectProductControl1.SelectedProduct;
            this.DialogResult = DialogResult.Yes;

            this.Close();
        }
Exemplo n.º 11
0
        /// <summary>
        /// 获取所有品种信息。
        /// </summary>
        /// <returns></returns>
        private List <USeProduct> GetAllVarieties()
        {
            string cmdText = string.Format(@"select* from {0}.varieties where exchange in ({1});",
                                           m_alpahDBName, GetInternalExchanges());

            DataTable table = new DataTable();

            using (MySqlConnection connection = new MySqlConnection(m_dbConnStr))
            {
                connection.Open();
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmdText, connection);
                adapter.Fill(table);
                adapter.Dispose();
            }

            List <USeProduct> varieties = new List <USeProduct>();

            if (table != null)
            {
                foreach (DataRow row in table.Rows)
                {
                    USeProduct product = new USeProduct()
                    {
                        ProductCode = row["code"].ToString(),
                        Market      = (USeMarket)Enum.Parse(typeof(USeMarket), row["exchange"].ToString())
                    };

                    varieties.Add(product);
                }
            }

            return(varieties);
        }
Exemplo n.º 12
0
        private void InitializeUserControl()
        {
            this.orderBookListControl1.Initialize();
            this.tradeBookListControl1.Initialize();
            this.positionListControl1.Initialize();
            this.arbitrageOrderListControl1.Initialize();
            this.arbitrageLogViewControl1.Initialize();
            this.arbitrageRunStateControl1.Initialize();
            this.bottomStateControl1.Initialize();
            this.investorFundControl1.Initialize();
            this.alarmNoticeViewControl1.Initialize();

            this.bottomStateControl1.OnSelectedProduct += BottomStateControl1_OnSelectedProduct;

            //this.arbitrageQuoteListControl1.OnSelectCombineInstrumentChanged += QuoteListControl1_OnSelectInstrumentChanged;

            UserDefineSetting userSetting = USeManager.Instance.SystemConfigManager.GetUserDefineSetting();

            Debug.Assert(userSetting != null);

            this.arbitrageQuoteListControl1.Initialize();
            this.arbitrageQuoteListControl1.OnSelectCombineInstrumentChanged += ArbitrageQuoteListControl1_OnSelectCombineInstrumentChanged;

            USeProduct defaultProduct = new USeProduct()
            {
                ProductCode = userSetting.LastSelectProduct,
                ShortName   = userSetting.LastSelectProductName
            };

            this.bottomStateControl1.SetDefaultProduct(defaultProduct);
            SetDefaultProduct(defaultProduct);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 更换品种。
        /// </summary>
        /// <param name="product"></param>
        private void ChangegProduct(USeProduct product)
        {
            if (string.IsNullOrEmpty(product.ProductCode))
            {
                return;
            }
            try
            {
                m_instrumentDetailList.Clear();
                m_instrumentList.Clear();

                List <USeInstrumentDetail> instrumentDetailList = USeManager.Instance.OrderDriver.QueryInstrumentDetail(product.ProductCode);
                if (instrumentDetailList == null)
                {
                    return;
                }

                foreach (USeInstrumentDetail instrumentDetail in instrumentDetailList)
                {
                    m_instrumentDetailList.Add(instrumentDetail);

                    USeInstrument instrument = instrumentDetail.Instrument;

                    m_instrumentList.Add(instrument);
                }

                m_product = product;
            }
            catch (Exception ex)
            {
                Debug.Assert(false, ex.Message);
            }
        }
Exemplo n.º 14
0
 private void SetSelectVarieties(USeProduct product)
 {
     SetMarketPanelButton(this.panelSFE, product);
     SetMarketPanelButton(this.panelDCE, product);
     SetMarketPanelButton(this.panelCFFE, product);
     SetMarketPanelButton(this.panelCZCE, product);
 }
Exemplo n.º 15
0
        /// <summary>
        /// 新增-行情组合合约
        /// </summary>
        /// <param name="combineInstrument"></param>
        public ArbitrageOrderCreateForm(ArbitrageCombineInstrument combineInstrument, USeProduct product)
        {
            InitializeComponent();

            m_combineInstrument = combineInstrument;
            m_product           = product;
        }
Exemplo n.º 16
0
        /// <summary>
        /// 获取指定品种指定日期合约列表(按日期排序)
        /// </summary>
        /// <param name="varieties"></param>
        /// <param name="settlementDate"></param>
        /// <returns></returns>
        private List <string> GetTodaySerialInstrument(USeProduct varieties, DateTime settlementDate)
        {
            string cmdText = string.Format(@"select contract from {0}.contracts 
where varieties = '{1}' and exchange='{2}' and open_date <= '{3:yyyy-MM-dd}' and expire_date >= '{3:yyyy-MM-dd}'
order by contract;",
                                           m_alpahDBName, varieties.ProductCode, varieties.Market.ToString(), settlementDate);

            DataTable table = new DataTable();

            using (MySqlConnection connection = new MySqlConnection(m_dbConnStr))
            {
                connection.Open();
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmdText, connection);
                adapter.Fill(table);
                adapter.Dispose();
            }

            List <string> serialList = new List <string>();

            if (table != null && table.Rows.Count > 0)
            {
                foreach (DataRow row in table.Rows)
                {
                    serialList.Add(row["contract"].ToString());
                }
            }
            return(serialList);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 获取指定品种指定日期成交量最大的合约。[hanyu]2017//11/03修正为持仓量最大
        /// </summary>
        /// <param name="varieties"></param>
        /// <param name="settlementDate"></param>
        /// <returns></returns>
        private string GetMaxVolumeInstrument(USeProduct varieties, DateTime settlementDate)
        {
            string cmdText = string.Format(@"select dk.contract,dk.date_time,dk.openinterest from {0}.day_kline dk
where dk.date_time = '{1:yyyy-MM-dd}' and dk.contract like '{2}%' and dk.exchange = '{3}'
order by dk.openinterest desc,dk.contract asc;",
                                           m_alpahDBName, settlementDate, varieties.ProductCode, varieties.Market.ToString());

            DataTable table = new DataTable();

            using (MySqlConnection connection = new MySqlConnection(m_dbConnStr))
            {
                connection.Open();
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmdText, connection);
                adapter.Fill(table);
                adapter.Dispose();
            }

            if (table != null && table.Rows.Count > 0)
            {
                USeInstrument mainContractCode = USeTraderProtocol.GetMainContractCode(varieties.ProductCode, varieties.Market);
                USeInstrument indexCode        = USeTraderProtocol.GetVarietiesIndexCode(varieties.ProductCode, varieties.Market);

                int    maxOpeninterest = 0;
                string mainContract    = string.Empty;
                foreach (DataRow row in table.Rows)
                {
                    string contract           = row["contract"].ToString();
                    string constractVarieties = USeTraderProtocol.GetVarieties(contract);
                    if (constractVarieties == varieties.ProductCode)
                    {
                        if (contract == mainContractCode.InstrumentCode || contract == indexCode.InstrumentCode)
                        {
                            //过滤掉指数编码和主力合约编码
                            string text = string.Format("{0}@{1:yyyy-MM-dd}计算主力合约被过滤的指数编码和主力合约,{2}", varieties.ProductCode, settlementDate, contract);
                            Debug.WriteLine(text);
                            m_logger.WriteInformation(text);

                            continue;
                        }
                        else
                        {
                            if (Convert.ToInt32(row["openinterest"]) > maxOpeninterest)
                            {
                                maxOpeninterest = Convert.ToInt32(row["openinterest"]);
                                mainContract    = row["contract"].ToString();
                            }
                        }
                    }
                }

                return(mainContract);
            }
            else
            {
                return(string.Empty);
            }
        }
Exemplo n.º 18
0
        private void ArbitrageQuoteListControl1_OnSelectCombineInstrumentChanged(ArbitrageCombineInstrument combineInstrument)
        {
            USeProduct product = USeManager.Instance.OrderDriver.QueryProduct(combineInstrument.ProductID);

            Debug.Assert(product != null);

            ArbitrageOrderCreateForm form = new ArbitrageOrderCreateForm(combineInstrument, product);

            form.Show(this);
        }
Exemplo n.º 19
0
        private void ProductButton_DoubleClick(object sender, EventArgs e)
        {
            USeProduct product = (sender as Button).Tag as USeProduct;

            m_selectedProduct = product;
            SetSelectVarieties(product);
            if (DoubleClickEvent != null)
            {
                DoubleClickEvent(sender, e);
            }
        }
Exemplo n.º 20
0
        /// <summary>
        /// 获取产品信息。
        /// </summary>
        /// <param name="productId">品种代码。</param>
        /// <returns></returns>
        public USeProduct GetPruduct(string productId)
        {
            USeProduct product = null;

            if (m_varietiesDic.TryGetValue(productId, out product) == false)
            {
                Debug.Assert(false);
            }

            return(product);
        }
Exemplo n.º 21
0
        /// <summary>
        /// 产品Combox更改
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ComBoxProduct_SelectedIndexChanged(object sender, EventArgs e)
        {
            USeProduct product = ((ProductViewAlisa)this.comboBox_Product.SelectedItem).Product;

            //更改产品
            ChangegProduct(product);
            //填充两个腿列表
            FillInstrumentListBox();
            //填充套利组合约列表
            FillCombineInstrumentListBox();
        }
        private void SetArbitrageArgument()
        {
            ArbitrageArgument argument = m_autoTrader.GetArgument();

            Debug.Assert(argument != null);

            USeProduct product = USeManager.Instance.OrderDriver.QueryProduct(argument.ProductID);

            Debug.Assert(product != null);

            ArbitrageOrderCreateForm form = new ArbitrageOrderCreateForm(argument, product);

            form.ShowDialog();
        }
Exemplo n.º 23
0
        public void SetDefultProduct()
        {
            ProductViewAlisa defultProduct = new ProductViewAlisa();

            defultProduct.Product = m_product;
            //[hanyu]默认选中defult选项
            foreach (object o in this.comboBox_Product.Items)
            {
                USeProduct product = o as USeProduct;
                if (product == m_product)
                {
                    this.comboBox_Product.SelectedItem = defultProduct.Product;
                }
            }
        }
Exemplo n.º 24
0
        /// <summary>
        /// 触发产品变更事件。
        /// </summary>
        /// <param name="product">产品。</param>
        private void SafeFireSelectedProductChanged(USeProduct product)
        {
            SelectedProductChangeEventHandle handle = this.OnSelectedProduct;

            if (handle != null)
            {
                try
                {
                    handle(product);
                }
                catch (Exception ex)
                {
                    Debug.Assert(false, ex.Message);
                }
            }
        }
Exemplo n.º 25
0
        public static LogFileInfo ParseLogFile(FileInfo fileInfo, USeProductManager productManager)
        {
            string[] items = fileInfo.Name.Split(new char[] { '-', '.' });
            if (items.Length != 3 && items[2].ToLower() != "csv")
            {
                throw new Exception("Undistinguish fileName:" + fileInfo.Name);
            }

            USeCycleType cycle          = USeCycleType.Unknown;
            string       cycleValue     = items[0].ToLower();
            string       instrumentCode = items[1];

            if (cycleValue == "1min")
            {
                cycle = USeCycleType.Min1;
            }
            else if (cycleValue == "5min")
            {
                cycle = USeCycleType.Min5;
            }
            else if (cycleValue == "1day")
            {
                cycle = USeCycleType.Day;
            }
            else
            {
                throw new Exception("Undistinguish cycel:" + cycleValue);
            }

            string     productCode = USeTraderProtocol.GetVarieties(instrumentCode);
            USeProduct product     = productManager.GetPruduct(productCode);

            if (product == null)
            {
                throw new Exception("Undistinguish cycel:" + cycleValue);
            }

            LogFileInfo logInfo = new LogFileInfo();

            logInfo.InstrumentCode = GetOfficeInstrumentCode(instrumentCode, product.Market);
            logInfo.Market         = product.Market;
            logInfo.Cycle          = cycle;
            logInfo.FileInfo       = fileInfo;

            return(logInfo);
        }
Exemplo n.º 26
0
        private void ProductButton_Click(object sender, EventArgs e)
        {
            TimeSpan span = DateTime.Now - m_clickTime;

            if (span.TotalMilliseconds < SystemInformation.DoubleClickTime)
            {
                ProductButton_DoubleClick(sender, e);
                return;
            }

            m_clickTime = DateTime.Now;

            USeProduct product = (sender as Button).Tag as USeProduct;

            m_selectedProduct = product;
            SetSelectVarieties(product);
        }
Exemplo n.º 27
0
        private void BottomStateControl1_OnSelectedProduct(USeProduct product)
        {
            SetDefaultProduct(product);
            m_product = product;
            UserDefineSetting userSetting = USeManager.Instance.SystemConfigManager.GetUserDefineSetting();

            userSetting.LastSelectProduct     = product.ProductCode;
            userSetting.LastSelectProductName = product.ShortName;

            try
            {
                USeManager.Instance.SystemConfigManager.SaveUserDefineSetting(userSetting);
            }
            catch (Exception ex)
            {
                Debug.Assert(false, ex.Message);
            }
        }
Exemplo n.º 28
0
        /// <summary>
        /// 获取指定品种指定日期合约列表(按日期排序)
        /// </summary>
        /// <param name="varieties"></param>
        /// <param name="settlementDate"></param>
        /// <returns></returns>
        private List <string> GetHistorySerialInstrument(USeProduct varieties, DateTime settlementDate)
        {
            string cmdText = string.Format(@"select * from {0}.day_kline 
where date_time = '{1:yyyy-MM-dd}' and exchange= '{2}' and contract like '{3}%' order by contract;",
                                           m_alpahDBName, settlementDate, varieties.Market.ToString(), varieties.ProductCode);

            DataTable table = new DataTable();

            using (MySqlConnection connection = new MySqlConnection(m_dbConnStr))
            {
                connection.Open();
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmdText, connection);
                adapter.Fill(table);
                adapter.Dispose();
            }

            List <string> serialList = new List <string>();

            if (table != null && table.Rows.Count > 0)
            {
                string mainContractCode = USeTraderProtocol.GetMainContractCode(varieties.ProductCode, varieties.Market).InstrumentCode;
                string indexCode        = USeTraderProtocol.GetVarietiesIndexCode(varieties.ProductCode, varieties.Market).InstrumentCode;

                foreach (DataRow row in table.Rows)
                {
                    string contract           = row["contract"].ToString();
                    string constractVarieties = USeTraderProtocol.GetVarieties(contract);

                    if (constractVarieties == varieties.ProductCode) // 同品种
                    {
                        if (contract == mainContractCode || contract == indexCode)
                        {
                            //过滤掉指数编码和主力合约编码
                            continue;
                        }
                        else
                        {
                            serialList.Add(contract);
                        }
                    }
                }
            }
            return(serialList);
        }
Exemplo n.º 29
0
        private void InitializeVarietiesPanel(Panel panel, List <USeProduct> products, USeMarket market)
        {
            panel.Controls.Clear();
            List <USeProduct> productList = (from i in products
                                             where i.Market == market
                                             select i).ToList();

            if (productList == null || productList.Count <= 0)
            {
                return;
            }

            int x       = 19;
            int y       = 8;
            int xOffset = 103;
            int yOffset = 40;

            for (int i = 0; i < productList.Count; i++)
            {
                USeProduct product = productList[i];

                int xPos = x + ((i % VARIETIES_ITEM_COUNT) * xOffset);
                int yPos = y + ((i / VARIETIES_ITEM_COUNT) * yOffset);

                Button button = new System.Windows.Forms.Button();
                button.Font      = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                button.ForeColor = System.Drawing.SystemColors.ControlText;
                button.Location  = new System.Drawing.Point(xPos, yPos);
                button.Name      = "button2";
                button.Size      = new System.Drawing.Size(95, 35);
                button.TabIndex  = 3;
                button.Text      = product.ShortName;
                button.Tag       = product;
                button.UseVisualStyleBackColor = true;
                button.Click += ProductButton_Click;
                panel.Controls.Add(button);
            }
        }
Exemplo n.º 30
0
        private List <USeInstrumentDetail> m_insDetailList = null;        //合约的信息列表

        #endregion

        #region construction
        /// <summary>
        /// 构造方法。
        /// </summary>
        /// <param name="product">品种。</param>
        /// <param name="publisher">发布者。</param>
        /// <param name="tradeRange">交易时段。</param>
        /// <param name="publishInterval">发布间隔。</param>
        public IndexDayKLineFactory(USeProduct product, List <USeInstrument> instrumentList, USeKLine initKLine, TimeSpan publishInterval,
                                    IKLinePublisher publisher, DayTradeRange tradeRange, IAppLogger eventLogger, USeTradingInstrumentManager instrumentManager)
            : base(USeTraderProtocol.GetVarietiesIndexCode(product),
                   publisher, tradeRange, eventLogger)
        {
            Debug.Assert(product.PriceTick > 0);
            Debug.Assert(instrumentList != null && instrumentList.Count > 0);

            m_publishInterval = publishInterval;
            m_nextPublishTime = DateTime.Now.AddTicks(publishInterval.Ticks);
            m_product         = product;
            m_componentDic    = new Dictionary <string, USeMarketData>();
            foreach (USeInstrument instrument in instrumentList)
            {
                m_componentDic.Add(instrument.InstrumentCode, null);
            }

            if (initKLine != null)
            {
                Debug.Assert(initKLine.InstrumentCode == USeTraderProtocol.GetVarietiesIndexCode(product).InstrumentCode);
                m_kLine = initKLine;
            }
            else
            {
                m_kLine = CreateDefaultKLine();
            }

            //获取该数据库下的合约详细信息
            try
            {
                Debug.Assert(instrumentManager != null);
                m_insDetailList = instrumentManager.GetAllInstrumentDetails();
            }
            catch (Exception ex)
            {
                throw new Exception("IndexDayKLineFactory 获取全部合约详细信息异常:" + ex.Message);
            }
        }