| | |
| | | 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 |
| | |
| | | p10 = is_latest_10d_max_volume_at_latest_2d(code, record_datas) |
| | | # 最近5天是否炸板 |
| | | p11 = __is_latest_open_limit_up(code, record_datas, 5) |
| | | # 30天内是否有涨停 |
| | | p12 = __has_limit_up(code, record_datas, 30) |
| | | # 最近5天是否跌停 |
| | | p13 = __is_latest_limit_down(code, record_datas, 5) |
| | | # 90天内是否有涨停 |
| | | p12 = __has_limit_up(code, record_datas, 90) |
| | | # 上个交易日是否跌幅过大 |
| | | 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"] |
| | | print(rate) |
| | | 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 |
| | | |
| | |
| | | max_limit_up_info = x |
| | | |
| | | if not max_limit_up_info or max_limit_up_info[0] < 3: |
| | | print("无3连板") |
| | | return False |
| | | start_index = max_limit_up_info[1] |
| | | max_price_info = [0, None] |
| | |
| | | for i in range(max_price_info[1] + 1, len(datas)): |
| | | item = datas[i] |
| | | if item["low"] < lowest_price_threhhold: |
| | | print("回踩足够") |
| | | return False |
| | | return True |
| | | |
| | |
| | | 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"]: |
| | |
| | | min_price = 1000000 |
| | | for i in range(len(datas) - 5, len(datas)): |
| | | item = datas[i] |
| | | print(item) |
| | | limit_up_price = float(gpcode_manager.get_limit_up_price_by_preprice(code, item["pre_close"])) |
| | | if abs(limit_up_price - item["high"]) < 0.001 and abs( |
| | | limit_up_price - datas[i - 1]["high"]) >= 0.001: |
| | |
| | | limit_down_price = float(gpcode_manager.get_limit_down_price_by_preprice(code, item["pre_close"])) |
| | | if abs(limit_down_price - item["close"]) < 0.001: |
| | | # 跌停 |
| | | return True |
| | | 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 |
| | | |
| | |
| | | # 是否涨停 |
| | | 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 |
| | | |
| | | |
| | | # 多少天内是否有涨停/曾涨停 |
| | | def __has_limit_up(code, datas, day_count): |
| | | datas = copy.deepcopy(datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | datas = datas[0 - day_count:] |
| | | 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_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) |