| | |
| | | import threading |
| | | import time |
| | | |
| | | from huaxin_client import socket_util |
| | | from huaxin_client import socket_util, l1_subscript_codes_manager |
| | | import xmdapi |
| | | from huaxin_client import tool |
| | | from huaxin_client.client_network import SendResponseSkManager |
| | |
| | | if result_json.get("code") == 0: |
| | | return True |
| | | return False |
| | | |
| | | |
| | | def get_level1_codes(): |
| | | type_ = "get_level1_codes" |
| | | fdata = json.dumps( |
| | | {"type": type_, "data": {}}) |
| | | msg = fdata.encode("utf-8") |
| | | # 发送消息 |
| | | for i in range(3): |
| | | try: |
| | | sk = SendResponseSkManager.create_send_response_sk() |
| | | msg = socket_util.load_header(msg) |
| | | sk.sendall(msg) |
| | | result, header_str = socket_util.recv_data(sk) |
| | | # 读取代码 |
| | | result_json = json.loads(result) |
| | | if result_json["code"] == 0: |
| | | codes = result_json["data"] |
| | | codes_sh = [] |
| | | codes_sz = [] |
| | | for code in codes: |
| | | if code.find("00") == 0: |
| | | codes_sz.append(code.encode("utf-8")) |
| | | else: |
| | | codes_sh.append(code.encode("utf-8")) |
| | | print("获取订阅目标代数量:", len(codes_sh), len(codes_sz)) |
| | | return codes_sh, codes_sz |
| | | except ConnectionResetError: |
| | | SendResponseSkManager.del_send_response_sk(type_) |
| | | except BrokenPipeError: |
| | | SendResponseSkManager.del_send_response_sk(type_) |
| | | return None, None |
| | | |
| | | |
| | | class MdSpi(xmdapi.CTORATstpXMdSpi): |
| | |
| | | # pMarketDataField.AskVolume1, pMarketDataField.UpperLimitPrice, pMarketDataField.LowerLimitPrice)) |
| | | |
| | | |
| | | __latest_subscript_codes = set() |
| | | |
| | | |
| | | def __upload_codes_info(pipe_l2, datas): |
| | | if not tool.is_trade_time(): |
| | | return |
| | |
| | | {"type": type_, "data": {"data": datas}}) |
| | | if pipe_l2 is not None: |
| | | pipe_l2.send(fdata) |
| | | # 记录新增加的代码 |
| | | codes = set([x[0] for x in datas]) |
| | | add_codes = codes - __latest_subscript_codes |
| | | __latest_subscript_codes.clear() |
| | | for c in codes: |
| | | __latest_subscript_codes.add(c) |
| | | logger_local_huaxin_l1.info(f"新增加订阅的代码:{add_codes}") |
| | | |
| | | |
| | | def run(pipe_l2): |
| | |
| | | codes_sz = [] |
| | | for i in range(15): |
| | | try: |
| | | codes_sh, codes_sz = get_level1_codes() |
| | | codes_sh, codes_sz = l1_subscript_codes_manager.get_codes() |
| | | logger_local_huaxin_l1.info(f"获取上证,深证代码数量:sh-{len(codes_sh)} sz-{len(codes_sz)}") |
| | | break |
| | | except Exception as e: |
| | |
| | | if len(level1_data_dict) < 1: |
| | | continue |
| | | # 根据涨幅排序 |
| | | |
| | | # (代码,现价,涨幅,量,时间) |
| | | list_ = [level1_data_dict[k] for k in level1_data_dict] |
| | | flist = [] |
| | | for d in list_: |