| | |
| | | from code_attribute import gpcode_manager |
| | | |
| | | # 代码股性记录管理 |
| | | from db import redis_manager |
| | | from db import redis_manager_delegate as redis_manager |
| | | from utils import tool |
| | | from db.redis_manager_delegate import RedisUtils |
| | | from utils.tool import CodeDataCacheUtil |
| | |
| | | p11 = __is_latest_open_limit_up(code, record_datas, 5) |
| | | # 90天内是否有涨停 |
| | | p12 = __has_limit_up(code, record_datas, 90) |
| | | # 最近5天是否跌停 |
| | | p13 = __is_latest_limit_down(code, record_datas, 5) |
| | | # 上个交易日是否跌幅过大 |
| | | p13 = __is_pre_day_limit_rate_too_low(code, record_datas) |
| | | # 60个交易日是否曾涨停 |
| | | p14 = __has_limited_up(code, record_datas, 60) |
| | | # 昨日是否涨停过 |
| | | p15 = __has_limited_up(code, record_datas, 1) |
| | | |
| | | return p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 |
| | | return p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 |
| | | |
| | | |
| | | # 是否具有K线形态 |
| | |
| | | # if max_price > float(limit_up_price): |
| | | # return False |
| | | rate = (float(limit_up_price) - min_price_info[1]["close"]) / min_price_info[1]["close"] |
| | | if rate >= 0.319: |
| | | THRESHOLD_RATE = 0.319*2 if tool.is_ge_code(code) else 0.319 |
| | | if rate >= THRESHOLD_RATE: |
| | | return True, rate |
| | | return False, rate |
| | | |
| | |
| | | def __is_new_top(code, limit_up_price, datas): |
| | | datas = copy.deepcopy(datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | datas = datas[-80:] |
| | | datas = datas[-60:] |
| | | max_price = 0 |
| | | for data in datas: |
| | | if max_price < data["high"]: |
| | |
| | | return False |
| | | |
| | | |
| | | def __is_pre_day_limit_rate_too_low(code, datas): |
| | | """ |
| | | 上个交易日是否跌幅过大 |
| | | @param code: |
| | | @param datas: |
| | | @return: |
| | | """ |
| | | datas = copy.deepcopy(datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | items = datas[-1:] |
| | | for item in items: |
| | | # 是否有跌停 |
| | | # 获取当日涨幅 |
| | | rate = (item["close"] - item["pre_close"])/item["pre_close"] |
| | | threshold_rate_ = round(0 - ((1 - tool.get_limit_down_rate(code))*0.9), 2) |
| | | if rate < threshold_rate_: |
| | | return True |
| | | return False |
| | | |
| | | |
| | | # V字形 |
| | | def __is_v_model(code, datas): |
| | | datas = copy.deepcopy(datas) |
| | |
| | | # 是否涨停 |
| | | def __is_limit_up(code, data): |
| | | limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(code, data["pre_close"])) |
| | | return abs(limit_up_price - data["close"]) < 0.001 |
| | | return abs(limit_up_price - data["close"]) < 0.009 |
| | | |
| | | |
| | | # 是否涨停过 |
| | | def __is_limited_up(code, data): |
| | | limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(code, data["pre_close"])) |
| | | return abs(limit_up_price - data["high"]) < 0.001 |
| | | return abs(limit_up_price - data["high"]) < 0.009 |
| | | |
| | | |
| | | # 多少天内是否有涨停/曾涨停 |
| | |
| | | for i in range(0, len(datas)): |
| | | item = datas[i] |
| | | if __is_limit_up(code, item): |
| | | return True |
| | | return False |
| | | |
| | | |
| | | # 多少天内是否曾涨停 |
| | | def __has_limited_up(code, datas, day_count): |
| | | datas = copy.deepcopy(datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | if len(datas) > day_count: |
| | | datas = datas[0 - day_count:] |
| | | if len(datas) >= 1: |
| | | for i in range(0, len(datas)): |
| | | item = datas[i] |
| | | if __is_limited_up(code, item): |
| | | return True |
| | | return False |
| | | |
| | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | HighIncreaseCodeManager().add_code("000333") |
| | | print(HighIncreaseCodeManager().is_in("000333")) |
| | | print(HighIncreaseCodeManager().is_in("000222")) |
| | | code = "000333" |
| | | threshold_rate = 0 - ((1 - tool.get_limit_down_rate(code)) * 0.9) |
| | | print(threshold_rate) |