| | |
| | | # l2交易因子 |
| | | import global_util |
| | | |
| | | |
| | | class L2TradeFactorUtil: |
| | | # 获取基础m值,返回单位为元 |
| | | @classmethod |
| | |
| | | # 自由流通股本影响比例 |
| | | 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因子归因数据 |
| | |
| | | # 是否为大单 |
| | | @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) |