"""
|
涨停数据过滤器
|
"""
|
|
# 判断是龙几,判断是否涨停,判断是否炸板,加载分数
|
from db.redis_manager_delegate import RedisUtils
|
from utils import tool
|
from db import redis_manager_delegate as redis_manager
|
from third_data.kpl_data_manager import KPLDataManager
|
from third_data.kpl_util import KPLDataType
|
|
__kplDataManager = KPLDataManager()
|
|
|
# 忽略代码管理器
|
class IgnoreCodeManager:
|
__redisManager = redis_manager.RedisManager(3)
|
|
def __get_redis(self):
|
return self.__redisManager.getRedis()
|
|
def ignore_code(self, type, code):
|
RedisUtils.sadd(self.__get_redis(), f"kp_ignore_codes_{type}", code)
|
RedisUtils.expire(self.__get_redis(), f"kp_ignore_codes_{type}", tool.get_expire())
|
|
def list_ignore_codes(self, type):
|
return RedisUtils.smembers(self.__get_redis(), f"kp_ignore_codes_{type}")
|
|
|
# 获取涨停顺序(按涨停原因分组)
|
def get_limit_up_time_rank_dict(datas):
|
datas.sort(key=lambda x: int(x[5]))
|
max_record = {}
|
rank_dict = {}
|
for d in datas:
|
if d[2] not in max_record:
|
max_record[d[2]] = 0
|
max_record[d[2]] = max_record[d[2]] + 1
|
rank_dict[d[3]] = max_record[d[2]]
|
return rank_dict
|
|
|
# 获取涨停信息
|
def get_limit_up_info(codes):
|
limit_up_data = __kplDataManager.get_data(KPLDataType.LIMIT_UP)
|
limit_up_codes = []
|
if limit_up_data:
|
limit_up_codes = set([val[0] for val in limit_up_data])
|
open_limit_up_data = __kplDataManager.get_data(KPLDataType.OPEN_LIMIT_UP)
|
open_limit_up_codes = set()
|
if open_limit_up_data:
|
open_limit_up_codes = set([val[0] for val in open_limit_up_data])
|
dict_ = {}
|
for code in codes:
|
dict_[code] = (code in limit_up_codes, code in open_limit_up_codes)
|
return dict_, limit_up_codes, open_limit_up_codes
|
|
if __name__ == "__main__":
|
get_limit_up_info()
|