Ejemplo n.º 1
0
        public void ReqQuery(QueryType type, ref ReqQueryField query)
        {
            int ReqQueryField_size = Marshal.SizeOf(typeof(ReqQueryField));
            IntPtr ReqQueryField_Ptr = Marshal.AllocHGlobal(ReqQueryField_size);
            Marshal.StructureToPtr(query, ReqQueryField_Ptr, false);

            proxy.XRequest((byte)type, Handle, IntPtr.Zero, 0, 0,
                ReqQueryField_Ptr, ReqQueryField_size, IntPtr.Zero, 0, IntPtr.Zero, 0);

            Marshal.FreeHGlobal(ReqQueryField_Ptr);
        }
Ejemplo n.º 2
0
        public void ReqQuery(QueryType type, ReqQueryField query)
        {
            int    ReqQueryField_size = Marshal.SizeOf(typeof(ReqQueryField));
            IntPtr ReqQueryField_Ptr  = Marshal.AllocHGlobal(ReqQueryField_size);

            Marshal.StructureToPtr(query, ReqQueryField_Ptr, false);

            proxy.XRequest((byte)type, Handle, IntPtr.Zero, 0, 0,
                           ReqQueryField_Ptr, ReqQueryField_size, IntPtr.Zero, 0, IntPtr.Zero, 0);

            Marshal.FreeHGlobal(ReqQueryField_Ptr);
        }
Ejemplo n.º 3
0
 public void Query(QueryType type, ReqQueryField query)
 {
     if (query == null)
     {
         query = new ReqQueryField()
         {
             AccountID = UserLogin?.AccountID,
             ClientID  = User.UserID
         };
     }
     _proxy.XRequest(type, _api, new UnmanagedPtr <ReqQueryField>(query), Marshal.SizeOf(typeof(ReqQueryField)));
 }
Ejemplo n.º 4
0
        private void OnConnectionStatus_Done(object sender, ConnectionStatus status)
        {
            bool bCheckOk = true;

            foreach (var item in ApiList)
            {
                if (item.UseType > 0)
                {
                    if (!IsApiConnected(item.Api))
                    {
                        bCheckOk = false;
                        break;
                    }
                }
            }

            if (bCheckOk)
            {
                base.Status = ProviderStatus.Connected;

                ReqQueryField query = default(ReqQueryField);
                query.PortfolioID1 = DefaultPortfolioID1;
                query.PortfolioID2 = DefaultPortfolioID2;
                query.PortfolioID3 = DefaultPortfolioID3;
                query.Business     = DefaultBusiness;

                // 查持仓,查资金
                if (_QueryApi != null)
                {
                    _QueryApi.ReqQuery(QueryType.ReqQryTradingAccount, ref query);
                    _QueryApi.ReqQuery(QueryType.ReqQryInvestorPosition, ref query);
                }

                // 查合约
                if (_ItApi != null)
                {
                    _ItApi.ReqQuery(QueryType.ReqQryInstrument, ref query);
                }
            }
        }
Ejemplo n.º 5
0
        private void QueryAccountPositionInstrument_Logined()
        {
            ReqQueryField query = default(ReqQueryField);

            query.PortfolioID1 = DefaultPortfolioID1;
            query.PortfolioID2 = DefaultPortfolioID2;
            query.PortfolioID3 = DefaultPortfolioID3;
            query.Business     = DefaultBusiness;

            // 查持仓,查资金
            if (IsApiConnected(_QueryApi))
            {
                _QueryApi.ReqQuery(QueryType.ReqQryTradingAccount, ref query);
                _QueryApi.ReqQuery(QueryType.ReqQryInvestorPosition, ref query);
            }

            // 查合约
            if (IsApiConnected(_ItApi))
            {
                _ItApi.ReqQuery(QueryType.ReqQryInstrument, ref query);
            }
        }
Ejemplo n.º 6
0
 public void NewQuery()
 {
     _Query = default(ReqQueryField);
 }
Ejemplo n.º 7
0
 public void NewQuery()
 {
     _Query = default(ReqQueryField);
 }
Ejemplo n.º 8
0
        public override void QueryPosition()
        {
            ReqQueryField query = new ReqQueryField();

            mTdApi.ReqQuery(QueryType.ReqQryInvestorPosition, query);
        }
Ejemplo n.º 9
0
        public override void QueryInstrument()
        {
            ReqQueryField query = new ReqQueryField();

            mTdApi.ReqQuery(QueryType.ReqQryInstrument, query);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 查询仓位信息
        /// </summary>
        public void QueryPosition()
        {
            ReqQueryField query = new ReqQueryField();

            api_Trade.ReqQuery(QueryType.ReqQryQuote, ref query);
        }
Ejemplo n.º 11
0
 public void NewQuery()
 {
     _Query = new ReqQueryField();
 }
Ejemplo n.º 12
0
        void _Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            _Timer.Enabled = false;

            do
            {
                // 列表为空,表示不处理。这时没有自动重连
                if (SessionTimeList == null || SessionTimeList.Count == 0)
                {
                    break;
                }

                bool bTryConnect = true;

                foreach (var st in SessionTimeList.ToList())
                {
                    // 如果当前时间在交易范围内,要开启重连
                    // 如果当前时间不在交易范围内,要主动断开
                    TimeSpan ts = e.SignalTime.TimeOfDay;
                    if (ts < st.SessionStart)
                    {
                        // 停
                        bTryConnect = false;
                    }
                    else if (ts <= st.SessionEnd)
                    {
                        // 启动
                        bTryConnect = true;
                        break;
                    }
                    else
                    {
                        // 停
                        bTryConnect = false;
                    }
                }

                if (bTryConnect)
                {
                    // 没有连接要连上,有连接要设置时间
                    if (!IsConnected || (!IsConnected && !IsDisconnected))
                    {
                        xlog.Info("当前[{0}]在交易时段,主动连接", e.SignalTime.TimeOfDay);
                        _Connect(false);
                    }

                    foreach (var item in ApiList)
                    {
                        if (item.UseType > 0 && item.Api != null)
                        {
                            item.Api.ReconnectInterval = _ReconnectInterval;
                        }
                    }
                }
                else
                {
                    foreach (var item in ApiList)
                    {
                        if (item.Api != null)
                        {
                            item.Api.ReconnectInterval = 0;
                        }
                    }

                    if (IsConnected || (!IsConnected && !IsDisconnected))
                    {
                        xlog.Info("当前[{0}]在非交易时段,主动断开连接", e.SignalTime.TimeOfDay);
                        // 要断开连接
                        _Disconnect(false);
                    }
                }
            }while(false);

            // 查询持仓和资金
            if (IsApiConnected(_QueryApi))
            {
                _QueryAccountCount -= (int)_Timer.Interval / 1000;
                if (_QueryAccountCount <= 0)
                {
                    ReqQueryField query = default(ReqQueryField);

                    query.PortfolioID1 = DefaultPortfolioID1;
                    query.PortfolioID2 = DefaultPortfolioID2;
                    query.PortfolioID3 = DefaultPortfolioID3;
                    query.Business     = DefaultBusiness;

                    _QueryApi.ReqQuery(QueryType.ReqQryTradingAccount, ref query);
                    _QueryAccountCount = _QueryAccountInterval;
                }

                _QueryPositionCount -= (int)_Timer.Interval / 1000;
                if (_QueryPositionCount <= 0)
                {
                    ReqQueryField query = default(ReqQueryField);

                    query.PortfolioID1 = DefaultPortfolioID1;
                    query.PortfolioID2 = DefaultPortfolioID2;
                    query.PortfolioID3 = DefaultPortfolioID3;
                    query.Business     = DefaultBusiness;

                    _QueryApi.ReqQuery(QueryType.ReqQryInvestorPosition, ref query);
                    _QueryPositionCount = _QueryPositionInterval;
                }
            }

            _Timer.Enabled = true;
        }