private void ProcessOrderReject(CtpInputOrder input, CtpRspInfo rspInfo)
        {
            var login   = _client.CtpLoginInfo;
            var localId = $"{login.FrontID}:{login.SessionID}:{input.OrderRef}";

            ProcessOrderReject(localId, rspInfo);
        }
예제 #2
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);
     }
 }
예제 #3
0
 public CtpResponse(string userID, byte id, int intValue, CtpRspInfo rspInfo = null)
     : this(null, id)
 {
     Item1  = new CtpAny(intValue);
     Item2  = rspInfo;
     UserID = userID;
 }
예제 #4
0
 public CtpResponse(byte[] clientID, byte id, object objValue, CtpRspInfo rspInfo = null)
     : this(clientID, id)
 {
     Item1  = new CtpAny(objValue);
     Item2  = rspInfo;
     UserID = "";
 }
        private void ProcessOrderReject(CtpInputOrder input, CtpRspInfo rspInfo)
        {
            var login = _client.CtpLoginInfo;
            var id    = CtpConvert.GetId(input, login);

            ProcessOrderReject(id, rspInfo);
        }
 private void ProcessOrderReject(string localId, CtpRspInfo rspInfo)
 {
     _orders.TryGetByLocalId(localId, out var order);
     if (order != null)
     {
         ReportOrder(order, ExecType.Rejected, OrderStatus.Rejected, rspInfo);
     }
 }
 private void ProcessCancelReject(string localId, CtpRspInfo rspInfo)
 {
     _orders.TryGetByLocalId(localId, out var order);
     if (order != null)
     {
         ReportOrder(order, ExecType.CancelReject, order.Status, rspInfo);
     }
 }
예제 #8
0
        ///错误应答
        private void NativeOnRspError(CtpRspInfo rspInfo, int requestId, bool isLast)
        {
            var rsp = new CtpResponse();

            rsp.TypeId    = CtpResponseType.OnRspError;
            rsp.Item1     = new CtpAny(rspInfo);
            rsp.RequestID = requestId;
            rsp.IsLast    = isLast;
            ProcessResponse(ref rsp);
        }
예제 #9
0
        ///登出请求响应
        private void NativeOnRspUserLogout(CtpUserLogout userLogout, CtpRspInfo rspInfo, int requestId, bool isLast)
        {
            var rsp = new CtpResponse();

            rsp.TypeId    = CtpResponseType.OnRspUserLogout;
            rsp.Item1     = new CtpAny(userLogout);
            rsp.Item2     = rspInfo;
            rsp.RequestID = requestId;
            rsp.IsLast    = isLast;
            ProcessResponse(ref rsp);
        }
예제 #10
0
        ///取消订阅询价应答
        private void NativeOnRspUnSubForQuoteRsp(CtpSpecificInstrument specificInstrument, CtpRspInfo rspInfo, int requestId, bool isLast)
        {
            var rsp = new CtpResponse();

            rsp.TypeId    = CtpResponseType.OnRspUnSubForQuoteRsp;
            rsp.Item1     = new CtpAny(specificInstrument);
            rsp.Item2     = rspInfo;
            rsp.RequestID = requestId;
            rsp.IsLast    = isLast;
            ProcessResponse(ref rsp);
        }
        private void ProcessCancelReject(CtpInputOrderAction action, CtpRspInfo rspInfo)
        {
            var localId = $"{action.FrontID}:{action.SessionID}:{action.OrderRef}";

            ProcessCancelReject(localId, rspInfo);
        }
예제 #12
0
 private void OnRspError(object sender, CtpRspInfo rspInfo, int requestId, bool isLast)
 {
     SendError(rspInfo, nameof(OnRspError));
 }
 private void ProcessOrderReject(CtpInputOrder input, CtpRspInfo rspInfo)
 {
     ProcessOrderReject(input.OrderRef, rspInfo);
 }
 private void ProcessCancelReject(CtpInputOrderAction action, CtpRspInfo rspInfo)
 {
     ProcessCancelReject(action.OrderSysID, rspInfo);
 }
예제 #15
0
 private void OnRspSubMarketData(object sender, CtpSpecificInstrument response, CtpRspInfo info, int requestId, bool last)
 {
     if (response == null)
     {
         return;
     }
     _spi.ProcessLog(new LogField(LogLevel.Debug, $"Ctpse subscribe {response.InstrumentID}"));
 }
 private void ReportOrder(OrderField order, ExecType execType, OrderStatus newStatus, CtpRspInfo rspInfo)
 {
     ReportOrder(order, execType, newStatus, rspInfo.ErrorID, rspInfo.ErrorID, rspInfo.ErrorMsg);
 }
예제 #17
0
 public CtpResponse(byte[] clientID, byte id, int intValue, CtpRspInfo rspInfo = null)
     : this(clientID, id)
 {
     Item1 = new CtpAny(intValue);
     Item2 = rspInfo;
 }
예제 #18
0
 private void ProcessCancelReject(CtpOrderAction action, CtpRspInfo rspInfo)
 {
     ProcessCancelReject(action.OrderRef, rspInfo);
 }
예제 #19
0
 internal void SendError(CtpRspInfo info, string source)
 {
     SendError(new ErrorField(info.ErrorID, info.ErrorID, info.ErrorMsg, source));
 }
예제 #20
0
 public static bool CheckRspInfo(CtpRspInfo info)
 {
     return(info == null || info.ErrorID == 0);
 }