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); }
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); }
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))); }
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); } } }
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); } }
public void NewQuery() { _Query = default(ReqQueryField); }
public override void QueryPosition() { ReqQueryField query = new ReqQueryField(); mTdApi.ReqQuery(QueryType.ReqQryInvestorPosition, query); }
public override void QueryInstrument() { ReqQueryField query = new ReqQueryField(); mTdApi.ReqQuery(QueryType.ReqQryInstrument, query); }
/// <summary> /// 查询仓位信息 /// </summary> public void QueryPosition() { ReqQueryField query = new ReqQueryField(); api_Trade.ReqQuery(QueryType.ReqQryQuote, ref query); }
public void NewQuery() { _Query = new ReqQueryField(); }
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; }