Administrator
2024-01-11 6a533d27f5a8355bc3ad4f1910921205e7365cb6
移除测试/选票规则修改
5个文件已修改
123 ■■■■ 已修改文件
code_attribute/first_target_code_data_processor.py 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constant.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_server.py 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/buy_condition_util.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/first_target_code_data_processor.py
@@ -128,6 +128,18 @@
                k_format = code_nature_analyse.get_k_format(limit_up_price, volumes_data)
                code_nature_analyse.CodeNatureRecordManager().save_k_format(code, k_format)
                # 是否具有辨识度
                is_special = True if k_format and k_format[8][0] else False
                if not is_special:
                    if global_util.zyltgb_map.get(code) and global_util.zyltgb_map.get(code) > 31 * 100000000:
                        l2_trade_util.forbidden_trade(code,
                                                      f"无辨识度,自由流通市值({global_util.zyltgb_map.get(code) // 100000000})>31亿")
                        continue
                    elif limit_up_price and float(limit_up_price) >= 50:
                        l2_trade_util.forbidden_trade(code,
                                                      f"无辨识度,涨停价({limit_up_price})>50")
                        continue
                if code_nature_analyse.is_up_too_high_in_10d_with_limit_up(volumes_data):
                    # 判断是否太高
                    # l2_trade_util.forbidden_trade(code, "股价长得太高(5天内有3个涨停)")
@@ -142,10 +154,12 @@
                if code_nature_analyse.is_price_too_high_in_days(volumes_data, limit_up_price):
                    # 判断是否太高
                    l2_trade_util.forbidden_trade(code, "6天内股价长得太高")
                    continue
                if code_nature_analyse.is_continue_limit_up_not_enough_fall_dwon(volumes_data):
                    # 判断是否太高
                    l2_trade_util.forbidden_trade(code, "回踩不够")
                    continue
                if code_nature_analyse.is_have_latest_max_volume(volumes_data, 2):
                    # 最近2天是否是最高量
constant.py
@@ -134,7 +134,7 @@
# 华鑫L2的卡位数量
HUAXIN_L2_MAX_CODES_COUNT = 40
HUAXIN_L2_MAX_CODES_COUNT = 50
TRADE_WAY_HUAXIN = "huaxin"
TRADE_WAY_JUEJIN = "juejin"
l2/l2_data_manager_new.py
@@ -1006,22 +1006,20 @@
            1), buy_condition_util.get_volume_rate_by_level(2)
        k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code)
        # 是否有辨识度
        is_special = True if k_format and k_format[8][0] else False
        # 上5个交易日有炸板之后
        has_open_limit_up_in_5 = True if k_format and len(k_format) >= 11 and k_format[10] else False
        # 上5个交易日有跌停
        has_limit_down_in_5 = True if k_format and len(k_format) >= 13 and k_format[12] else False
        # 是否是强势10分钟
        is_in_strong_time = now_timestamp <= int("094000")
        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]}"
        # 上5个交易日有炸板之后
        if k_format and len(k_format) >= 11 and k_format[10]:
            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1]:
                return False, True, f"上5个交易日炸板,量未达到{volume_rate_thresholds[1]}({cls.volume_rate_info[code][0]})"
        # 上5个交易日有跌停
        if k_format and len(k_format) >= 13 and k_format[12]:
            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.29:
                return False, True, f"上5个交易日跌停,量未达到{0.29}({cls.volume_rate_info[code][0]})"
        is_special = True if k_format and k_format[8][0] else False
        # 获取市场行情
        situation = cls.__MarketSituationManager.get_situation_cache()
        zylt_threshold = buy_condition_util.get_zyltgb_threshold(situation)
@@ -1040,8 +1038,26 @@
            if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < 0.8:
                return False, True, f"5天内3次涨停,量未达到80%({cls.volume_rate_info[code][0]})"
        msg_list = []
        if now_timestamp <= int("094000"):
        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 not can_buy_result[0] and can_buy_result[1]:
                msg_list.append("独苗")
@@ -1055,7 +1071,8 @@
                    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:
                    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("非独苗")
@@ -1066,7 +1083,8 @@
                        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:
                        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("满足自由流通")
@@ -1074,12 +1092,23 @@
                    return True, False, can_buy_result[2]
            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_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] < volume_rate_thresholds[1] and not is_special:
                        return False, True, f"参考量在最近5天,无辨识度,量未达到{volume_rate_thresholds[1]}({cls.volume_rate_info[code][0]})"
                    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]:
@@ -1093,7 +1122,8 @@
                        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:
                        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]):
@@ -1102,7 +1132,8 @@
            else:
                # 非强势主线
                if zyltgb < zylt_threshold[2] or zyltgb > zylt_threshold[3]:
                    if code in cls.volume_rate_info and cls.volume_rate_info[code][0] < volume_rate_thresholds[1] and not is_special:
                    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]):
@@ -1110,7 +1141,8 @@
                        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:
                        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]
trade/huaxin/huaxin_trade_server.py
@@ -32,6 +32,7 @@
    l2_data_source_util
from l2.cancel_buy_strategy import LCancelBigNumComputer, GCancelBigNumComputer, SecondCancelBigNumComputer, \
    LCancelRateManager
from l2.code_price_manager import Buy1PriceManager
from l2.huaxin import huaxin_target_codes_manager
from l2.huaxin.huaxin_target_codes_manager import HuaXinL1TargetCodesManager
from l2.l2_data_listen_manager import L2DataListenManager
@@ -1086,8 +1087,8 @@
                    deal_list.sort(key=lambda x: x[1])
                    # TODO 测试
                    deal_list.clear()
                    fdata["available"] = fdata["total"]
                    # deal_list.clear()
                    # fdata["available"] = fdata["total"]
                    fdata["sell_orders"] = [k[0] for k in deal_list]
                    break
@@ -1205,7 +1206,35 @@
                            total_left_count += left_count
                            total_left_num += val["num"] * left_count
                    limit_up_price = gpcode_manager.get_limit_up_price(code)
                    buy1_money = Buy1PriceManager().get_latest_buy1_money(code)
                    if buy1_money is None:
                        buy1_money = 0
                    # 获取已经成交的大单数量
                    total_big_num = 0
                    total_big_count = 0
                    for i in range(0, trade_index):
                        val = data["val"]
                        if not L2DataUtil.is_limit_up_price_buy(val):
                            continue
                        # 是不是大单
                        if not l2_data_util.is_big_money(val):
                            continue
                        canceled_data = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_canceled_data_v2(code,
                                                                                                                i,
                                                                                                                total_datas,
                                                                                                                l2_data_util.local_today_canceled_buyno_map.get(
                                                                                                                    code))
                        if not canceled_data:
                            total_big_count += 1
                        else:
                            total_big_num -= canceled_data["val"]["num"]
                        total_big_num += val["num"]
                    fdata = {"code_info": (code, code_name), "total_num": total_nums, "finish_num": deal_or_cancel_num,
                             "buy1_money": output_util.money_desc(buy1_money),
                             "big_num_count":total_big_count,
                             "big_num_money":output_util.money_desc(total_big_num*float(limit_up_price)*100),
                             "left_count": total_left_count,
                             "left_money": output_util.money_desc(total_left_num * float(limit_up_price) * 100)}
                    fdatas.append(fdata)
utils/buy_condition_util.py
@@ -9,8 +9,8 @@
# 获取自由流通市值的阈值范围
def get_zyltgb_threshold(market_sitation: int):
    if market_sitation == MarketSituationManager.SITUATION_GOOD:
        return 8.9 * 100000000, 100 * 100000000, 10 * 100000000, 50 * 100000000
    return 8.9 * 100000000, 31 * 100000000, 10 * 100000000, 25 * 100000000
        return 8.9 * 100000000, 100 * 100000000, 8.9 * 100000000, 50 * 100000000
    return 8.9 * 100000000, 31 * 100000000, 8.9 * 100000000, 25 * 100000000
# 获取量比的等级获取量