Administrator
2022-09-18 b946684114d097e937b766f986d12c7eea8edce8
l2_trade_factor.py
@@ -1,4 +1,7 @@
# l2交易因子
import global_util
class L2TradeFactorUtil:
    # 获取基础m值,返回单位为元
    @classmethod
@@ -93,15 +96,45 @@
        # 自由流通股本影响比例
        zyltgb_rate = cls.get_zylt_rate(zyltgb)
        # 行业涨停影响比例
        industry_rate = cls.get_industry_rate(total_industry_limit_percent)
        industry_rate=0
        if total_industry_limit_percent is not None:
            industry_rate = cls.get_industry_rate(total_industry_limit_percent)
        # 量影响比例
        volumn_rate=cls.get_volumn_rate(volumn_day60_max,volumn_yest,volumn_today)
        volumn_rate = 0
        if volumn_day60_max is not None and volumn_yest is not None and volumn_today is not None:
            volumn_rate = cls.get_volumn_rate(volumn_day60_max, volumn_yest, volumn_today)
        # 涨停时间影响比例
        limit_up_time_rate=cls.get_limit_up_time_rate(limit_up_time)
        limit_up_time_rate=0
        if limit_up_time is not None:
            limit_up_time_rate = cls.get_limit_up_time_rate(limit_up_time)
        # 万手哥影响
        big_money_rate=cls.get_big_money_rate(big_money_num)
        big_money_rate = 0
        if big_money_num is not None:
            big_money_rate = cls.get_big_money_rate(big_money_num)
        print("zyltgb_rate:{} industry_rate:{} volumn_rate:{} limit_up_time_rate:{} big_money_rate:{}",zyltgb_rate,industry_rate,volumn_rate,limit_up_time_rate,big_money_rate)
        return 1-(zyltgb_rate+industry_rate+volumn_rate+limit_up_time_rate+big_money_rate);
        return 1 - (zyltgb_rate + industry_rate + volumn_rate + limit_up_time_rate + big_money_rate);
    @classmethod
    def compute_rate_by_code(cls, code):
        zyltgb = global_util.zyltgb_map.get(code)
        total_industry_limit_percent = global_util.industry_hot_num.get(code)
        volumn_day60_max, volumn_yest, volumn_today = global_util.max60_volumn.get(
            code), global_util.yesterday_volumn.get(code), global_util.today_volumn.get(code)
        limit_up_time = global_util.limit_up_time.get(code)
        big_money_num = global_util.big_money_num.get(code)
        return cls.compute_rate(zyltgb, total_industry_limit_percent, volumn_day60_max, volumn_yest, volumn_today,
                                limit_up_time, big_money_num)
    @classmethod
    def compute_m_value(cls, code):
        zyltgb = global_util.zyltgb_map.get(code)
        if zyltgb is None:
            print("没有获取到自由流通市值")
            return 10000000
        rate = cls.compute_rate_by_code(code)
        print("m值获取:",code,round(zyltgb*rate))
        return round(zyltgb*rate)
# l2因子归因数据
@@ -109,6 +142,9 @@
    # 是否为大单
    @classmethod
    def is_big_money(cls, data):
        if int(data["val"]["limitPrice"]) != 1:
            return False
        if int(data["val"]["num"]) >= 9000:
            return True
        money = round(float(data["val"]["price"]) * int(data["val"]["num"]) * 100)