Administrator
2024-12-20 4f8a0860978295fba6aba3c4804c4aba4d1b1fb7
增加接口/bug修改
4个文件已修改
84 ■■■■ 已修改文件
api/outside_api_command_callback.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/kpl_data_constant.py 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/outside_api_command_callback.py
@@ -39,6 +39,7 @@
from third_data.code_plate_key_manager import KPLCodeJXBlockManager, RealTimeKplMarketData
from third_data.history_k_data_manager import HistoryKDataManager
from third_data.history_k_data_util import JueJinApi, HistoryKDatasUtils
from third_data.kpl_data_constant import LimitUpDataConstant
from third_data.kpl_data_manager import KPLDataManager
from third_data.kpl_limit_up_data_manager import CodeLimitUpSequenceManager
from third_data.kpl_util import KPLDataType
@@ -1392,6 +1393,26 @@
                                   client_id,
                                   request_id)
            elif ctype == "get_same_block_limit_up_codes_count":
                # 获取相同板块的涨停代码数量
                codes = data.get("codes")
                codes = json.loads(codes)
                block_codes = {}
                for code in codes:
                    # 获取板块
                    fblocks, before_fblocks = RadicalBuyBlockManager.get_code_blocks(code)
                    # 获取板块历史涨停
                    for b in fblocks:
                        codes =  LimitUpDataConstant.get_history_limit_up_block_codes(b)
                        if codes:
                            if code not in block_codes:
                                block_codes[code] = {}
                            block_codes[code][b] = len(codes)
                self.send_response({"code": 0, "data": json.dumps(block_codes)},
                                   client_id,
                                   request_id)
        except Exception as e:
            logging.exception(e)
l2/l2_data_manager_new.py
@@ -801,6 +801,10 @@
            if not cls.__WantBuyCodesManager.is_in_cache(
                    code) and not gpcode_manager.GreenListCodeManager().is_in_cache(code):
                return False, True, f"只买想买:没在想买单和绿单", True
        if not cls.__WantBuyCodesManager.is_in_cache(code):
            average_rate = cls.__Buy1PriceManager.get_average_rate(code)
            if average_rate and average_rate <= 0.05:
                return False, True, f"均价涨幅({average_rate})小于5%", True
        return True, False, f"", False
third_data/kpl_data_constant.py
@@ -220,6 +220,7 @@
    history_limit_up_datas = []
    current_limit_up_datas = []
    __current_limit_up_block_codes = {}
    __history_limit_up_block_codes = {}
    @classmethod
    def set_current_limit_up_datas(cls, current_limit_up_datas):
@@ -262,6 +263,11 @@
            #         kpl_block_util.open_limit_up_time_range[1]:
            #     blocks |= set(d[6].split("、"))
            blocks -= constant.KPL_INVALID_BLOCKS
            if blocks:
                for b in blocks:
                    if b not in cls.__history_limit_up_block_codes:
                        cls.__history_limit_up_block_codes[b] = set()
                    cls.__history_limit_up_block_codes[b].add(code)
            cls.__history_code_blocks_dict[code] = BlockMapManager().filter_blocks(blocks)
            cls.__history_code_data_dict[code] = d
@@ -291,6 +297,10 @@
    def get_current_limit_up_block_codes(cls, block):
        return cls.__current_limit_up_block_codes.get(block)
    @classmethod
    def get_history_limit_up_block_codes(cls, block):
        return cls.__history_limit_up_block_codes.get(block)
if __name__ == "__main__":
    ContainsLimitupCodesBlocksManager()
trade/buy_radical/radical_buy_data_manager.py
@@ -476,7 +476,8 @@
    @classmethod
    def get_history_index(cls, code, block, yesterday_limit_up_codes, exclude_codes=None, ignore_open_limit_up=True):
        return cls.__get_history_index(code, block, yesterday_limit_up_codes, exclude_codes, ignore_open_limit_up)
        datas = cls.__get_history_index(code, block, yesterday_limit_up_codes, exclude_codes, ignore_open_limit_up)
        return datas[0], datas[1]
    @classmethod
    def filter_before_codes(cls, code, block, history_index,
@@ -547,7 +548,7 @@
                break
            else:
                before_codes_info.append(block_codes_infos[i])
        return history_index, before_codes_info
        return history_index, before_codes_info, limit_up_space_ge_60s_codes
    @classmethod
    def __is_radical_buy_with_open_limitup(cls, code, block, yesterday_limit_up_codes):
@@ -582,7 +583,8 @@
        open_limit_up_block_codes = list(open_limit_up_block_codes_dict.get(block))
        count = len(open_limit_up_block_codes)
        # ----获取历史身位----
        history_index, history_before_codes_info = cls.__get_history_index(code, block, yesterday_limit_up_codes)
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
                                                                                                        yesterday_limit_up_codes)
        # ----获取实时身位----
        current_index, current_before_codes_info = cls.__get_current_index(code, block, yesterday_limit_up_codes,
                                                                           limit_up_time=limit_up_timestamp)
@@ -609,7 +611,8 @@
            # 只有一个开1
            # 获取包含高位板的身位
            # ----获取历史身位----
            history_index, history_before_codes_info = cls.__get_history_index(code, block, set())
            history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
                                                                                                            set())
            # ----获取实时身位----
            current_index, current_before_codes_info = cls.__get_current_index(code, block, set(),
                                                                               limit_up_time=limit_up_timestamp)
@@ -621,9 +624,9 @@
                return False, f"开1数量:{count},历史-{history_index + 1} 实时-{current_index + 1}"
        # 获取主板的身位(已经排除了开1的代码)
        history_index, history_before_codes_info = cls.__get_history_index(code, block,
                                                                           yesterday_limit_up_codes,
                                                                           exclude_codes=exclude_codes)
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
                                                                                                        yesterday_limit_up_codes,
                                                                                                        exclude_codes=exclude_codes)
        # 过滤不正的原因
        history_index, history_before_codes_info = cls.__filter_before_codes(code, block, history_index,
                                                                             history_before_codes_info,
@@ -746,12 +749,15 @@
            return False, f"距离上个代码涨停已过去{THRESHOLD_MINUTES}分钟({current_before_codes_info[-1]})"
        # 包含高位板的整体排序
        all_history_index, all_history_before_codes_info = cls.__get_history_index(code, block, set(),
                                                                                   ignore_open_limit_up=False)
        all_history_index, all_history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code,
                                                                                                                block,
                                                                                                                set(),
                                                                                                                ignore_open_limit_up=False)
        history_index_first, history_before_codes_info_first = cls.__get_history_index(code, block,
                                                                                       yesterday_limit_up_codes,
                                                                                       ignore_open_limit_up=False)
        history_index_first, history_before_codes_info_first, limit_up_space_ge_60s_codes = cls.__get_history_index(
            code, block,
            yesterday_limit_up_codes,
            ignore_open_limit_up=False)
        all_first_history_before_codes = [x[0] for x in history_before_codes_info_first]
        if not constant.TEST:
            # 前两个代码是否有炸板
@@ -781,9 +787,10 @@
        open_limit_up_code_dict = kpl_data_constant.open_limit_up_code_dict_for_radical_buy
        if open_limit_up_code_dict:
            exclude_codes |= set(open_limit_up_code_dict.keys())
        origin_history_index, origin_history_before_codes_info = cls.__get_history_index(code, block,
                                                                                         yesterday_limit_up_codes,
                                                                                         exclude_codes)
        origin_history_index, origin_history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(
            code, block,
            yesterday_limit_up_codes,
            exclude_codes)
        # 过滤不正的原因
        history_index, history_before_codes_info = cls.__filter_before_codes(code, block, origin_history_index,
                                                                             origin_history_before_codes_info,
@@ -846,7 +853,8 @@
        current_index, current_before_codes_info = cls.__get_current_index(code, block, set(),
                                                                           limit_up_time=cls.__get_limit_up_timestamp(
                                                                               code))
        history_index, history_before_codes_info = cls.__get_history_index(code, block, set())
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
                                                                                                        set())
        if current_index != history_index:
            return False, f"有其他炸板"
        if current_index >= 1:
@@ -855,6 +863,8 @@
        # 获取板块炸板情况
        for k in LimitUpDataConstant.history_limit_up_datas:
            _code = k[3]
            if _code not in limit_up_space_ge_60s_codes:
                continue
            blocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(_code)
            if not blocks:
                blocks = set()
@@ -891,8 +901,9 @@
        block_codes = BlockSpecialCodesManager().get_block_codes(block)
        if not block_codes or code not in block_codes:
            return False, "无辨识度"
        history_index, history_before_codes_info = cls.__get_history_index(code, block, yesterday_limit_up_codes,
                                                                           ignore_open_limit_up=False)
        history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(code, block,
                                                                                                        yesterday_limit_up_codes,
                                                                                                        ignore_open_limit_up=False)
        if history_index > 5:
            return False, f"处于首板老{history_index + 1}"
@@ -1405,7 +1416,7 @@
        datas = response_data["data"]
        if datas:
            BeforeSubDealBigOrderManager().set_big_deal_order_list(code_, datas,
                                                                      gpcode_manager.get_limit_up_price_as_num(code_))
                                                                   gpcode_manager.get_limit_up_price_as_num(code_))
if __name__ == '__main__':