public static DateTime TradingDay(this RspUserLoginField field)
 {
     if (field == null || field.TradingDay == 0)
     {
         return(DateTime.MaxValue);
     }
     return(field.TradingDay > 0 ? GetDateTime(field.TradingDay) : DateTime.Today);
 }
Esempio n. 2
0
 public static string DebugInfo(this RspUserLoginField field)
 {
     if (field == null)
     {
         return(string.Empty);
     }
     return($"[TradingDay={field.TradingDay},LoginTime={field.LoginTime},InvestorName={field.InvestorName},XErrorID={field.XErrorID},Message={field.Text}]");
 }
Esempio n. 3
0
 public static string RawErrorMsg(this RspUserLoginField field)
 {
     if (field == null)
     {
         return(string.Empty);
     }
     return($"[XErrorID={field.XErrorID},RawErrorID={field.RawErrorID},Message={field.Text}]");
 }
Esempio n. 4
0
 public static DateTime TradingDay(this RspUserLoginField field)
 {
     if (field == null || field.TradingDay == 0)
     {
         return(DateTime.MaxValue);
     }
     if (field.TradingDay > 0)
     {
         var year  = field.TradingDay / 10000;
         var month = field.TradingDay % 10000 / 100;
         var day   = field.TradingDay % 100;
         return(new DateTime(year, month, day));
     }
     return(DateTime.Today);
 }
Esempio n. 5
0
        public void Init(ServerInfoField server, UserInfoField user)
        {
            if (_api != null)
            {
                return;
            }
            User      = user;
            Server    = server;
            UserLogin = null;
            _api      = new CtpMdApi(GetFlowPath(server, user));
            InitHandler();
            var items = server.Address.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var item in items)
            {
                _api.RegisterFront(item);
            }
            _publisher.Post(ConnectionStatus.Connecting);
            _api.Init();
        }
Esempio n. 6
0
 private void OnRspUserLogin(object sender, CtpRspUserLogin response, CtpRspInfo rspInfo, int requestId, bool isLast)
 {
     if (response != null && CtpConvert.CheckRspInfo(rspInfo))
     {
         Connected = true;
         UserLogin = new RspUserLoginField();
         var now = DateTime.Now;
         UserLogin.TradingDay = now.Year * 10000 + now.Month * 100 + now.Day;
         UserLogin.LoginTime  = now.Hour * 10000 + now.Minute * 100 + now.Second;
         UserLogin.UserID     = User.UserID;
         UserLogin.SessionID  = string.Empty;
         _publisher.Post(ConnectionStatus.Logined, UserLogin);
         _publisher.Post(ConnectionStatus.Done);
     }
     else
     {
         SendError(rspInfo, nameof(OnRspUserLogin));
         _publisher.Post(ConnectionStatus.Disconnected);
     }
 }
Esempio n. 7
0
 private void OnRspUserLogin(ref CtpResponse rsp)
 {
     CtpLoginInfo = rsp.Item1.AsRspUserLogin;
     if (CtpLoginInfo != null && CtpConvert.CheckRspInfo(rsp.Item2))
     {
         UserLogin            = new RspUserLoginField();
         UserLogin.TradingDay = CtpConvert.GetDate(CtpLoginInfo.TradingDay);
         UserLogin.LoginTime  = CtpConvert.GetTime(CtpLoginInfo.LoginTime);
         UserLogin.UserID     = CtpLoginInfo.UserID;
         UserLogin.SessionID  = $"{CtpLoginInfo.FrontID}:{CtpLoginInfo.SessionID}";
         UserLogin.Text       = string.IsNullOrEmpty(CtpLoginInfo.MaxOrderRef) ? "1" : CtpLoginInfo.MaxOrderRef;
         _publisher.Post(ConnectionStatus.Logined, UserLogin);
         DoSettlementInfoConfirm();
     }
     else
     {
         SendError(rsp.Item2, nameof(OnRspUserLogin));
         _publisher.Post(ConnectionStatus.Disconnected);
     }
 }
Esempio n. 8
0
 void IXSpi.ProcessConnectionStatus(ConnectionStatus status, RspUserLoginField login)
 {
     StatusChanged?.Invoke(this, status, login);
 }