| | |
| | | l1_data_queue = collections.deque() |
| | | __subscribed_codes = set() |
| | | |
| | | def __init__(self, api, codes_sh, codes_sz): |
| | | for i in range(3): |
| | | try: |
| | | self.codes_sh, self.codes_sz = codes_sh, codes_sz |
| | | break |
| | | except: |
| | | time.sleep(2) |
| | | def __init__(self, api): |
| | | xmdapi.CTORATstpXMdSpi.__init__(self) |
| | | self.__api = api |
| | | |
| | |
| | | # 请求登录,目前未校验登录用户,请求域置空即可 |
| | | login_req = xmdapi.CTORATstpReqUserLoginField() |
| | | self.__api.ReqUserLogin(login_req, 1) |
| | | |
| | | # 重新订阅代码 |
| | | def subscribe_codes(self, codes_sh, codes_sz): |
| | | print(f"订阅数量:sh-{len(codes_sh)} sz-{len(codes_sz)}") |
| | | if codes_sh: |
| | | ret = self.__api.SubscribeMarketData(codes_sh, xmdapi.TORA_TSTP_EXD_SSE) |
| | | if ret != 0: |
| | | print('SubscribeMarketData fail, ret[%d]' % ret) |
| | | else: |
| | | print('SubscribeMarketData success, ret[%d]' % ret) |
| | | |
| | | if codes_sz: |
| | | ret = self.__api.SubscribeMarketData(codes_sz, xmdapi.TORA_TSTP_EXD_SZSE) |
| | | if ret != 0: |
| | | print('SubscribeMarketData fail, ret[%d]' % ret) |
| | | else: |
| | | print('SubscribeMarketData success, ret[%d]' % ret) |
| | | |
| | | def __seperate_codes(self, codes): |
| | | codes_sh = [] |
| | |
| | | def subscribe(self, codes: set): |
| | | del_codes = self.__subscribed_codes - codes |
| | | add_codes = codes - self.__subscribed_codes |
| | | logger_local_huaxin_l1.info(f"新增订阅:{add_codes} 减少订阅:{del_codes}") |
| | | if add_codes: |
| | | codes_sh, codes_sz = self.__seperate_codes(add_codes) |
| | | logger_local_huaxin_l1.info(f"新增订阅:{codes_sh} {codes_sz}") |
| | | if codes_sh: |
| | | self.__api.SubscribeMarketData(codes_sh, xmdapi.TORA_TSTP_EXD_SSE) |
| | | if codes_sz: |
| | |
| | | 当sub_arr中只有一个"00000000"的合约且ExchangeID填TORA_TSTP_EXD_COMM时,订阅全市场所有合约行情 |
| | | 其它情况,订阅sub_arr集合中的合约行情 |
| | | ''' |
| | | |
| | | self.subscribe_codes(self.codes_sh, self.codes_sz) |
| | | # sub_arr = [b'600004'] |
| | | # ret = self.__api.UnSubscribeMarketData(sub_arr, xmdapi.TORA_TSTP_EXD_SSE) |
| | | # if ret != 0: |
| | |
| | | |
| | | # 创建回调对象 |
| | | global spi |
| | | spi = MdSpi(api, codes_sh, codes_sz) |
| | | spi = MdSpi(api) |
| | | |
| | | # 注册回调接口 |
| | | api.RegisterSpi(spi) |