Administrator
7 天以前 195d28b63b4fa01e7ef9fb011a9d2fe5fef8c6e4
L后去除最大单/bug修复
4个文件已修改
122 ■■■■ 已修改文件
cancel_strategy/s_l_h_cancel_strategy.py 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/huaxin_sinfo_util.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/data_server.py 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/auto_add_want_buy_strategy.py 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cancel_strategy/s_l_h_cancel_strategy.py
@@ -1747,15 +1747,15 @@
            rate = round(canceled_num / total_num, 3)
            # 除开最大单的影响权重
            if not must_buy:
                temp_thresh_hold_rate = round((total_num - max_num * max_num_count) * 0.8 / total_num, 2)
                if thresh_hold_rate > temp_thresh_hold_rate:
                    if cancel_rate_info and cancel_rate_info[1] > 0:
                        pass
                    else:
                        # 没有人为设置
                        # 目标撤单比例大于大单撤单比例就取比例均值
                        thresh_hold_rate = round((thresh_hold_rate + temp_thresh_hold_rate) / 2, 2)
            # if not must_buy:
            #     temp_thresh_hold_rate = round((total_num - max_num * max_num_count) * 0.8 / total_num, 2)
            #     if thresh_hold_rate > temp_thresh_hold_rate:
            #         if cancel_rate_info and cancel_rate_info[1] > 0:
            #             pass
            #         else:
            #             # 没有人为设置
            #             # 目标撤单比例大于大单撤单比例就取比例均值
            #             thresh_hold_rate = round((thresh_hold_rate + temp_thresh_hold_rate) / 2, 2)
            real_place_order_info = self.__real_place_order_index_dict.get(code)
            is_default_place_order_index = real_place_order_info[1] if real_place_order_info else False
huaxin_client/huaxin_sinfo_util.py
@@ -22,7 +22,7 @@
    @return:
    """
    params = sinfo.split("_")
    if len(params) != 5:
    if len(params) < 5:
        return False
    return True
servers/data_server.py
@@ -11,6 +11,7 @@
import constant
import inited_data
from api import low_suction_data_pusher
from code_attribute.code_l1_data_manager import L1DataManager
from code_attribute.gpcode_manager import BlackListCodeManager, HumanRemoveForbiddenManager, CodePrePriceManager
from l2.code_price_manager import CurrentPriceManager
from l2.huaxin import huaxin_target_codes_manager
@@ -1116,17 +1117,22 @@
                data.append(limit_up_time)
                pre_close_price = CodePrePriceManager().get_price_pre_cache(code)
                latest_transaction_data = HuaXinTransactionDatasProcessor.get_latest_transaction_data(code)
                # 获取L1数据
                price = L1DataManager.get_l1_current_price(code)
                if price:
                    data.append(round((price - pre_close_price) * 100 / pre_close_price, 2))
                else:
                    data.append("--")
                zylt_volume = global_util.zylt_volume_map.get(code)
                zyltgb = zylt_volume * limit_up_price
                if latest_transaction_data:
                    data.append(round((latest_transaction_data[1] - pre_close_price) * 100 / pre_close_price, 2))
                    data.append((latest_transaction_data[2]//100, latest_transaction_data[6] - latest_transaction_data[7]))
                    data.append(output_util.money_desc(zyltgb) if zyltgb else '--')
                    data.append(latest_transaction_data[1])
                else:
                    data.append("--")
                    data.append(("--", 0))
                    data.append(output_util.money_desc(zyltgb) if zyltgb else '--')
                data.append(output_util.money_desc(zyltgb) if zyltgb else '--')
                if price:
                    data.append(price)
                else:
                    data.append("--")
                fdatas.append(data)
            fdatas.sort(key=lambda x: x[2] if x[2] else time.time())
trade/auto_add_want_buy_strategy.py
@@ -42,43 +42,49 @@
        latest_trading_date = dates[0]
    for code in codes:
        limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
        # 只加首板
        if limit_up_price < 3 or limit_up_price > 100:
            continue
        if code in yesterday_codes:
            continue
        if l2_trade_util.is_in_forbidden_trade_codes(code):
            continue
        if gpcode_manager.WantBuyCodesManager().is_in_cache(code):
            continue
        limit_up_timestamp = LimitUpDataConstant.get_first_limit_up_time(code)
        if not limit_up_timestamp:
            continue
        limit_up_time = tool.to_time_str(limit_up_timestamp)
        if limit_up_time <= '09:30:00':
            continue
        zylt_volume = global_util.zylt_volume_map.get(code)
        if not zylt_volume or zylt_volume * limit_up_price < 10e8:
            continue
        volumes_data = HistoryKDataManager().get_history_bars(code, latest_trading_date)
        if not volumes_data:
            continue
        # 6个交易日内股价长得太高
        if code_nature_analyse.is_price_too_high_in_days(code, volumes_data, limit_up_price)[0]:
            continue
        days_count = 15
        volumes_data = volumes_data[:days_count]
        max_price = max(volumes_data, key=lambda x: x['high'])['high']
        if max_price > limit_up_price:
            # 非15日突破
            continue
        volumes = init_data_util.parse_max_volume_new(code, volumes_data)
        max_volume, max_volume_day = init_data_util.parse_max_volume_in_days(volumes_data, days_count)
        # 最大量,今日量
        today_volume = CodeVolumeManager().get_today_volumn_cache(code)
        if today_volume / max_volume < 0.3:
            continue
        logger_debug.info("自动加想")
        gpcode_manager.WantBuyCodesManager().add_code(code)
        trade_record_log_util.add_want_buy(code, "自动加")
        try:
            if not tool.is_can_buy_code(code):
                continue
            limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
            # 只加首板
            if limit_up_price < 3 or limit_up_price > 100:
                continue
            if code in yesterday_codes:
                continue
            if l2_trade_util.is_in_forbidden_trade_codes(code):
                continue
            if gpcode_manager.WantBuyCodesManager().is_in_cache(code):
                continue
            limit_up_timestamp = LimitUpDataConstant.get_first_limit_up_time(code)
            if not limit_up_timestamp:
                continue
            limit_up_time = tool.to_time_str(limit_up_timestamp)
            if limit_up_time <= '09:30:00':
                continue
            zylt_volume = global_util.zylt_volume_map.get(code)
            if not zylt_volume or zylt_volume * limit_up_price < 10e8:
                continue
            volumes_data = HistoryKDataManager().get_history_bars(code, latest_trading_date)
            if not volumes_data:
                continue
            # 6个交易日内股价长得太高
            if code_nature_analyse.is_price_too_high_in_days(code, volumes_data, limit_up_price)[0]:
                continue
            days_count = 15
            volumes_data = volumes_data[:days_count]
            max_price = max(volumes_data, key=lambda x: x['high'])['high']
            if max_price > limit_up_price:
                # 非15日突破
                continue
            volumes = init_data_util.parse_max_volume_new(code, volumes_data)
            max_volume, max_volume_day = init_data_util.parse_max_volume_in_days(volumes_data, days_count)
            # 最大量,今日量
            today_volume = CodeVolumeManager().get_today_volumn_cache(code)
            if today_volume / max_volume < 0.3:
                continue
            logger_debug.info("自动加想")
            gpcode_manager.WantBuyCodesManager().add_code(code)
            trade_record_log_util.add_want_buy(code, "自动加")
        except Exception as e:
            logger_debug.exception(e)
            logger_debug.error(f"代码:{code}")