Administrator
2024-11-11 064736f617a30033e050cabc35ffff94834f5dd0
已经成交的代码还可买入前排
2个文件已修改
44 ■■■■■ 已修改文件
l2/l2_data_manager_new.py 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/radical_buy_data_manager.py 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py
@@ -2092,23 +2092,9 @@
                    else:
                        # 判断该板块前排是否已经有成交
                        deal_codes = RadicalBuyDealCodesManager().get_deal_codes()
                        for b in radical_data[2]:
                            temp_deal_codes = radical_buy_data_manager.get_deal_codes_by_block(b, deal_codes)
                            if len(temp_deal_codes) > 0:
                                max_count = RadicalBuyBlockCodeCountManager().get_block_code_count(b)
                                if len(temp_deal_codes) > max_count:
                                    return False, result[1], f"前排代码成交数量足够多:{temp_deal_codes}"
                                # 前排代码才会继续买
                                limit_up_timestamp = LimitUpDataConstant.get_first_limit_up_time(code)
                                if not limit_up_timestamp:
                                    limit_up_timestamp = t.time()
                                front_infos = []
                                for _code in temp_deal_codes:
                                    temp_limit_up_timestamp = LimitUpDataConstant.get_first_limit_up_time(_code)
                                    if temp_limit_up_timestamp and limit_up_timestamp > temp_limit_up_timestamp:
                                        front_infos.append((_code, temp_limit_up_timestamp))
                                if len(front_infos) >= max_count:
                                    return False, result[1], f"前排代码已经成交:{front_infos}"
                        buy_blocks = radical_buy_data_manager.is_block_can_radical_buy(code, radical_data[2], deal_codes)
                        if not buy_blocks:
                            return False, result[1], f"板块代码已有成交:{radical_data[2]}"
            return True, result[1], radical_data[2]
        return result
trade/radical_buy_data_manager.py
@@ -2,6 +2,7 @@
激进买数据管理
"""
import json
import time
import constant
import l2_data_util
@@ -13,6 +14,7 @@
from log_module import async_log_util
from log_module.log import logger_l2_radical_buy
from third_data import kpl_data_manager
from third_data.kpl_data_constant import LimitUpDataConstant
from trade.buy_money_count_setting import RadicalBuyBlockCodeCountManager
from trade.trade_data_manager import RadicalBuyDealCodesManager
from utils import tool, global_util
@@ -279,9 +281,10 @@
            reasons |= radical_buy_deal_blocks
    return reasons
def is_block_can_radical_buy(code, radical_buy_blocks, deal_codes):
    """
    板块是否还能买入
    板块是否还能买入:如果有身位更加靠前的买入一个了可以下单
    @param code:
    @param radical_buy_blocks: 板块
    @param deal_codes: 成交的代码
@@ -304,7 +307,24 @@
        # 获取板块的最大买入个数
        max_count = RadicalBuyBlockCodeCountManager().get_block_code_count(b)
        if b in deal_reason_codes and len(deal_reason_codes[b]) >= max_count:
            continue
            if len(deal_reason_codes[b]) >= max_count + 1:
                continue
            else:
                # 当前代码身位比成交代码身位靠前的可以多成交一个代码
                is_front = False
                limit_up_timestamp = LimitUpDataConstant.get_first_limit_up_time(code)
                if not limit_up_timestamp:
                    limit_up_timestamp = time.time()
                for c in deal_reason_codes[b]:
                    # 获取涨停时间
                    timestamp = LimitUpDataConstant.get_first_limit_up_time(c)
                    if timestamp and timestamp > limit_up_timestamp:
                        # 比目标代码后涨停
                        is_front = True
                        async_log_util.info(logger_l2_radical_buy, f"前排代码还可买入:{b}-{code},后排成交代码-{c}")
                        break
                if not is_front:
                    continue
        f_buy_blocks.add(b)
    async_log_util.info(logger_l2_radical_buy, f"还可以买入的板块:{code}-{f_buy_blocks}")
    return f_buy_blocks