Exemplo n.º 1
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}";
         _publisher.Post(ConnectionStatus.Logined, UserLogin);
         if (string.IsNullOrEmpty(CtpLoginInfo.MaxOrderRef))
         {
             _orderRefId = 1;
         }
         else
         {
             _orderRefId = int.Parse(CtpLoginInfo.MaxOrderRef) + 1;
         }
         DoSettlementInfoConfirm();
     }
     else
     {
         SendError(rsp.Item2, nameof(OnRspUserLogin));
         _publisher.Post(ConnectionStatus.Disconnected);
     }
 }
Exemplo n.º 2
0
        protected override bool ProcessInstrument(CtpResponse?rsp)
        {
            if (!rsp.HasValue)
            {
                return(true);
            }
            try {
                var data = rsp.Value.Item1.AsInstrument;
                if (data == null)
                {
                    if (rsp.Value.IsLast)
                    {
                        _client.spi.ProcessQryInstrument(null, true);
                    }
                    return(true);
                }

                if (CtpConvert.CheckRspInfo(rsp.Value.Item2))
                {
                    _client.spi.ProcessQryInstrument(CtpConvert.GetInstrumentField(data), rsp.Value.IsLast);
                    return(rsp.Value.IsLast);
                }
                else
                {
                    _client.SendError(rsp.Value.Item2, nameof(ProcessInstrument));
                    _client.spi.ProcessQryInstrument(null, true);
                }
            }
            catch (Exception e) {
                _client.SendError(-1, e.Message);
                _client.spi.ProcessQryInstrument(null, true);
            }
            return(true);
        }
Exemplo n.º 3
0
 private void OnRspUserLogin(object sender, CtpRspUserLogin response, CtpRspInfo rspInfo, int requestId, bool isLast)
 {
     if (response != null && CtpConvert.CheckRspInfo(rspInfo))
     {
         if (Connected)
         {
             Resubscribe();
             return;
         }
         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);
     }
 }
Exemplo n.º 4
0
        private void OnRspUserLogin(ref CtpResponse rsp)
        {
            ctpLoginInfo = rsp.Item1.AsRspUserLogin;
            if (ctpLoginInfo != null && CtpConvert.CheckRspInfo(rsp.Item2))
            {
                if (!Connected)
                {
                    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;
                    _orderRef            = int.Parse(UserLogin.Text);
                    _publisher.Post(ConnectionStatus.Logined, UserLogin);
#if CTPMINI
                    Connected = true;
                    _publisher.Post(ConnectionStatus.Confirmed);
                    _publisher.Post(ConnectionStatus.Done, UserLogin);
#else
                    DoSettlementInfoConfirm();
#endif
                }
                else
                {
                    spi.ProcessLog(new LogField(LogLevel.Debug, $"Ctpse trader({User.UserID}) login success"));
                }
            }
            else
            {
                SendError(rsp.Item2, nameof(OnRspUserLogin));
                _publisher.Post(ConnectionStatus.Disconnected);
            }
        }
Exemplo n.º 5
0
        protected override bool ProcessOrder(CtpResponse?rsp)
        {
            if (rsp == null)
            {
                return(true);
            }

            if (CtpConvert.CheckRspInfo(rsp.Value.Item2))
            {
                _client.spi.ProcessQryOrder(CtpConvert.GetOrder(rsp.Value.Item1.AsOrder), rsp.Value.IsLast);
                return(rsp.Value.IsLast);
            }
            return(true);
        }
Exemplo n.º 6
0
        private void OnRspAuthenticate(ref CtpResponse rsp)
        {
            var data = rsp.Item1.AsRspAuthenticate;

            if (data != null && CtpConvert.CheckRspInfo(rsp.Item2))
            {
                _publisher.Post(ConnectionStatus.Authorized);
                DoLogin();
            }
            else
            {
                SendError(rsp.Item2, nameof(OnRspAuthenticate));
                _publisher.Post(ConnectionStatus.Disconnected);
            }
        }
Exemplo n.º 7
0
        protected override bool ProcessTrade(CtpResponse?rsp)
        {
            if (rsp == null)
            {
                return(true);
            }

            if (CtpConvert.CheckRspInfo(rsp.Value.Item2))
            {
                _client.Spi.ProcessQryTrade(CtpConvert.GetTrade(rsp.Value.Item1.AsTrade), rsp.Value.IsLast);
                return(rsp.Value.IsLast);
            }

            return(true);
        }
Exemplo n.º 8
0
        private void OnRspSettlementInfoConfirm(ref CtpResponse rsp)
        {
            var data = rsp.Item1.AsSettlementInfoConfirm;

            if (data != null && CtpConvert.CheckRspInfo(rsp.Item2))
            {
                Connected = true;
                _publisher.Post(ConnectionStatus.Confirmed);
                _publisher.Post(ConnectionStatus.Done, UserLogin);
            }
            else
            {
                SendError(rsp.Item2, nameof(OnRspSettlementInfoConfirm));
                _publisher.Post(ConnectionStatus.Disconnected);
            }
        }
Exemplo n.º 9
0
        protected override void ProcessTradingAccount(CtpResponse?rsp)
        {
            var data = rsp?.Item1.AsTradingAccount;

            if (data == null)
            {
                return;
            }
            if (CtpConvert.CheckRspInfo(rsp.Value.Item2))
            {
                _client.Spi.ProcessQryAccount(CtpConvert.GetAccountField(data), rsp.Value.IsLast);
            }
            else
            {
                _client.SendError(rsp.Value.Item2, nameof(ProcessTradingAccount));
                _client.Spi.ProcessQryAccount(null, true);
            }
        }
Exemplo n.º 10
0
        private void ProcessPosition(CtpResponse rsp)
        {
            var data = rsp.Item1.AsInvestorPosition;

            if (data == null)
            {
                return;
            }
            if (CtpConvert.CheckRspInfo(rsp.Item2))
            {
                _client.Spi.ProcessQryPosition(CtpConvert.GetPositionField(data), rsp.IsLast);
            }
            else
            {
                _client.SendError(rsp.Item2, nameof(ProcessPosition));
                _client.Spi.ProcessQryPosition(null, true);
            }
        }
Exemplo n.º 11
0
 protected override void ProcessInvestorPosition(CtpResponse?rsp)
 {
     if (!rsp.HasValue)
     {
         return;
     }
     if (CtpConvert.CheckRspInfo(rsp.Value.Item2))
     {
         var           data     = rsp.Value.Item1.AsInvestorPosition;
         PositionField position = null;
         if (data != null)
         {
             position = CtpConvert.GetPositionField(data);
         }
         _client.Spi.ProcessQryPosition(position, rsp.Value.IsLast);
     }
     else
     {
         _client.SendError(rsp.Value.Item2, nameof(ProcessInvestorPosition));
         _client.Spi.ProcessQryPosition(null, true);
     }
 }
Exemplo n.º 12
0
 private void ProcessInstrument(CtpResponse rsp)
 {
     try {
         var data = rsp.Item1.AsInstrument;
         if (data == null)
         {
             return;
         }
         if (CtpConvert.CheckRspInfo(rsp.Item2))
         {
             _client.Spi.ProcessQryInstrument(CtpConvert.GetInstrumentField(data), rsp.IsLast);
         }
         else
         {
             _client.SendError(rsp.Item2, nameof(ProcessInstrument));
             _client.Spi.ProcessQryInstrument(null, true);
         }
     }
     catch (Exception e) {
         _client.SendError(-1, e.Message);
         _client.Spi.ProcessQryInstrument(null, true);
     }
 }
Exemplo n.º 13
0
        private void OnRspAuthenticate(ref CtpResponse rsp)
        {
            var data = rsp.Item1.AsRspAuthenticate;

            if (data != null && CtpConvert.CheckRspInfo(rsp.Item2))
            {
                if (!Connected)
                {
                    _publisher.Post(ConnectionStatus.Authorized);
                }
                else
                {
                    spi.ProcessLog(new LogField(LogLevel.Debug, $"Ctp trader({User.UserID}) authorized"));
                }

                DoLogin();
            }
            else
            {
                SendError(rsp.Item2, nameof(OnRspAuthenticate));
                _publisher.Post(ConnectionStatus.Disconnected);
            }
        }