Administrator
2023-07-24 0e68e24f54db11d340785b17570fff2bc5fc7ac6
l2/l2_data_manager_new.py
@@ -5,7 +5,7 @@
    limit_up_time_manager, global_data_loader, gpcode_manager
import constant
from l2.huaxin import l2_huaxin_util, huaxin_delegate_postion_manager
from third_data import kpl_data_manager
from third_data import kpl_data_manager, block_info
from utils import global_util, ths_industry_util, tool
import l2_data_util
from db import redis_manager
@@ -237,6 +237,7 @@
            # 获取下单位置
            place_order_index = huaxin_delegate_postion_manager.get_l2_place_order_position(code, datas)
            if place_order_index:
                logger_l2_process.info("code:{} 获取到下单真实位置:{}", code, place_order_index)
                DCancelBigNumComputer.set_real_order_index(code, place_order_index)
            __start_time = round(t.time() * 1000)
@@ -295,6 +296,9 @@
            cls.volume_rate_info[code] = (volume_rate, volume_rate_index)
            latest_time = add_datas[len(add_datas) - 1]["val"]["time"]
            __start_time = l2_data_log.l2_time(code, round(t.time() * 1000) - __start_time,
                                               "l2数据准备时间")
            # 时间差不能太大才能处理
            if not l2_trade_util.is_in_forbidden_trade_codes(code):
                # 判断是否已经挂单
@@ -556,6 +560,7 @@
                                    buy_single_index, buy_exec_index, cls.volume_rate_info[code][0],
                                    cls.__l2PlaceOrderParamsManagerDict[code].score, params_desc)
            except Exception as e:
                logger_l2_error.exception(e)
                l2_log.debug(code, "执行买入异常:{}", str(e))
                pass
            finally:
@@ -734,6 +739,10 @@
            return False, True, f"该代码被暂停交易"
        limit_up_price = gpcode_manager.get_limit_up_price(code)
        if float(limit_up_price) >= 40:
            return False, True, "股价大于40块"
        if constant.L2_SOURCE_TYPE == constant.L2_SOURCE_TYPE_HUAXIN:
            trade_price = current_price_process_manager.get_trade_price(code)
            if trade_price is None:
@@ -833,31 +842,22 @@
        if float(limit_up_price) >= 40:
            return False, True, "股价大于40块"
        # 获取涨停
        latest_2_day_limit_up_datas_temp = kpl_data_manager.get_current_limit_up_data_records(2)
        latest_2_day_limit_up_datas = []
        for d in latest_2_day_limit_up_datas_temp:
            latest_2_day_limit_up_datas.extend(d[1])
        # 9:35之前买大市值(>=80亿)票
        if int(tool.get_now_date_str("%Y%m%d")) < int("093500"):
            zyltgb = global_util.zyltgb_map.get(code)
            if zyltgb is None:
                global_data_loader.load_zyltgb()
                zyltgb = global_util.zyltgb_map.get(code)
            if zyltgb >= 80 * 100000000:
                return True, False, "{9:30:00-9:35:00}自由市值≥80亿"
        # 判断板块
        plate_can_buy, msg, block_type = CodePlateKeyBuyManager.can_buy(code,
                                                                        kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas,
                                                                        latest_2_day_limit_up_datas,
                                                                        kpl_data_manager.KPLLimitUpDataRecordManager.total_datas)
        plate_can_buy, msg = CodePlateKeyBuyManager.can_buy(code,
                                                            kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas,
                                                            kpl_data_manager.KPLLimitUpDataRecordManager.total_datas,block_info.get_before_blocks_dict())
        if not plate_can_buy:
            return False, True, msg
        has_k_format = is_has_k_format(score_info)
        # 独苗
        if block_type == CodePlateKeyBuyManager.BLOCK_TYPE_START_UP:
            # 必须满足(分数≥150且上板时量≥40 % 且有K线形态)或(具有辨识度)的才能买
            if has_k_format and score_index >= 0 and volume_rate_info[0] >= 0.4:
                return True, False, "独苗:分数≥150且上板时量≥40% 且有K线形态"
            elif score_info[1][3][8][0]:
                return True, False, "独苗:具有辨识度"
            else:
                return False, True, f"独苗:不满足买入条件"
        else:
            return True, False, msg
        return True, False, msg
        # if volume_rate_info[0] < 0.4:
        #     return False, True, f"量大于40%才下单,量比:{volume_rate_info[0]}"