Administrator
2023-08-28 ba52d7ac92a36f413eacaa686f8535e859664ec6
third_data/block_info.py
@@ -4,11 +4,12 @@
import datetime
import constant
import init
import tool
from third_data import kpl_util, kpl_data_manager
from utils import tool
from third_data import kpl_util
from third_data.history_k_data_util import HistoryKDatasUtils
from third_data.kpl_data_manager import KPLLimitUpDataRecordManager, KPLDataManager
from third_data import kpl_data_manager
__before_block_dict = {}
@@ -17,12 +18,21 @@
def __load_before_block(code):
    if code not in __before_block_dict:
        blocks = KPLLimitUpDataRecordManager.get_latest_blocks(code)
        blocks = KPLLimitUpDataRecordManager.get_latest_blocks_set(code)
        if blocks:
            blocks = blocks[0].split(',')
            __before_block_dict[code] = blocks
    return __before_block_dict.get(code)
# 获取之前的板块
def get_before_blocks(code):
    return __before_block_dict.get(code)
# 获取之前的代码-板块字典
def get_before_blocks_dict():
    return __before_block_dict
def __get_code_from_code_info(code_info):
@@ -33,12 +43,13 @@
# (代码, 名称, 首次涨停时间, 最近涨停时间, 几板, 涨停原因, 板块, 实际流通, 主力净额)
def __get_blocks(code, limit_up_datas, filter=True):
    blocks = []
    for data in limit_up_datas:
        if data[0] == code:
            block = data[5]
            if block in constant.KPL_INVALID_BLOCKS and filter:
                continue
            blocks.append(block)
    if limit_up_datas:
        for data in limit_up_datas:
            if data[0] == code:
                block = data[5]
                if block in constant.KPL_INVALID_BLOCKS and filter:
                    continue
                blocks.append(block)
    return blocks
@@ -160,7 +171,7 @@
                code_ = d[3]
                limit_up_codes_info_set.add((code_, d[5]))
                block_codes_set.add(code_)
            elif d[3]==code:
            elif d[3] == code:
                limit_up_codes_info_set.add((d[3], d[5]))
    # 获取涨停的顺序
    limit_up_index = -1
@@ -193,12 +204,13 @@
            code_ = data[0]
            break_codes.add(code_)
    # 统计回封
    for data in latest_datas:
        if data[5] != target_block:
            continue
        # 回封
        if data[2] != data[3]:
            re_limit_codes.add(data[0])
    if latest_datas:
        for data in latest_datas:
            if data[5] != target_block:
                continue
            # 回封
            if data[2] != data[3]:
                re_limit_codes.add(data[0])
    # 排除自己
    break_codes.discard(code)
@@ -229,5 +241,20 @@
    return fresult
# 初始化板块数据
def init():
    # 加载数据到内存中
    kpl_data_manager.get_current_limit_up_data_records(10)
    # 加载最近数据到内存中
    limit_up_datas = kpl_data_manager.KPLDataManager().get_data(kpl_util.KPLDataType.LIMIT_UP)
    if limit_up_datas:
        kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas = limit_up_datas
def init_code(code):
    # 加载历史涨停原因
    __load_before_block(code)
if __name__ == "__main__":
    get_info("603133")