Administrator
2024-10-22 3be964f68aab1128f6a96894a92e73130b516d97
扫入策略修改
9个文件已修改
63 ■■■■ 已修改文件
cancel_strategy/s_l_h_cancel_strategy.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/first_target_code_data_processor.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constant.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_transaction_data_processor.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/code_plate_key_manager.py 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/radical_buy_data_manager.py 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/radical_buy_strategy.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_result_manager.py 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cancel_strategy/s_l_h_cancel_strategy.py
@@ -565,10 +565,14 @@
    # 获取撤单比例,返回(撤单比例,是否必买)
    @classmethod
    def get_cancel_rate(cls, code, buy_exec_time, is_up=False, is_l_down_recomputed=False):
    def get_cancel_rate(cls, code, buy_exec_time, is_up=False, is_l_down_recomputed=False, buy_mode = None):
        try:
            must_buy = cls.__MustBuyCodesManager.is_in_cache(code)
            if must_buy:
                if buy_mode == OrderBeginPosInfo.MODE_RADICAL:
                    # 扫入的化撤单比例调整为80%
                    return constant.L_CANCEL_RATE_WITH_MUST_BUY_FOR_REDICAL_BUY, True
                else:
                if is_up:
                    return constant.L_CANCEL_RATE_UP_WITH_MUST_BUY, True
                else:
code_attribute/first_target_code_data_processor.py
@@ -148,6 +148,10 @@
                        continue
                        pass
                    if len(k_format) > 14 and k_format[14]:
                        l2_trade_util.forbidden_trade(code, "昨日炸板")
                        continue
                    if code_nature_analyse.is_continue_limit_up_not_enough_fall_dwon(code, volumes_data):
                        # 判断是否太高
                        l2_trade_util.forbidden_trade(code, "回踩不够")
constant.py
@@ -137,6 +137,8 @@
L_CANCEL_RATE_WITH_MUST_BUY = 0.9  # 加红L后
L_CANCEL_RATE_WITH_MUST_BUY_FOR_REDICAL_BUY = 0.8  # 扫入加红
# L上撤单比例
L_CANCEL_RATE_UP = 0.79  # L前
l2/l2_transaction_data_processor.py
@@ -21,6 +21,7 @@
from trade import current_price_process_manager, trade_constant
import concurrent.futures
from trade.radical_buy_data_manager import RedicalBuyDataManager
from utils import tool
@@ -54,6 +55,7 @@
        buy_datas, bigger_buy_datas = HuaXinBuyOrderManager.statistic_big_buy_data(code, datas, limit_up_price)
        if buy_datas:
            BigOrderDealManager().add_buy_datas(code, buy_datas)
            RedicalBuyDataManager.big_order_deal(code)
        try:
            is_placed_order = l2_data_manager.TradePointManager.is_placed_order(order_begin_pos)
            if is_placed_order and bigger_buy_datas:
main.py
@@ -132,7 +132,7 @@
        #     target=huaxin_client.l2_client.run,
        #     args=(queue_other_w_l2_r, order_queues, transaction_queues, market_queue, order_ipc_hosts,huaxin_trade_server.my_l2_data_callback))
        # l2Process.start()
        # 将L2的进程改为进程执行
        # 将L2的进程改为线程执行
        threading.Thread(target=huaxin_client.l2_client.run, args=(
            queue_other_w_l2_r, huaxin_trade_server.my_l2_data_callbacks), daemon=True).start()
third_data/code_plate_key_manager.py
@@ -927,7 +927,8 @@
            current_limit_up_datas = []
        # 获取目标代码板块
        keys, k1, k11, k2, k3, k4 = cls.__TargetCodePlateKeyManager.get_plate_keys(code)
        # keys, k1, k11, k2, k3, k4 = cls.__TargetCodePlateKeyManager.get_plate_keys(code)
        keys, k1 = RadicalBuyBlockManager.get_code_blocks(code)
        # log.logger_kpl_debug.info("{}最终关键词:{}", code, keys)
@@ -936,10 +937,6 @@
        fresults = []
        if not keys:
            return fresults, set()
        # 获取精选流出板块
        jx_out_blocks = RealTimeKplMarketData.get_top_market_jingxuan_out_blocks()
        if jx_out_blocks:
            keys -= jx_out_blocks
        code_limit_up_reasons_dict = {}
        load_code_block()
@@ -1206,6 +1203,10 @@
            limit_up_time = time.time()
        for k in LimitUpDataConstant.current_limit_up_datas:
            _code = k[0]
            # 剔除4板以上的板
            if kpl_util.get_high_level_count(k[4]) >= 4:
                continue
            if _code in exclude_codes:
                continue
            blocks = LimitUpDataConstant.get_blocks_with_history(_code)
@@ -1261,6 +1262,11 @@
        limit_up_space_ge_60s_codes = set()
        for k in LimitUpDataConstant.history_limit_up_datas:
            _code = k[3]
            # 剔除4板以上的板
            if kpl_util.get_high_level_count(k[12]) >= 4:
                continue
            if _code in exclude_codes:
                continue
            blocks = LimitUpDataConstant.get_blocks_with_history(_code)
trade/radical_buy_data_manager.py
@@ -5,6 +5,7 @@
from code_attribute import code_nature_analyse, code_volumn_manager, gpcode_manager
from code_attribute.code_l1_data_manager import L1DataManager
from l2.l2_sell_manager import L2MarketSellManager
from l2.l2_transaction_data_manager import BigOrderDealManager
from log_module import async_log_util
from log_module.log import logger_l2_radical_buy
from third_data import kpl_data_manager
@@ -27,14 +28,14 @@
            if not k_format[13]:
                return False, "近60个交易日无涨停"
            if k_format[14]:
                # 昨天炸板,且当前的量比小于33%
                # 昨天炸板,且当前的量比小于60%
                current_total_sell_data = L2MarketSellManager().get_current_total_sell_data(code)
                total_sell_volume = 0
                if current_total_sell_data:
                    total_sell_volume = current_total_sell_data[2]
                volume_rate = code_volumn_manager.get_volume_rate(code, total_sell_volume=total_sell_volume)
                if volume_rate < 0.33:
                    return False, f"昨日炸板,量比({volume_rate})<0.33"
                if volume_rate < 0.6:
                    return False, f"昨日炸板,量比({volume_rate})<0.6"
        # MAX_CODE_PRICE = 50
        # MIN_CODE_PRICE = 2
@@ -54,6 +55,25 @@
                return False, "已拉黑"
        return True, ""
    @classmethod
    def big_order_deal(cls, code):
        """
        有大单成交
        @param code:
        @param count:
        @return:
        """
        if gpcode_manager.MustBuyCodesManager().is_in_cache(code):
            return
        cls.place_order_success(code)
    @classmethod
    def place_order_success(cls, code):
        # 如果有大单成交就加红
        deal_big_order_count = BigOrderDealManager().get_total_buy_count(code)
        if deal_big_order_count > 0:
            gpcode_manager.MustBuyCodesManager().add_code(code)
def is_block_can_radical_buy(code, radical_buy_blocks, deal_codes):
    # 原因下面的代码个数
trade/radical_buy_strategy.py
@@ -145,7 +145,7 @@
        THRESHOLD_RATE = radical_buy_data_manager.get_volume_rate_threshold(code, volume_rate)
        if rate >= THRESHOLD_RATE:
            # 成交的比例
            if total_sell > 500 * 1e4:
            if total_sell > 1000 * 1e4:
                return BUY_MODE_DIRECT, f"剩余涨停总卖额-{selling_num * price},原涨停总卖-{total_sell},已成交额-{__deal_active_buy_total_money[code]},成交比例-{rate}/{THRESHOLD_RATE}"
            else:
                return BUY_MODE_BY_L2, f"剩余涨停总卖额小于500w-{selling_num * price},原涨停总卖-{total_sell},已成交额-{__deal_active_buy_total_money[code]},成交比例-{rate}/{THRESHOLD_RATE} "
trade/trade_result_manager.py
@@ -12,6 +12,7 @@
from l2.l2_data_util import local_today_datas, L2DataUtil
from l2.l2_sell_manager import L2MarketSellManager
from log_module.log import logger_l2_error
from trade.radical_buy_data_manager import RedicalBuyDataManager
from trade.trade_data_manager import PlaceOrderCountManager
from trade.trade_queue_manager import THSBuy1VolumnManager
from utils import tool, buy_condition_util
@@ -108,7 +109,7 @@
    # 如果是扫入下单,下单之后就加红
    if order_begin_pos.mode == OrderBeginPosInfo.MODE_RADICAL:
        MustBuyCodesManager().add_code(code)
        RedicalBuyDataManager.place_order_success(code)
    # 清除下单信号
    place_order_single_data_manager.L2TradeSingleDataManager.clear_data(code)