Administrator
2023-08-23 f273791e2337215a2a3bd7e3c46c23c69bcb1c7c
huaxin_client/l1_client.py
@@ -5,7 +5,7 @@
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
@@ -25,38 +25,6 @@
        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):
@@ -149,6 +117,9 @@
        #        pMarketDataField.AskVolume1, pMarketDataField.UpperLimitPrice, pMarketDataField.LowerLimitPrice))
__latest_subscript_codes = set()
def __upload_codes_info(pipe_l2, datas):
    if not tool.is_trade_time():
        return
@@ -158,6 +129,13 @@
        {"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):
@@ -166,7 +144,7 @@
    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:
@@ -204,6 +182,8 @@
            if len(level1_data_dict) < 1:
                continue
            # 根据涨幅排序
            # (代码,现价,涨幅,量,时间)
            list_ = [level1_data_dict[k] for k in level1_data_dict]
            flist = []
            for d in list_: