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); } }
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); }
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); } }
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); } }
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); }
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); } }
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); }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }