private static void timerExit_Elapsed(object sender, ElapsedEventArgs e) { try { foreach (var key in Utils.InstrumentToMatchPrice.Keys) { var dict = Utils.InstrumentToMatchPrice[key]; dict = dict.OrderBy(k => k.Key).ToDictionary(k => k.Key, v => v.Value); foreach (var m in dict) { Utils.WriteLine(string.Format("成交价:{0},成交量:{1}", m.Key, m.Value.Volume)); } } var dateTime = DateTime.Now; Utils.WriteLine(string.Format("检查是否退出{0}", dateTime)); if ((dateTime.Hour == 15 && dateTime.Minute == 5) || (dateTime.Hour == 23 && dateTime.Minute == 35)) { Utils.WriteLine(string.Format("收盘,程序关闭{0}", dateTime)); Email.SendMail("收盘,程序关闭", DateTime.Now.ToString(CultureInfo.InvariantCulture), Utils.IsMailingEnabled); Utils.Exit(Utils.Trader); } if (dateTime.Hour == 8 && (dateTime.Minute == 45 || dateTime.Minute == 46 || dateTime.Minute == 47 || dateTime.Minute == 48 || dateTime.Minute == 49) && !Utils.IsTraderReady) //上午开盘时通道没有准备好,每隔一分钟尝试重新连接 { Utils.WriteLine(string.Format("通道没有准备好,重新连接,{0}", dateTime)); Email.SendMail("通道没有准备好,重新连接", DateTime.Now.ToString(CultureInfo.InvariantCulture), Utils.IsMailingEnabled); ((TraderAdapter)Utils.Trader).CreateNewTrader(); } if (dateTime.Hour == 8 && dateTime.Minute == 44) //早盘开盘前,主动重新登录一次 { var t = new ThostFtdcUserLogoutField { BrokerID = ((TraderAdapter)Utils.Trader).BrokerId, UserID = ((TraderAdapter)Utils.Trader).InvestorId }; ((TraderAdapter)Utils.Trader).ReqUserLogout(t, TraderAdapter.RequestId++); Utils.WriteLine(string.Format("登出{0}", ((TraderAdapter)Utils.Trader).InvestorId), true); Email.SendMail(string.Format("登出{0}", ((TraderAdapter)Utils.Trader).InvestorId), DateTime.Now.ToString(CultureInfo.InvariantCulture), Utils.IsMailingEnabled); } } catch (Exception ex) { Utils.WriteException(ex); } }
public void ReqUserLogout() { ThostFtdcUserLogoutField logoutField = new ThostFtdcUserLogoutField(); logoutField.BrokerID = BROKER_ID; var ret = mdApi.ReqUserLogout(logoutField, iRequestID++); HandleStatusInternal("CTP发送用户登出请求:" + (ret == 0 ? "成功" : "失败,返回代码" + ret)); }
private static void timerExit_Elapsed(object sender, ElapsedEventArgs e) { try { var dateTime = DateTime.Now; Utils.WriteLine(string.Format("检查是否退出{0}", dateTime)); if ((dateTime.Hour == 15 && dateTime.Minute == 5) || (dateTime.Hour == 1 && dateTime.Minute == 35)) { Utils.WriteLine(string.Format("收盘,程序关闭{0}", dateTime)); Email.SendMail("收盘,程序关闭", DateTime.Now.ToString(CultureInfo.InvariantCulture), Utils.IsMailingEnabled); Utils.Exit(Utils.Trader); } if (dateTime.Hour == 8 && (dateTime.Minute == 45 || dateTime.Minute == 46 || dateTime.Minute == 47 || dateTime.Minute == 48 || dateTime.Minute == 49) && !Utils.IsTraderReady) //上午开盘时通道没有准备好,每隔一分钟尝试重新连接 { Utils.WriteLine(string.Format("通道没有准备好,重新连接,{0}", dateTime)); Email.SendMail("通道没有准备好,重新连接", DateTime.Now.ToString(CultureInfo.InvariantCulture), Utils.IsMailingEnabled); ((TraderAdapter)Utils.Trader).CreateNewTrader(); } if (dateTime.Hour == 8 && dateTime.Minute == 44) //早盘开盘前,主动重新登录一次 { var t = new ThostFtdcUserLogoutField { BrokerID = ((TraderAdapter)Utils.Trader).BrokerId, UserID = ((TraderAdapter)Utils.Trader).InvestorId }; ((TraderAdapter)Utils.Trader).ReqUserLogout(t, TraderAdapter.RequestId++); Utils.WriteLine(string.Format("登出{0}", ((TraderAdapter)Utils.Trader).InvestorId), true); Email.SendMail(string.Format("登出{0}", ((TraderAdapter)Utils.Trader).InvestorId), DateTime.Now.ToString(CultureInfo.InvariantCulture), Utils.IsMailingEnabled); } } catch (Exception ex) { Utils.WriteException(ex); } }
private void QuoteAdapter_OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast) { try { Utils.ReportError(pRspInfo, "登出账号回报错误"); if (pUserLogout != null) { Utils.WriteLine("登出回报", true); Utils.OutputField(pUserLogout); } } catch (Exception ex) { Utils.WriteException(ex); } }
/// <summary> /// 登出应答 /// </summary> /// <param name="pUserLogout"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { DebugPrintFunc(new StackTrace()); }
public static extern int MdReqUserLogout(IntPtr pApi, ThostFtdcUserLogoutField pUserLogout, int nRequestID);
public override void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { throw new NotImplementedException(); }
/// <summary> /// 登出回调 /// </summary> /// <param name="pDepthMarketData"></param> public void HandleOnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { }
/// <summary> ///登出请求 /// </summary> public int ReqUserLogout(ThostFtdcUserLogoutField pUserLogout, int nRequestID) { return(Interop.TdReqUserLogout(Handle, pUserLogout, nRequestID)); }
public void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { }
/// <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; }
/// <summary> /// 录出客户应答 /// </summary> /// <param name="pUserLogout"></param> /// <param name="pRspInfo"></param> /// <param name="nRequestID"></param> /// <param name="bIsLast"></param> void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { DebugPrintFunc(new StackTrace()); //if (bIsLast && !IsErrorRspInfo(pRspInfo)) //{ // //登入请求 // ReqUserLogin(); //} IsErrorRspInfo(pRspInfo); }
/// <summary> /// 录出客户请求 /// </summary> void ReqUserLogout() { ThostFtdcUserLogoutField req = new ThostFtdcUserLogoutField(); req.BrokerID = BROKER_ID; req.UserID = INVESTOR_ID; int iResult = api.ReqUserLogout(req, ++iRequestID); Console.WriteLine("--->>> 登出请求:" + ((iResult == 0) ? "成功" : "失败")); }
private void QuoteAdapter_OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast) { _isReady = false; }
void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { __DEBUGPF__(); }
private void ReaderOnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { this.IsLogin = false; Console.WriteLine(string.Format("CTP行情服务登出成功。{0}", AccountInfo.MarketDataAddress)); }
void TraderAdapter_OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { MyUtils.IsTraderReady = false; }