Administrator
2024-12-23 258d64ba21cc0c65a13a1458e713b00f30655968
代码的板块不包含历史炸板过的数据/更新开盘啦前一天的实时涨停数据
5个文件已修改
60 ■■■■■ 已修改文件
servers/huaxin_trade_server.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/kpl_api.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/kpl_data_constant.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/kpl_data_manager.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/kpl_data_db_util.py 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/huaxin_trade_server.py
@@ -38,9 +38,9 @@
from log_module.log import hx_logger_contact_debug, hx_logger_trade_callback, \
    hx_logger_l2_orderdetail, hx_logger_l2_market_data, logger_l2_g_cancel, logger_debug, \
    logger_system, logger_trade, logger_l2_radical_buy
from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager
from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util
from third_data.code_plate_key_manager import KPLCodeJXBlockManager, CodePlateKeyBuyManager, RealTimeKplMarketData
from third_data.history_k_data_util import JueJinApi
from third_data.history_k_data_util import JueJinApi, HistoryKDatasUtils
from trade import l2_trade_util, \
    trade_data_manager, trade_constant, buy_open_limit_up_strategy
from trade.buy_radical import radical_buy_data_manager, radical_buy_strategy
@@ -951,17 +951,35 @@
    huaxin_target_codes_manager.HuaXinL2SubscriptCodesManager.push(add_datas, 0)
def __update_yesterday_kpl_limit_up_datas():
    day = tool.get_now_date_str()
    day = HistoryKDatasUtils.get_previous_trading_date(day)
    results = kpl_api.getHistoryLimitUpInfo(day)
    result_list = kpl_util.parseDaBanData(json.dumps({"list": results, "errcode": 0}), kpl_util.DABAN_TYPE_LIMIT_UP)
    kpl_data_manager.KPLLimitUpDataRecordManager.save_record(day, result_list, set_not_open=True)
    logger_debug.info("更新昨日开盘啦实时涨停数据")
# 做一些初始化的操作
def __init():
    def run_pending():
        # 更新自由流通市值
        schedule.every().day.at("15:10:00").do(zyltgb_util.update_all_zylt_volumes)
        # 测试下单
        schedule.every().day.at("01:02:00").do(__test_pre_place_order)
        # 订阅固定的代码
        schedule.every().day.at("09:10:00").do(__subscript_fixed_codes_l2)
        # 更新K线
        schedule.every().day.at("08:00:01").do(history_k_data_manager.update_history_k_bars)
        schedule.every().day.at("08:30:01").do(history_k_data_manager.update_history_k_bars)
        schedule.every().day.at("09:00:01").do(history_k_data_manager.update_history_k_bars)
        # 更新账户信息
        schedule.every().day.at("09:00:01").do(huaxin_trade_data_update.add_money_list)
        schedule.every().day.at("09:15:20").do(huaxin_trade_data_update.add_money_list)
        schedule.every().day.at("09:15:20").do(huaxin_trade_data_update.add_money_list)
        # 更新昨日实时涨停数据
        schedule.every().day.at("07:58:00").do(__update_yesterday_kpl_limit_up_datas)
        while True:
            try:
                schedule.run_pending()
third_data/kpl_api.py
@@ -300,5 +300,5 @@
if __name__ == "__main__":
    result = getMarketStrong()
    result =getHistoryLimitUpInfo("2024-02-19")
    print(result)
third_data/kpl_data_constant.py
@@ -103,6 +103,9 @@
                                                                max_day=cls.__day)
        kpl_block_dict = {}
        for r in kpl_results:
            # 当日炸板的不计算原因
            if r[4] == 1:
                continue
            code = r[0]
            if code not in kpl_block_dict:
                kpl_block_dict[code] = []
third_data/kpl_data_manager.py
@@ -72,7 +72,13 @@
            pass
    @classmethod
    def save_record(cls, day, records):
    def save_record(cls, day, records, set_not_open=False):
        """
        @param day:
        @param records:
        @param set_not_open: 是否需要设置炸板与否
        @return:
        """
        # 统计炸板
        try:
            last_codes = set()
@@ -149,6 +155,10 @@
                    mysqldb.execute(
                        f"update kpl_limit_up_record set _latest_limit_up_time='{d[3]}',_limit_up_time='{d[2]}',_hot_block_code_count={d[10]},_limit_up_high_info='{d[4]}' ,_update_time=now() where _id='{_id}'")
                    cls.latest_datas[_id] = d
            if set_not_open:
                # 需要设置不炸板
                mysqldb.execute(f"update kpl_limit_up_record set _open = 0, _update_time = now() where _id='{_id}'")
            cls.latest_datas[_id] = d
            # 获取原来的代码所属板块,删除之前错误的板块
utils/kpl_data_db_util.py
@@ -12,7 +12,7 @@
        @param code: 代码
        @return: 最近的涨停板块信息
        """
        sql = f"SELECT r.`_code`, r.`_day`, r.`_hot_block_name`, r.`_blocks` FROM `kpl_limit_up_record` r WHERE r.`_day`>='{min_day}' and r.`_day` <'{max_day}'"
        sql = f"SELECT r.`_code`, r.`_day`, r.`_hot_block_name`, r.`_blocks`,  r.`_open` FROM `kpl_limit_up_record` r WHERE r.`_day`>='{min_day}' and r.`_day` <'{max_day}'"
        if code:
            sql += f" AND _code='{code}'"
@@ -29,22 +29,7 @@
        return results
if __name__ == '__main__':
    # 删除不是交易日期的数据
    days = HistoryKDatasUtils.get_latest_trading_date(300)
    for day in days:
        pass
    print(days)
    mysqldb = Mysqldb()
    results = mysqldb.select_all(f"SELECT _id, _day from kpl_limit_up_record r where r._day>='{days[-1]}'")
    ids = []
    for result in results:
        if result[1] not in days:
            ids.append(result[0])
            # print("删除:", result)
            if len(ids) > 10:
                sql = f"delete from kpl_limit_up_record where " + ' or '.join([f"_id='{x}'" for x in ids])
                mysqldb.execute(sql)
                ids.clear()
    pass
    datas = KPLLimitUpDataUtil.get_latest_block_infos()
    len(datas)