| | |
| | | |
| | | |
| | | # 是否涨得太高 |
| | | def is_up_too_high(record_datas): |
| | | def is_up_too_high_in_10d(record_datas): |
| | | datas = copy.deepcopy(record_datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | datas = datas[-10:] |
| | |
| | | return False |
| | | |
| | | |
| | | # 120 天内是否长得太高 |
| | | def is_up_too_high_in_120d(record_datas): |
| | | datas = copy.deepcopy(record_datas) |
| | | datas.sort(key=lambda x: x["bob"]) |
| | | datas = datas[-120:] |
| | | today_limit_up_price = round(float(gpcode_manager.get_limit_up_price_by_preprice(datas[-1]["close"])), 2) |
| | | max_price = 0 |
| | | for data in datas: |
| | | if data["high"] > max_price: |
| | | max_price = data["high"] |
| | | if today_limit_up_price <= max_price: |
| | | return False |
| | | |
| | | # 计算120天的均价 |
| | | total_amount = 0 |
| | | total_volume = 0 |
| | | for data in datas: |
| | | total_amount += data["amount"] |
| | | total_volume += data["volume"] |
| | | average_price = round(total_amount / total_volume, 2) |
| | | if (today_limit_up_price - average_price) / average_price > 0.3: |
| | | return True |
| | | else: |
| | | return False |
| | | |
| | | |
| | | # 是否有涨停 |
| | | def get_first_limit_up_count(datas): |
| | | datas = copy.deepcopy(datas) |
| | |
| | | volumes_data[:90])) |
| | | logger_first_code_record.info("{} 获取到首板60天最大量:{}", code, volumes) |
| | | code_volumn_manager.set_histry_volumn(code, volumes[0], volumes[1], volumes[2]) |
| | | if code_nature_analyse.is_up_too_high(volumes_data): |
| | | if code_nature_analyse.is_up_too_high_in_10d(volumes_data): |
| | | # 判断是否太高 |
| | | l2_trade_util.forbidden_trade(code, "股价长得太高") |
| | | |
| | | if code_nature_analyse.is_up_too_high_in_120d(volumes_data): |
| | | # 判断是否太高 |
| | | l2_trade_util.forbidden_trade(code, "120天内股价长得太高") |
| | | |
| | | # 判断K线形态 |
| | | # is_has_k_format, msg = code_nature_analyse.is_has_k_format( |
| | | # gpcode_manager.get_limit_up_price(code), volumes_data) |
| | |
| | | # 获取近90天的最大量与最近的量 |
| | | # 获取最近一次涨停/涨停下一个交易日的最大值 |
| | | def get_volumns_by_code(code, count=60) -> object: |
| | | datas = HistoryKDatasUtils.get_history_tick_n(code, count, "open,high,low,close,volume,pre_close,bob") |
| | | datas = HistoryKDatasUtils.get_history_tick_n(code, count, "open,high,low,close,volume,pre_close,bob,amount") |
| | | # 计算 |
| | | datas.sort(key=lambda x: x["bob"], reverse=True) |
| | | return datas |
| | |
| | | time.sleep(1.5) |
| | | |
| | | if __name__ == "__main__": |
| | | codes = gpcode_manager.FirstGPCodesManager().get_first_gp_codes() |
| | | codes = ["002270"] # gpcode_manager.FirstGPCodesManager().get_first_gp_codes() |
| | | for code in codes: |
| | | volumes_data = inited_data.get_volumns_by_code(code, 150) |
| | | print(code, code_nature_analyse.is_up_too_high(volumes_data)) |
| | | volumes_data = volumes_data[1:] |
| | | print(code, code_nature_analyse.is_up_too_high_in_120d(volumes_data)) |
| | | # try: |
| | | # global_data_loader.load_zyltgb() |
| | | # limit_up_price = float(gpcode_manager.get_limit_up_price(code)) |