Administrator
2023-07-26 3feed17ec1a1bf174d8ddd05741d0eab9b2b13b4
l2/huaxin/huaxin_target_codes_manager.py
@@ -2,45 +2,98 @@
华鑫目标代码管理
"""
import json
import socket
from code_attribute import global_data_loader
from code_attribute.code_data_util import ZYLTGBUtil
from db import redis_manager
from utils import tool
from third_data import kpl_data_manager, kpl_api
from utils import tool, global_util, socket_util
redisManager = redis_manager.RedisManager(0)
def __get_redis():
    return redisManager.getRedis()
# 华鑫Level2订阅代码管理
class HuaXinL2SubscriptCodesManager:
    __L2_CODE_KEY = "huaxin_l2_code_list"
    __SUBSCRIPT_KEY = "huaxin_subscript_codes"
    @classmethod
    def __get_redis(cls):
        return redisManager.getRedis()
__L2_CODE_KEY = "huaxin_l2_code_list"
    @classmethod
    def clear(cls):
        cls.__get_redis().delete(cls.__L2_CODE_KEY)
__SUBSCRIPT_KEY = "huaxin_subscript_codes"
    @classmethod
    def push(cls, datas):
        cls.__get_redis().lpush(cls.__L2_CODE_KEY, json.dumps(datas))
    @classmethod
    def pop(cls):
        val = cls.__get_redis().lpop(cls.__L2_CODE_KEY)
        if val:
            return json.loads(val)
        return val
def clear():
    __get_redis().delete(__L2_CODE_KEY)
    # 设置订阅代码
    @classmethod
    def save_subscript_codes(cls, codes):
        cls.__get_redis().setex(cls.__SUBSCRIPT_KEY, tool.get_expire(), json.dumps(codes))
def push(datas):
    __get_redis().lpush(__L2_CODE_KEY, json.dumps(datas))
def pop():
    val = __get_redis().lpop(__L2_CODE_KEY)
    if val:
    # 获取订阅的代码
    @classmethod
    def get_subscript_codes(cls):
        val = cls.__get_redis().get(cls.__SUBSCRIPT_KEY)
        if not val:
            return []
        return json.loads(val)
    return val
# 设置订阅代码
def save_subscript_codes(codes):
    __get_redis().setex(__SUBSCRIPT_KEY, tool.get_expire(), json.dumps(codes))
# 根据华鑫L2选出目标代码
class HuaXinL1TargetCodesManager:
    @classmethod
    def set_level_1_codes_datas(cls, datas):
        yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
        # 订阅的代码
        flist = []
        for d in datas:
            code = d[0]
            # 格式 (代码,现价,涨幅,量,更新时间)
            # 剔除昨日涨停的票
            if code in yesterday_codes:
                continue
            # 剔除股价大于40块的票
            if d[1] > 40:
                continue
            # 获取自由流通市值
            if code not in global_util.zyltgb_map:
                zylt = ZYLTGBUtil.get(code)
                if zylt:
                    global_util.zyltgb_map[code] = zylt
            if code not in global_util.zyltgb_map:
                zylt = kpl_api.getZYLTAmount(code)
                if zylt:
                    # 保存自由流通股本
                    ZYLTGBUtil.save(code, zylt // 10000, 1)
                    global_util.zyltgb_map[code] = int(zylt)
            zyltgb = 0
            if code in global_util.zyltgb_map:
                zyltgb = global_util.zyltgb_map[code]
# 获取订阅的代码
def get_subscript_codes():
    val = __get_redis().get(__SUBSCRIPT_KEY)
    if not val:
        return []
    return json.loads(val)
            fitem = {"code": code, "price": d[1], "volume": d[3] // 10000, "volumeUnit": 1, "time": "00:00:00",
                     "zyltgb": zyltgb, "zyltgbUnit": 1}
            flist.append(fitem)
        fdata = {"type": 22, "data": flist}
        addr, port = "", 9001
        sk = socket.socket()  # 生成socket,连接server
        sk.connect((addr, port))
        sk.sendall(socket_util.load_header(json.dumps(fdata).encode('utf8')))
        result, header = socket_util.recv_data(sk)
        if result:
            result = json.loads(result)
            if result["code"] != 0:
                raise Exception(result["msg"])