def OnFrontConnected(self): logger.info('OnFrontConnected') req = ApiStructure.ReqAuthenticateField(BrokerID=self.broker_id, UserID=self.investor_id, AuthCode=self.auth_code, AppID=self.app_id) self.ReqAuthenticate(req, self.inc_request_id())
def OnRspAuthenticate(self, pRspAuthenticateField, pRspInfo, nRequestID, bIsLast): logger.info('OnRspAuthenticate') req = ApiStructure.ReqUserLoginField(BrokerID=self.broker_id, UserID=self.investor_id, Password=self.passwd) self.ReqUserLogin(req, self.inc_request_id())
def OnHeartBeatWarning(self, nTimeLapse): """ 心跳超时警告。当长时间未收到报文时,该方法被调用。 :param nTimeLapse: 距离上次接收报文的时间 :return: """ logger.info('OnHeartBeatWarning, nTimeLapse = %s' % nTimeLapse)
def OnFrontConnected(self): """ 当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 :return: """ logger.info('OnFrontConnected') req = ApiStructure.ReqUserLoginField(BrokerID=self.broker_id, UserID=self.investor_id, Password=self.passwd) self.requestid += 1 r = self.ReqUserLogin(req, self.requestid)
def OnFrontDisconnected(self, nReason): """ 当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 @param nReason 错误原因 4097 0x1001 网络读失败 4098 0x1002 网络写失败 8193 0x2001 读心跳超时 8194 0x2002 发送心跳超时 8195 0x2003 收到不能识别的错误消息 客户端与服务端的连接断开有两种情况: 网络原因导致连接断开 服务端主动断开连接 服务器主动断开连接有两种可能: 客户端长时间没有从服务端接收报文,时间超时 客户端建立的连接数超过限制 :param nReason: """ logger.info('onFrontDisConnected, nReason = %d' % nReason)
def OnHeartBeatWarning(self, nTimeLapse): logger.info('OnHeartBeatWarning, nTimeLapse = %s' % nTimeLapse)
def OnFrontDisconnected(self, nReason): logger.info('OnFrontDisconnected, nReason = %d' % nReason)
def OnRtnTrade(self, pTrade): logger.info('OnRtnTrade %s' % str(pTrade)) DatabaseController.insert_RtnOrder(pTrade)
def OnRtnTrade(self, pTrade): logger.info('OnRtnTrade %s' % pTrade.to_dict()) DatabaseController.insert_RtnOrder( pTrade.to_dict()) # dict will change bytes to str
def OnFrontConnected(self): logger.info('OnFrontConnected') req = ApiStruct.ReqUserLogin(BrokerID=self.broker_id, UserID=self.investor_id, Password=self.passwd) self.ReqUserLogin(req, self.inc_request_id())
def OnHeartBeatWarning(self, time): logger.info('OnHeartBeatWarning, time = %s' % time)
def OnFrontDisConnected(self, reason): logger.info('onFrontDisConnected, reason = %d' % reason)
def isErrorRspInfo(self, info): if info.ErrorID !=0: logger.info('ErrorID=%d, ErrorMsg=%s' % (info.ErrorID, info.ErrorMsg.decode('gbk'))) return info.ErrorID !=0
def OnRspOrderInsert(self, pInputOrder, pRspInfo, nRequestID, bIsLast): print('报单回报。', pInputOrder) if bIsLast and not self.isErrorRspInfo(pRspInfo): print('报单回报:', pInputOrder) logger.info('OnRspOrderInsert %s' % pInputOrder.InstrumentID)
def OnRspUserLogin(self, pRspUserLogin, pRspInfo, nRequestID, bIsLast): if bIsLast and not self.isErrorRspInfo(pRspInfo): logger.info('OnRspUserLogin %s' % bIsLast) req = ApiStructure.SettlementInfoConfirmField( BrokerID=self.broker_id, InvestorID=self.investor_id) self.ReqSettlementInfoConfirm(req, self.inc_request_id())
def OnRspOrderInsert(self, pInputOrder, pRspInfo, nRequestID, bIsLast): if bIsLast and not self.isErrorRspInfo(pRspInfo): logger.info('OnRspOrderInsert %s' % pInputOrder['InstrumentID'])
def OnRspUserLogin(self, userlogin, info, rid, is_last): if is_last and not self.isErrorRspInfo(info): logger.info('OnRspUserLogin %s' % is_last) req = ApiStruct.SettlementInfoConfirm(BrokerID=self.broker_id, InvestorID=self.investor_id) self.ReqSettlementInfoConfirm(req, self.inc_request_id())
def isErrorRspInfo(self, info): if info.ErrorID != 0: logger.info('ErrorID=%d, ErrorMsg=%s' % info.ErrorID % info.ErrorMsg.decode('gbk')) return info.ErrorID != 0
def OnRspOrderInsert(self, pInputOrder, pRspInfo, nRequestID, bIsLast): if bIsLast and not self.isErrorRspInfo(pRspInfo): logger.info('OnRspOrderInsert %s' % pInputOrder.InstrumentID)