Administrator
2024-03-28 e14478c628ebb3fdbd4d9f651be3d976f7dc8fb7
代码成交之后不移除L2监听/删除量对买不买的影响/S撤bug修复
5个文件已修改
213 ■■■■■ 已修改文件
l2/l2_data_manager_new.py 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_transaction_data_manager.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/test_sell.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/data_server.py 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/current_price_process_manager.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py
@@ -1055,34 +1055,36 @@
        if is_in_strong_time_30 and is_best_zylt:
            # 强势30分钟,最优市值, 有可以下单的板块,不看量
            return True, False, can_buy_result[2]
        # 注释量的影响
        # if k_format and (k_format[1][0] or k_format[3][0]) and len(k_format) >= 12 and k_format[11]:
        #     # 破前高/接近前高且30天内有涨停
        #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
        #         return False, True, f"股价创新高或者逼近前高且30天内有涨停,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
        if k_format and (k_format[1][0] or k_format[3][0]) and len(k_format) >= 12 and k_format[11]:
            # 破前高/接近前高且30天内有涨停
            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                return False, True, f"股价创新高或者逼近前高且30天内有涨停,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
        if HighIncreaseCodeManager().is_in(code):
            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.59:
                return False, True, f"5天内3次涨停,量未达到59%({cls.volume_rate_info[code][0]})"
        # 注释量的影响
        # if HighIncreaseCodeManager().is_in(code):
        #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.59:
        #         return False, True, f"5天内3次涨停,量未达到59%({cls.volume_rate_info[code][0]})"
        msg_list = []
        if is_in_strong_time:
            msg_list.append("强势10分钟")
            # 上5个交易日有炸板之后
            if has_open_limit_up_in_5:
                if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.15:
                    return False, True, f"强势10分钟,上5个交易日炸板,量未达到{0.15}({cls.volume_rate_info[code][0]})"
            # 上5个交易日有跌停
            if has_limit_down_in_5:
                if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.15:
                    return False, True, f"强势10分钟,上5个交易日跌停,量未达到{0.15}({cls.volume_rate_info[code][0]})"
            # 获取量的参考日期
            if code in global_util.max60_volumn:
                day = global_util.max60_volumn[code][1]
                if day in HistoryKDatasUtils.get_latest_trading_date_cache(5):
                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.15 and not is_special:
                        return False, True, f"强势10分钟,参考量在最近5天,无辨识度,量未达到0.15({cls.volume_rate_info[code][0]})"
            # 注释量的影响
            # if has_open_limit_up_in_5:
            #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.15:
            #         return False, True, f"强势10分钟,上5个交易日炸板,量未达到{0.15}({cls.volume_rate_info[code][0]})"
            #
            # # 上5个交易日有跌停
            # if has_limit_down_in_5:
            #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.15:
            #         return False, True, f"强势10分钟,上5个交易日跌停,量未达到{0.15}({cls.volume_rate_info[code][0]})"
            #
            # # 获取量的参考日期
            # if code in global_util.max60_volumn:
            #     day = global_util.max60_volumn[code][1]
            #     if day in HistoryKDatasUtils.get_latest_trading_date_cache(5):
            #         if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.15 and not is_special:
            #             return False, True, f"强势10分钟,参考量在最近5天,无辨识度,量未达到0.15({cls.volume_rate_info[code][0]})"
            # 独苗
            if not can_buy_result[0] and can_buy_result[1]:
@@ -1091,27 +1093,29 @@
                    # 如果没有辨识度才不买
                    if not is_special:
                        return False, True, f"强势10分钟,无辨识度, 独苗({can_buy_result[4]})不下单({can_buy_result[4]})自由流通市值({zyltgb_as_yi})不是特优市值"
                if k_format and (k_format[1][0] or k_format[3][0]):
                    msg_list.append("股价创新高或者逼近前高")
                    # 股价创新高或者逼近前高
                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                        return False, True, f"强势10分钟,独苗({can_buy_result[4]}),股价创新高或者逼近前高,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
                else:
                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
                        0] and not is_special:
                        return False, True, f"强势10分钟,无辨识度,独苗({can_buy_result[4]}),当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
                # 注释量的影响
                # if k_format and (k_format[1][0] or k_format[3][0]):
                #     msg_list.append("股价创新高或者逼近前高")
                #     # 股价创新高或者逼近前高
                #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                #         return False, True, f"强势10分钟,独苗({can_buy_result[4]}),股价创新高或者逼近前高,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
                # else:
                #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
                #         0] and not is_special:
                #         return False, True, f"强势10分钟,无辨识度,独苗({can_buy_result[4]}),当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
            else:
                msg_list.append("非独苗")
                if not is_better_zylt:
                    msg_list.append("不满足自由流通")
                    if k_format and (k_format[1][0] or k_format[3][0]):
                        # 股价创新高或者逼近前高
                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                            return False, True, f"强势10分钟,后排,不满足自由市值,股价创新高或者逼近前高,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
                    else:
                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
                            0] and not is_special:
                            return False, True, f"强势10分钟,后排,无辨识度,不满足自由市值,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
                    # 注释量的影响
                    # if k_format and (k_format[1][0] or k_format[3][0]):
                    #     # 股价创新高或者逼近前高
                    #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                    #         return False, True, f"强势10分钟,后排,不满足自由市值,股价创新高或者逼近前高,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
                    # else:
                    #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
                    #         0] and not is_special:
                    #         return False, True, f"强势10分钟,后排,无辨识度,不满足自由市值,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
                else:
                    msg_list.append("满足自由流通")
                    # 后排,满足自由流通市值需要下单
@@ -1119,57 +1123,60 @@
            return True, False, can_buy_result[2]
        else:
            # 上5个交易日有炸板之后
            if has_open_limit_up_in_5:
                if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29:
                    return False, True, f"非强势10分钟,上5个交易日炸板,量未达到{0.29}({cls.volume_rate_info[code][0]})"
            # 注释量的影响
            # # 上5个交易日有炸板之后
            # if has_open_limit_up_in_5:
            #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29:
            #         return False, True, f"非强势10分钟,上5个交易日炸板,量未达到{0.29}({cls.volume_rate_info[code][0]})"
            #
            # # 上5个交易日有跌停
            # if has_limit_down_in_5:
            #     if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29:
            #         return False, True, f"非强势10分钟,上5个交易日跌停,量未达到{0.29}({cls.volume_rate_info[code][0]})"
            # 上5个交易日有跌停
            if has_limit_down_in_5:
                if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29:
                    return False, True, f"非强势10分钟,上5个交易日跌停,量未达到{0.29}({cls.volume_rate_info[code][0]})"
            # 获取量的参考日期
            if code in global_util.max60_volumn:
                day = global_util.max60_volumn[code][1]
                if day in HistoryKDatasUtils.get_latest_trading_date_cache(5):
                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29 and not is_special:
                        return False, True, f"参考量在最近5天,无辨识度,量未达到0.29({cls.volume_rate_info[code][0]})"
            # 注释量的影响
            # # 获取量的参考日期
            # if code in global_util.max60_volumn:
            #     day = global_util.max60_volumn[code][1]
            #     if day in HistoryKDatasUtils.get_latest_trading_date_cache(5):
            #         if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29 and not is_special:
            #             return False, True, f"参考量在最近5天,无辨识度,量未达到0.29({cls.volume_rate_info[code][0]})"
            # 非强势10分钟只买主线
            if not can_buy_result[0] and can_buy_result[1]:
                if not is_special and not is_best_zylt:
                    return False, True, f"非强势10分钟,无辨识度,非特优市值,独苗({can_buy_result[4]})不下单"
            if can_buy_result[3]:
                # 强势主线
                if not is_better_zylt:
                    if k_format and (k_format[1][0] or k_format[3][0]):
                        # 股价创新高或者逼近前高
                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                            return False, True, f"非强势10分钟,强势主线后排,不满足自由市值,股价创新高或者逼近前高,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
                    else:
                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
                            0] and not is_special:
                            return False, True, f"非强势10分钟,强势主线后排,不满足自由市值,无辨识度,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
                else:
                    if k_format and (k_format[1][0] or k_format[3][0]):
                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[0]:
                            return False, True, f"非强势10分钟,强势主线后排,满足自由市值,股价创新高或者逼近前高, 当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
            else:
                # 非强势主线
                if not is_better_zylt:
                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
                        1] and not is_special:
                        return False, True, f"非强势10分钟,非强势主线后排【主线后排】,不满足自由市值,无辨识度, 当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
                else:
                    if k_format and (k_format[1][0] or k_format[3][0]):
                        # 股价创新高或者逼近前高
                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                            return False, True, f"非强势10分钟,非强势主线后排【主线后排】,满足自由市值,股价创新高或者逼近前高, 当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
                    else:
                        if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
                            0] and not is_special:
                            return False, True, f"非强势10分钟,非强势主线后排【主线后排】, 满足自由市值,无辨识度,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
            # 注释量的影响
            # if can_buy_result[3]:
            #     # 强势主线
            #     if not is_better_zylt:
            #         if k_format and (k_format[1][0] or k_format[3][0]):
            #             # 股价创新高或者逼近前高
            #             if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
            #                 return False, True, f"非强势10分钟,强势主线后排,不满足自由市值,股价创新高或者逼近前高,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
            #         else:
            #             if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
            #                 0] and not is_special:
            #                 return False, True, f"非强势10分钟,强势主线后排,不满足自由市值,无辨识度,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
            #     else:
            #         if k_format and (k_format[1][0] or k_format[3][0]):
            #             if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[0]:
            #                 return False, True, f"非强势10分钟,强势主线后排,满足自由市值,股价创新高或者逼近前高, 当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
            # else:
            #     # 非强势主线
            #     if not is_better_zylt:
            #         if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
            #             1] and not is_special:
            #             return False, True, f"非强势10分钟,非强势主线后排【主线后排】,不满足自由市值,无辨识度, 当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
            #     else:
            #         if k_format and (k_format[1][0] or k_format[3][0]):
            #             # 股价创新高或者逼近前高
            #             if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
            #                 return False, True, f"非强势10分钟,非强势主线后排【主线后排】,满足自由市值,股价创新高或者逼近前高, 当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[1]}"
            #         else:
            #             if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[
            #                 0] and not is_special:
            #                 return False, True, f"非强势10分钟,非强势主线后排【主线后排】, 满足自由市值,无辨识度,当日量比({cls.volume_rate_info[code][0]})小于{volume_rate_thresholds[0]}"
            return True, False, can_buy_result[2]
    @classmethod
l2/l2_transaction_data_manager.py
@@ -153,7 +153,6 @@
        big_sell_orders = []
        temp_sell_order_ids = set()
        # 统计已经结算出的大单
        print(f"总大单数量:{len(total_big_sell_datas)}")
        for i in range(len(total_big_sell_datas) - 1, -1, -1):
            bd = total_big_sell_datas[i]
            if bd[0] != latest_sell_order_info[0]:
@@ -184,6 +183,7 @@
            if latest_sell_order_info[0] not in temp_sell_order_ids:
                big_sell_orders.append(latest_sell_order_info)
                temp_sell_order_ids.add(latest_sell_order_info[0])
                total_sell_info[0] += int(latest_sell_order_info[1] * latest_sell_order_info[2])
        big_sell_orders.reverse()
        total_sell_info[1] = big_sell_orders
test/test_sell.py
@@ -16,15 +16,21 @@
def test_sell_order_info():
    code = "002562"
    code = "603967"
    date = tool.get_now_date_str()
    data_map = log_export.load_huaxin_transaction_map(date=date)
    datas = data_map.get(code)
    for d in datas:
    start_print = False
    for i in range(len(datas)):
        d = datas[i]
        if d[0][7] == 11181370:
            start_print = True
        if start_print:
            print(d)
        big_sell_order_info = HuaXinSellOrderStatisticManager.add_transaction_datas(code, d)
        if big_sell_order_info[0] < 50 * 10000:
            continue
        print(big_sell_order_info)
        # print(big_sell_order_info)
if __name__ == '__main__':
third_data/data_server.py
@@ -8,6 +8,7 @@
import dask
from code_attribute.gpcode_manager import BlackListCodeManager, CodePrePriceManager
from l2.l2_transaction_data_manager import HuaXinBuyOrderManager
from log_module.log import logger_system, logger_debug, logger_kpl_limit_up
from utils import global_util, tool, data_export_util, init_data_util
from code_attribute import gpcode_manager
@@ -373,8 +374,15 @@
            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
            code = ps_dict['code']
            trade_progress, is_default = transaction_progress.TradeBuyQueue().get_traded_index(code)
            # 获取正在成交, 计算成交进度
            dealing_info = HuaXinBuyOrderManager.get_dealing_order_info(code)
            percent = 0
            if dealing_info:
                total_datas = l2_data_util.local_today_datas.get(code)
                if str(total_datas[trade_progress]['val']["orderNo"]) == str(dealing_info[0]):
                    percent = int(dealing_info[1] / total_datas[trade_progress]['val']['num'])
            response_data = json.dumps(
                {"code": 0, "data": {"trade_progress": trade_progress, "is_default": is_default}})
                {"code": 0, "data": {"trade_progress": trade_progress, "is_default": is_default, "percent": percent}})
        elif url.path == "/get_l_cancel_datas":
            # 最新的l撤数据
            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
trade/current_price_process_manager.py
@@ -102,8 +102,13 @@
        _delete_list = []
        for item in new_code_list:
            if l2_trade_util.is_in_forbidden_trade_codes(item[1]) or item[0] < 0:
                _delete_list.append(item)
            if l2_trade_util.is_in_forbidden_trade_codes(
                    item[1]) or item[0] < 0:
                # 在(黑名单)/(涨幅小于)的数据
                if trade_manager.CodesTradeStateManager().get_trade_state_cache(
                        item[1]) != trade_manager.TRADE_STATE_BUY_SUCCESS:
                    # 没成交才会加入删除
                    _delete_list.append(item)
        for item in _delete_list:
            new_code_list.remove(item)
@@ -146,7 +151,8 @@
                        min_volume = int(round(50 * 10000 / limit_up_price))
                        # 传递笼子价
                        add_datas.append(
                            (d, min_volume, limit_up_price, round(tool.get_shadow_price(limit_up_price), 2),tool.get_buy_volume(limit_up_price)))
                            (d, min_volume, limit_up_price, round(tool.get_shadow_price(limit_up_price), 2),
                             tool.get_buy_volume(limit_up_price)))
                    huaxin_target_codes_manager.HuaXinL2SubscriptCodesManager.push(add_datas, request_id)
            except Exception as e:
                logging.exception(e)