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);
            }
        }
Example #2
0
        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);
            }
        }
Example #5
0
 /// <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());
 }
Example #6
0
 public static extern int MdReqUserLogout(IntPtr pApi, ThostFtdcUserLogoutField pUserLogout, int nRequestID);
Example #7
0
 public override void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #8
0
 /// <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());
 }
Example #9
0
 /// <summary>
 /// 登出回调
 /// </summary>
 /// <param name="pDepthMarketData"></param>
 public void HandleOnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
 }
Example #10
0
 /// <summary>
 ///登出请求
 /// </summary>
 public int ReqUserLogout(ThostFtdcUserLogoutField pUserLogout, int nRequestID)
 {
     return(Interop.TdReqUserLogout(Handle, pUserLogout, nRequestID));
 }
Example #11
0
 public void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
 }
Example #12
0
 /// <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;
 }
Example #13
0
        /// <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);
        }
Example #14
0
        /// <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) ? "成功" : "失败"));
        }
Example #15
0
 private void QuoteAdapter_OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo,
                                           int nRequestId, bool bIsLast)
 {
     _isReady = false;
 }
Example #16
0
 void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     __DEBUGPF__();
 }
Example #17
0
 private void ReaderOnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     this.IsLogin = false;
     Console.WriteLine(string.Format("CTP行情服务登出成功。{0}", AccountInfo.MarketDataAddress));
 }
Example #18
0
 public override void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #19
0
 void TraderAdapter_OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo,
                                    int nRequestID, bool bIsLast)
 {
     MyUtils.IsTraderReady = false;
 }