示例#1
0
 /// <summary>
 /// 注销按钮点击
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Button_Loginout_Click(object sender, EventArgs e)
 {
     ThostFtdcUserLogoutField pUserLogout = new ThostFtdcUserLogoutField();
     pUserLogout.BrokerID = sBrokerID;
     pUserLogout.UserID = sUserID;
     if (this.TSS_MDLoginState.Text == "已连接")
     {
         CtpMDApi.ReqUserLogout(pUserLogout, nRequestID++);
     }
     if (this.TSS_TDLoginState.Text == "已连接")
     {
         CtpMDApi.ReqUserLogout(pUserLogout, nRequestID++);
     }
     CtpMDApi.Release();
     CtpMDApi = null;
     CtpTDApi.Release();
     CtpTDApi = null;
     this.TSS_MDConnState.Text = "已断开";
     this.TSS_TDConnState.Text = "已断开";
     this.TSS_MDLoginState.Text = "已断开";
     this.TSS_TDLoginState.Text = "已断开";
     Button_Loginout.Enabled = false;
     MemDB.CloseDB();
     MemDB = null;
 }
示例#2
0
        /// <summary>
        /// 主窗体创建的时候相应动作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_Load(object sender, EventArgs e)
        {
            #region API初始化
            CtpMDApi = new CTPMDAdapter();
            CtpTDApi = new CTPTDAdapter();
            sCtpMdApi = new CTPMDAPI(this);
            sCtpTdApi = new CTPTDAPI(this);
            #endregion

            #region 登录数据库初始化
            this.InitConfig();
            #endregion

            #region 消息队列初始化
            Thread td_SendData = new Thread(SendData);
            td_SendData.IsBackground = true;
            td_SendData.Start();
            #endregion 消息队列初始化

            #region SQLite 入库线程启动
            Queue_SQLite.bUse = true;
            Queue_SQLite.t = new Thread(sqlitedb);
            Queue_SQLite.t.IsBackground = true;
            Queue_SQLite.t.Start(this);

            #endregion SQLite 入库线程启动

            #region GridView深度行情
            string[] columnNames = 
            { "品种名称", "交易日", "自然日", "时间", "毫秒", "最新价", "上次结算价", "昨收盘",
              "昨持仓", "开盘价", "最高价", "最低价", "数量", "成交金额", "持仓量", "收盘价", "结算价",
              "涨停板价", "跌停板价", "昨虚实度", "虚实度",
              "叫卖价", "叫卖量", "叫买价", "叫买量",
              "叫卖价2", "叫卖量2", "叫买价2", "叫买量2",
              "叫卖价3", "叫卖量3", "叫买价3", "叫买量3",
              "叫卖价4", "叫卖量4", "叫买价4", "叫买量4",
              "叫卖价5", "叫卖量5", "叫买价5", "叫买量5",
              "当日均价"};
            foreach (string n in columnNames)
            {
                DT_DeepInstrumentRSP.Columns.Add(n, typeof(String));
            }
            //建立主键
            DataColumn[] cols = new DataColumn[] { DT_DeepInstrumentRSP.Columns["品种名称"] };
            this.DT_DeepInstrumentRSP.PrimaryKey = cols;
            this.GridView_DeepInstrument.DataSource = this.DT_DeepInstrumentRSP;
            this.GridView_DeepInstrument.Columns["昨虚实度"].Visible = false;
            this.GridView_DeepInstrument.Columns["交易日"].Visible = false;
            this.GridView_DeepInstrument.Columns["最高价"].Visible = false;
            this.GridView_DeepInstrument.Columns["最低价"].Visible = false;
            this.GridView_DeepInstrument.Columns["开盘价"].Visible = false;
            this.GridView_DeepInstrument.Columns["虚实度"].Visible = false;
            this.GridView_DeepInstrument.Columns["结算价"].Visible = false;
            this.GridView_DeepInstrument.Columns["自然日"].Visible = false;
            this.GridView_DeepInstrument.Columns["上次结算价"].Visible = false;
            this.GridView_DeepInstrument.Columns["昨收盘"].Visible = false;
            this.GridView_DeepInstrument.Columns["昨持仓"].Visible = false;
            this.GridView_DeepInstrument.Columns["收盘价"].Visible = false;
            this.GridView_DeepInstrument.Columns["涨停板价"].Visible = false;
            this.GridView_DeepInstrument.Columns["跌停板价"].Visible = false;
            this.GridView_DeepInstrument.Columns["当日均价"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖价2"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖价3"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖价4"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖价5"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖量2"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖量3"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖量4"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫卖量5"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买价2"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买价3"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买价4"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买价5"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买量2"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买量3"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买量4"].Visible = false;
            this.GridView_DeepInstrument.Columns["叫买量5"].Visible = false;
            #endregion

            #region GridView可供订阅的品种
            string[] columnNames1 = { "品种名称", "合约名称", "中文名", "交易所ID" };
            foreach (string n in columnNames1)
            {
                DT_Instrument.Columns.Add(n, typeof(String));
            }
            //建立主键
            this.DT_Instrument.PrimaryKey = new DataColumn[] { DT_Instrument.Columns["品种名称"] };
            this.GridView_RegistInstrument_Data.DataSource = this.DT_Instrument;
            this.GridView_RegistInstrument_Data.Columns["合约名称"].Visible = false;
            this.GridView_RegistInstrument_Data.Columns["交易所ID"].Visible = false;
            #endregion

            #region Gridview报单通知
            string[] columnNames2 = { "报单引用", "会话标识", "前置机标识", "报单编号", "交易所", "品种名称", "买卖", "开平", "投机标志", "价格", "报单量", "今成交", "剩余量", "报单日期", "报单时间", "报单状态", "状态信息", "备注" };
            foreach (string n in columnNames2)
            {
                this.DT_RtnOrder.Columns.Add(n, typeof(String));
            }
            //建立主键
            this.DT_RtnOrder.PrimaryKey = new DataColumn[] { DT_RtnOrder.Columns["报单引用"], DT_RtnOrder.Columns["会话标识"], DT_RtnOrder.Columns["前置机标识"] };
            this.GridView_RtnOrder.DataSource = DT_RtnOrder;
            this.GridView_RtnOrder.Columns["会话标识"].Visible = false;
            this.GridView_RtnOrder.Columns["报单编号"].Visible = false;
            this.GridView_RtnOrder.Columns["报单引用"].Visible = false;
            this.GridView_RtnOrder.Columns["前置机标识"].Visible = false;
            this.GridView_RtnOrder.Columns["报单状态"].Visible = false;
            this.GridView_RtnOrder.Columns["交易所"].Visible = false;
            #endregion

            #region GridView持仓查询通知
            string[] columnNames3 = { "合约代码", "开仓日期", "交易日", "持仓类型", "买卖", "数量", "开仓价", "投机标志", "成交编号", "结算编号", "成交类型", "昨结算价", "结算价", "平仓量", "平仓金额" };
            foreach (string n in columnNames3)
            {
                this.DT_InvestorPositionDetail.Columns.Add(n, typeof(String));
            }
            //建立主键
            //this.sDT_InvestorPositionDetail.PrimaryKey = new DataColumn[] { sDT_InvestorPositionDetail.Columns["合约代码"] };

            this.GridView_InvestorPositionDetail.DataSource = DT_InvestorPositionDetail;
            this.GridView_InvestorPositionDetail.Columns["结算编号"].Visible = false;
            this.GridView_InvestorPositionDetail.Columns["开仓日期"].Visible = false;
            this.GridView_InvestorPositionDetail.Columns["交易日"].Visible = false;
            this.GridView_InvestorPositionDetail.Columns["平仓量"].Visible = false;
            this.GridView_InvestorPositionDetail.Columns["平仓金额"].Visible = false;
            this.GridView_InvestorPositionDetail.Columns["成交编号"].Visible = false;
            #endregion

        }
示例#3
0
        /// <summary>
        /// 点击连接按钮连接前置机
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Connect_Click(object sender, EventArgs e)
        {
            sTDAddress = this.TextBox_TDADDRESS.Text;
            sMDAddress = this.TextBox_MDADDRESS.Text;
            sBrokerID = this.TextBox_BrokerID.Text;
            sUserID = this.TextBox_UserID.Text;
            sPassword = this.TextBox_PassWord.Text;
            sTableName = string.Empty;
            #region 数据库初始化
            //内存数据库打开
            if (this.radioButton_MemDB.Checked && MemDB == null)
            {
                MemDB = new SQLiteBase.SQLiteBase();
            }
            else if (MemDB == null)
            {
                MemDB = new SQLiteBase.SQLiteBase("InstrmentDataBase.db");
            }
            MemDB.OpenDB();
            #endregion
            #region 交易初始化
            CtpMDApi = new CTPMDAdapter("MDAPI", false);
            CtpMDApi.OnFrontConnected += new FrontConnected(sCtpMdApi.OnFrontConnected);
            CtpMDApi.OnFrontDisconnected += new FrontDisconnected(sCtpMdApi.OnFrontDisconnected);
            CtpMDApi.OnHeartBeatWarning += new HeartBeatWarning(sCtpMdApi.OnHeartBeatWarning);
            CtpMDApi.OnRspError += new RspError(sCtpMdApi.OnRspError);
            CtpMDApi.OnRspSubMarketData += new RspSubMarketData(sCtpMdApi.OnRspSubMarketData);
            CtpMDApi.OnRspUnSubMarketData += new RspUnSubMarketData(sCtpMdApi.OnRspUnSubMarketData);
            CtpMDApi.OnRspUserLogin += new RspUserLogin(sCtpMdApi.OnRspUserLogin);
            CtpMDApi.OnRspUserLogout += new RspUserLogout(sCtpMdApi.OnRspUserLogout);
            CtpMDApi.OnRtnDepthMarketData += new RtnDepthMarketData(sCtpMdApi.OnRtnDepthMarketData);
            //注册前置机
            CtpMDApi.RegisterFront(sMDAddress);
            //初始化
            CtpMDApi.Init();
            #endregion 交易初始化
            #region 行情初始化
            CtpTDApi = new CTPTDAdapter("TDAPI");
            CtpTDApi.OnFrontConnected += new FrontConnected(sCtpTdApi.OnFrontConnected);
            CtpTDApi.OnFrontDisconnected += new FrontDisconnected(sCtpTdApi.OnFrontDisconnected);
            CtpTDApi.OnHeartBeatWarning += new HeartBeatWarning(sCtpTdApi.OnHeartBeatWarning);
            CtpTDApi.OnRspError += new RspError(sCtpTdApi.OnRspError);
            CtpTDApi.OnRspUserLogin += new RspUserLogin(sCtpTdApi.OnRspUserLogin);
            CtpTDApi.OnRspOrderAction += new RspOrderAction(sCtpTdApi.OnRspOrderAction);
            CtpTDApi.OnRspOrderInsert += new RspOrderInsert(sCtpTdApi.OnRspOrderInsert);
            CtpTDApi.OnRspQryInstrument += new RspQryInstrument(sCtpTdApi.OnRspQryInstrument);
            CtpTDApi.OnRspQryInvestorPosition += new RspQryInvestorPosition(sCtpTdApi.OnRspQryInvestorPosition);
            CtpTDApi.OnRspQryInvestorPositionDetail += new RspQryInvestorPositionDetail(sCtpTdApi.OnRspQryInvestorPositionDetail);
            CtpTDApi.OnRspQryTradingAccount += new RspQryTradingAccount(sCtpTdApi.OnRspQryTradingAccount);
            CtpTDApi.OnRspSettlementInfoConfirm += new RspSettlementInfoConfirm(sCtpTdApi.OnRspSettlementInfoConfirm);
            CtpTDApi.OnRtnOrder += new RtnOrder(sCtpTdApi.OnRtnOrder);
            CtpTDApi.OnRtnTrade += new RtnTrade(sCtpTdApi.OnRtnTrade);
            //注册流



            switch (comboBox_ResumeType.Text)
            {
                case "断线恢复":
                    CtpTDApi.SubscribePublicTopic(EnumTeResumeType.THOST_TERT_RESUME);					// 注册公有流
                    CtpTDApi.SubscribePrivateTopic(EnumTeResumeType.THOST_TERT_RESUME);					// 注册私有流
                    break;
                case "当天全部":
                    CtpTDApi.SubscribePublicTopic(EnumTeResumeType.THOST_TERT_RESTART);					// 注册公有流
                    CtpTDApi.SubscribePrivateTopic(EnumTeResumeType.THOST_TERT_RESTART);					// 注册私有流
                    break;
                default:
                    CtpTDApi.SubscribePublicTopic(EnumTeResumeType.THOST_TERT_QUICK);					// 注册公有流
                    CtpTDApi.SubscribePrivateTopic(EnumTeResumeType.THOST_TERT_QUICK);					// 注册私有流
                    break;

            }

            //注册前置机
            CtpTDApi.RegisterFront(sTDAddress);
            //初始化
            CtpTDApi.Init();
            #endregion 行情初始化
        }