Esempio n. 1
0
 private void button8_Click(object sender, EventArgs e)
 {
     if (TraderApi != null)
     {
         TraderApi.Dispose();
         TraderApi = null;
     }
 }
Esempio n. 2
0
 private void button8_Click(object sender, EventArgs e)
 {
     if (TraderApi != null)
     {
         TraderApi.Dispose();
         TraderApi = null;
         Console.WriteLine("Disconnected.");
     }
 }
Esempio n. 3
0
        void TraderApi_OnRspEvent(object sender, OnRspEventArgs e)
        {
            bool err = IsError(e.RspInfo, e.EventType.ToString());

            switch (e.EventType)
            {
            case EnumOnRspType.OnRspAuthenticate:
                if (err)
                {
                    Console.WriteLine("认证失败!!!");
                }
                else
                {
                    Console.WriteLine("认证成功!!!");
                    if (chkSubmitUserSystemInfo.Checked)
                    {
                        RegSystemInfo();
                    }
                    ReqUserLogin();
                }

                break;

            case EnumOnRspType.OnRspUserLogin:
                if (err)
                {
                    Console.WriteLine("登录失败");
                }
                else
                {
                    Console.WriteLine("登录成功");
                    var fld = Conv.P2S <ThostFtdcRspUserLoginField>(e.Param);
                    Console.WriteLine("TradingDay is " + fld.TradingDay);
                    Console.WriteLine("CTP Version " + FtdcTdAdapter.GetApiVersion());

                    ThostFtdcSettlementInfoConfirmField req = new ThostFtdcSettlementInfoConfirmField();
                    req.BrokerID   = this.txtBrokerID.Text;
                    req.InvestorID = this.txtUserID.Text;
                    TraderApi.ReqSettlementInfoConfirm(req, ++this.iRequestID);
                }
                break;

            case EnumOnRspType.OnRspQryInstrument:
                if (e.Param != IntPtr.Zero)
                {
                    var fld = Conv.P2S <ThostFtdcInstrumentField>(e.Param);
                    Console.WriteLine("=====> {0}, {1},  isLast {2}", e.EventType, fld.InstrumentID, e.IsLast);
                }
                break;
            }
        }
Esempio n. 4
0
        void RegSystemInfo()
        {
            byte[] buffer = new byte[512];
            int    nLen   = 0;
            int    res    = FtdcTdAdapter.CTP_GetSystemInfo(buffer, ref nLen);

            if (res != 0 || nLen == 0)
            {
                Console.WriteLine("CTP_GetSystemInfo() 失败, 错误代码 {0}, nLen = {1}", res, nLen);
                return;
            }

            var field = new ThostFtdcUserSystemInfoField();

            field.BrokerID = txtBrokerID.Text;
            field.UserID   = txtUserID.Text;
            Array.Copy(buffer, 0, field.ClientSystemInfo, 0, nLen);

            field.ClientPublicIP  = "127.0.0.1";
            field.ClientIPPort    = 65535;
            field.ClientLoginTime = "11:28:28";
            field.ClientAppID     = "Q7";
            int result = TraderApi.RegisterUserSystemInfo(field);

            if (result == 0)
            {
                Console.WriteLine("RegisterUserSystemInfo() 成功");
            }
            else
            {
                Console.WriteLine("RegisterUserSystemInfo() 失败, 错误代码 {0}", result);
            }

            /*  RegisterUserSystemInfo 错误代码
             * 0 正确
             * -1 字段长度不对
             * -2 非CTP采集的终端信息
             * -3 当前终端类型非多对多中继
             * -5 字段中存在非法字符或者长度超限
             * -6 采集结果字段错误
             */
        }
Esempio n. 5
0
        private void button5_Click(object sender, EventArgs e)
        {
            if (TraderApi == null)
            {
                if (CheckInput() == false)
                {
                    return;
                }

                TraderApi = new FtdcTdAdapter("");
                TraderApi.OnFrontEvent  += TraderApi_OnFrontEvent;
                TraderApi.OnRspEvent    += TraderApi_OnRspEvent;
                TraderApi.OnRtnEvent    += TraderApi_OnRtnEvent;
                TraderApi.OnErrRtnEvent += TraderApi_OnErrRtnEvent;
                TraderApi.SubscribePublicTopic(EnumTeResumeType.THOST_TERT_QUICK);
                TraderApi.SubscribePrivateTopic(EnumTeResumeType.THOST_TERT_QUICK);
                TraderApi.RegisterFront(txtFrontTD.Text);
                TraderApi.Init();
            }
        }
Esempio n. 6
0
        public void Init()
        {
            if (FrontAddrs == null || FrontAddrs.Length == 0)
            {
                HandleErrorInternal("CTP交易输入前置机地址不能为空!");
                return;
            }

            if (trader == null)
            {
                trader = new FtdcTdAdapter(".\\trade");
            }                                            // 创建trade目录存放流文件,避免与行情流文件冲突

            // 回调函数
            trader.OnFrontEvent  += TraderApi_OnFrontEvent;
            trader.OnRspEvent    += TraderApi_OnRspEvent;
            trader.OnErrRtnEvent += TraderApi_OnErrRtnEvent;
            trader.OnRtnEvent    += TraderApi_OnRtnEvent;

            // 订阅私有流
            trader.SubscribePrivateTopic(EnumTeResumeType.THOST_TERT_RESUME);
            // 订阅公共流
            trader.SubscribePublicTopic(EnumTeResumeType.THOST_TERT_RESUME);

            try
            {
                foreach (var frontAddr in FrontAddrs)
                {
                    trader.RegisterFront(frontAddr);
                }

                trader.Init();
            }
            catch (Exception ex)
            {
                HandleErrorInternal("CTP连接前置机发生错误:" + ex.Message);
            }
        }
Esempio n. 7
0
 private void Form1_Load(object sender, EventArgs e)
 {
     Console.WriteLine("Platform is {0}", Environment.Is64BitProcess ? "x64" : "x86");
     Console.WriteLine("TradeApi version {0}", FtdcTdAdapter.GetApiVersion());
     Console.WriteLine("DataApi  version {0}", FtdcMdAdapter.GetApiVersion());
 }