| | |
| | | return False |
| | | |
| | | |
| | | # 连续涨停后是否回调不足够 |
| | | def is_continue_limit_up_not_enough_fall_dwon(record_datas): |
| | | # 10 天内是否有连续3板 |
| | | datas = copy.deepcopy(record_datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | datas = datas[0 - 10:] |
| | | limit_up_continue_count_info = None |
| | | max_limit_up_continue_count_info_list = [] # [连续涨停次数,涨停起点] |
| | | |
| | | for i in range(len(datas)): |
| | | item = datas[i] |
| | | if __is_limit_up(item): |
| | | if not limit_up_continue_count_info: |
| | | limit_up_continue_count_info = [1, i] |
| | | else: |
| | | limit_up_continue_count_info[0] += 1 |
| | | else: |
| | | if limit_up_continue_count_info: |
| | | max_limit_up_continue_count_info_list.append(limit_up_continue_count_info) |
| | | limit_up_continue_count_info = None |
| | | max_limit_up_info = None |
| | | for x in max_limit_up_continue_count_info_list: |
| | | if max_limit_up_info is None: |
| | | max_limit_up_info = x |
| | | if max_limit_up_info[0] <= x[0]: |
| | | 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(start_index, len(datas)): |
| | | item = datas[i] |
| | | if item["high"] > max_price_info[0]: |
| | | max_price_info = [item["high"], i] |
| | | # 计算回踩价格 |
| | | lowest_price_threhhold = round((1-0.28) * max_price_info[0], 2) |
| | | 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 get_first_limit_up_count(datas): |
| | | datas = copy.deepcopy(datas) |