예제 #1
0
        public void Connect(ServerItem server, AccountItem account)
        {
            tempPath = Framework.Installation.TempDir.FullName + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(tempPath);

            Disconnect_MD();

            Connect_MsgQueue();
            Connect_MD();
        }
예제 #2
0
        public void Connect(ServerItem server, AccountItem account)
        {
            tempPath = System.IO.Path.GetTempPath() + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(tempPath);

            Disconnect_MD();

            Connect_MsgQueue();
            Connect_MD();
        }
예제 #3
0
        public void Connect(ServerItem server, AccountItem account,THOST_TE_RESUME_TYPE resumeType)
        {
            tempPath = System.IO.Path.GetTempPath() + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(tempPath);
            ResumeType = resumeType;

            Disconnect_TD();

            Connect_MsgQueue();
            Connect_TD();
        }
예제 #4
0
        public void Connect(ServerItem server, AccountItem account, THOST_TE_RESUME_TYPE resumeType)
        {
            tempPath = Framework.Installation.TempDir.FullName + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(tempPath);
            ResumeType = resumeType;

            Disconnect_TD();

            Connect_MsgQueue();
            Connect_TD();
        }
예제 #5
0
        public void Connect(ServerItem server, AccountItem account,THOST_TE_RESUME_TYPE resumeType)
        {
            tempPath = Framework.Installation.TempDir.FullName + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(tempPath);
            ResumeType = resumeType;

            Disconnect_TD();

            Connect_MsgQueue();
            Connect_TD();
        }
예제 #6
0
        void LoadServers()
        {
            try
            {
                var servers = from c in XElement.Load(serversFile).Elements("Server")
                              select c;

                foreach (var server in servers)
                {
                    ServerItem si = new ServerItem();
                    si.Label           = server.Attribute("Label").Value;
                    si.BrokerID        = server.Attribute("BrokerID").Value;
                    si.UserProductInfo = server.Attribute("UserProductInfo").Value;
                    si.AuthCode        = server.Attribute("AuthCode").Value;

                    string[] tdarr = server.Attribute("Trading").Value.Split(';');
                    foreach (string s in tdarr)
                    {
                        if (!string.IsNullOrEmpty(s))
                        {
                            si.Trading.Add(s);
                        }
                    }

                    string[] mdarr = server.Attribute("MarketData").Value.Split(';');
                    foreach (string s in mdarr)
                    {
                        if (!string.IsNullOrEmpty(s))
                        {
                            si.MarketData.Add(s);
                        }
                    }

                    serversList.Add(si);
                }
            }
            catch (Exception)
            {
            }
        }
예제 #7
0
        private void _Connect()
        {
            server = null;
            account = null;

            bool bCheckOk = false;

            do
            {
                if (0 == serversList.Count)
                {
                    MessageBox.Show("您还没有设置 服务器 信息,目前只选择第一条进行连接");
                    break;
                }
                if (0 == serversList.Count)
                {
                    MessageBox.Show("您还没有设置 账号 信息,目前只选择第一条进行连接");
                    break;
                }

                server = serversList[0];
                account = accountsList[0];

                if (string.IsNullOrEmpty(server.BrokerID)
                || 0 == server.Trading.Count()
                || 0 == server.MarketData.Count())
                {
                    MessageBox.Show("服务器信息不全");
                    break;
                }

                if (string.IsNullOrEmpty(account.InvestorId)
                || string.IsNullOrEmpty(account.Password))
                {
                    MessageBox.Show("账号信息不全");
                    break;
                }

                bCheckOk = true;

            } while (false);

            if (false == bCheckOk)
            {
                ChangeStatus(ProviderStatus.Disconnected);
                EmitDisconnectedEvent();
                return;
            }

            //新建目录
            _newTempPath = ApiTempPath + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(_newTempPath);

            ChangeStatus(ProviderStatus.Connecting);
            //如果前面一次连接一直连不上,新改地址后也会没响应,所以先删除
            Disconnect_MD();
            Disconnect_TD();

            Connect_MsgQueue();
            if (_bWantMdConnect)
            {
                Connect_MD();
            }
            if (_bWantTdConnect)
            {
                Connect_TD();
            }

            if (_bWantMdConnect||_bWantTdConnect)
            {
                //建立消息队列读取线程
                if (null == _thread)
                {
                    _runThread = true;
                    _thread = new Thread(new ThreadStart(ThreadProc));
                    _thread.Start();
                }
            }
        }
예제 #8
0
        private void _Connect()
        {
            CTPAPI.GetInstance().__RegInstrumentDictionary(_dictInstruments);
            CTPAPI.GetInstance().__RegInstrumentCommissionRateDictionary(_dictCommissionRate);
            CTPAPI.GetInstance().__RegInstrumentMarginRateDictionary(_dictMarginRate);
            CTPAPI.GetInstance().__RegDepthMarketDataDictionary(_dictDepthMarketData);

            server = null;
            account = null;

            bool bCheckOk = false;

            do
            {
                if (0 == serversList.Count)
                {
                    MessageBox.Show("您还没有设置 服务器 信息,目前只选择第一条进行连接");
                    break;
                }
                if (0 == serversList.Count)
                {
                    MessageBox.Show("您还没有设置 账号 信息,目前只选择第一条进行连接");
                    break;
                }

                server = serversList[0];
                account = accountsList[0];

                if (string.IsNullOrEmpty(server.BrokerID))
                {
                    MessageBox.Show("BrokerID不能为空");
                    break;
                }

                if (_bWantTdConnect &&0 == server.Trading.Count())
                {
                    MessageBox.Show("交易服务器地址不全");
                    break;
                }

                if (_bWantMdConnect &&0 == server.MarketData.Count())
                {
                    MessageBox.Show("行情服务器信息不全");
                    break;
                }

                if (string.IsNullOrEmpty(account.InvestorId)
                || string.IsNullOrEmpty(account.Password))
                {
                    MessageBox.Show("账号信息不全");
                    break;
                }

                bCheckOk = true;

            } while (false);

            if (false == bCheckOk)
            {
                ChangeStatus(ProviderStatus.Disconnected);
                isConnected = false;
                return;
            }

            //新建目录
            _newTempPath = ApiTempPath + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(_newTempPath);

            ChangeStatus(ProviderStatus.Connecting);
            //如果前面一次连接一直连不上,新改地址后也会没响应,所以先删除
            Disconnect_MD();
            Disconnect_TD();

            if (_bWantMdConnect || _bWantTdConnect)
            {
                timerDisconnect.Enabled = true;
                timerAccount.Enabled = true;
                timerPonstion.Enabled = true;
                Connect_MsgQueue();
            }
            if (_bWantMdConnect)
            {
                Connect_MD();
            }
            if (_bWantTdConnect)
            {
                Connect_TD();
            }
        }
예제 #9
0
        void LoadServers()
        {
            try
            {
                var servers = from c in XElement.Load(serversFile).Elements("Server")
                          select c;

                foreach (var server in servers)
                {
                    ServerItem si = new ServerItem();
                    si.Label = server.Attribute("Label").Value;
                    si.BrokerID = server.Attribute("BrokerID").Value;
                    si.UserProductInfo = server.Attribute("UserProductInfo").Value;
                    si.AuthCode = server.Attribute("AuthCode").Value;

                    string[] tdarr = server.Attribute("Trading").Value.Split(';');
                    foreach (string s in tdarr)
                    {
                        if (!string.IsNullOrEmpty(s))
                            si.Trading.Add(s);
                    }

                    string[] mdarr = server.Attribute("MarketData").Value.Split(';');
                    foreach (string s in mdarr)
                    {
                        if (!string.IsNullOrEmpty(s))
                            si.MarketData.Add(s);
                    }

                    serversList.Add(si);
                }
            }
            catch (Exception)
            {
            }
        }
예제 #10
0
        private void _Connect()
        {
            server  = null;
            account = null;

            bool bCheckOk = false;

            do
            {
                if (0 == serversList.Count)
                {
                    MessageBox.Show("您还没有设置服务器信息,目前只选择第一条进行连接");
                    break;
                }
                if (0 == serversList.Count)
                {
                    MessageBox.Show("您还没有设置账号信息,目前只选择第一条进行连接");
                    break;
                }

                server  = serversList[0];
                account = accountsList[0];

                if (string.IsNullOrEmpty(server.BrokerID) ||
                    0 == server.Trading.Count() ||
                    0 == server.MarketData.Count())
                {
                    MessageBox.Show("服务器信息不全");
                    break;
                }

                if (string.IsNullOrEmpty(account.InvestorId) ||
                    string.IsNullOrEmpty(account.Password))
                {
                    MessageBox.Show("账号信息不全");
                    break;
                }

                bCheckOk = true;
            } while (false);

            if (false == bCheckOk)
            {
                ChangeStatus(ProviderStatus.Disconnected);
                EmitDisconnectedEvent();
                return;
            }

            _bWantMdConnect = true;
            _bWantTdConnect = true;

            //新建目录
            _newTempPath = ApiTempPath + Path.DirectorySeparatorChar + server.BrokerID + Path.DirectorySeparatorChar + account.InvestorId;
            Directory.CreateDirectory(_newTempPath);

            ChangeStatus(ProviderStatus.Connecting);
            //如果前面一次连接一直连不上,新改地址后也会没响应,所以先删除
            Disconnect_MD();
            Disconnect_TD();

            Connect_MsgQueue();
            Connect_MD();
            Connect_TD();

            //建立消息队列读取线程
            if (null == _thread)
            {
                _runThread = true;
                _thread    = new Thread(new ThreadStart(ThreadProc));
                _thread.Start();
            }
        }
예제 #11
0
        BindingList<ServerItem> ParseServers(IEnumerable<XElement> servers)
        {
            BindingList<ServerItem> serversList = new BindingList<ServerItem>();

            foreach (var server in servers)
            {
                ServerItem si = new ServerItem()
                {
                    Label = server.Attribute("Label").Value,
                    BrokerID = server.Attribute("BrokerID").Value,
                    UserProductInfo = server.Attribute("UserProductInfo").Value,
                    AuthCode = server.Attribute("AuthCode").Value
                };

                string[] tdarr = server.Attribute("Trading").Value.Split(';');
                foreach (string s in tdarr)
                {
                    if (!string.IsNullOrEmpty(s))
                        si.Trading.Add(s);
                }

                string[] mdarr = server.Attribute("MarketData").Value.Split(';');
                foreach (string s in mdarr)
                {
                    if (!string.IsNullOrEmpty(s))
                        si.MarketData.Add(s);
                }

                serversList.Add(si);
            }

            return serversList;
        }