admin
2025-02-26 a7a00145bb6d6fe6bdc41006aaebea75fe71e5af
bug修改
3个文件已修改
87 ■■■■■ 已修改文件
huaxin_client/l1_api_client.py 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/account_management.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/kpl_api.py 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l1_api_client.py
@@ -5,7 +5,7 @@
import constant
import qcvalueaddproapi
from log_module.log import logger_system
from log_module.log import logger_system, logger_debug
from utils import tool
global g_userid, g_passwd, g_address, g_port, g_seqnum
@@ -157,6 +157,16 @@
        except Exception as e:
            logging.exception(e)
    def __subStockIndex(self):
        """
        订阅股票指数行情
        """
        # 沪深300
        self.m_api.SubscribeStockIndexData(qcvalueaddproapi.QCVD_EXD_SSE, "000300")  # 沪深300
        self.m_api.SubscribeStockIndexData(qcvalueaddproapi.QCVD_EXD_SSE, "000001")  # 上证
        self.m_api.SubscribeStockIndexData(qcvalueaddproapi.QCVD_EXD_SZSE, "399006")  # 创业板指数
        self.m_api.SubscribeStockIndexData(qcvalueaddproapi.QCVD_EXD_SZSE, "399001")  # 深圳成指
    def OnFrontConnected(self):
        print("OnFrontConnected")
        # 连接上后去登录
@@ -184,6 +194,15 @@
            # threading.Thread(target=lambda: print("交易日历:", self.queryTradeCalendar("2024-03-08", "2024-12-31"))).start()
            # threading.Thread(
            #     target=lambda: print("日K:", self.queryBars("601298", "2024-12-15", "2024-12-31"))).start()
            try:
                self.__subStockIndex()
            except:
                pass
    def OnRtnStockIndexData(self, pStockIndexData):
        # 指数数据
        logger_debug.info(f"指数行情应答:{pStockIndexData}")
        pass
    def ReqQryGGTEODPrices(self):
        QryField = qcvalueaddproapi.CQCVDQryGGTEODPricesField()
@@ -244,7 +263,6 @@
def __read_request(request_queue: multiprocessing.Queue, response_queue: multiprocessing.Queue):
    def __set_response_data(request_id, response_data):
        response_queue.put_nowait({"request_id": request_id, "data": response_data})
@@ -290,18 +308,16 @@
    #IP(192.168.84.61)、端口(25557
    # 回测交易是由历史行情来驱动撮合成交:
    # 因此必须同时使用traderapi和mdapi,不能单独使用traderapi,并且mdapi至少需要订阅一个以上行情。
    # 用户可使用回测traderapi的RegisterFront函数来注册此地址去连接上回测服务器
    print("GetApiVersion():", qcvalueaddproapi.CQCValueAddProApi_GetApiVersion())
    theapi = qcvalueaddproapi.CQCValueAddProApi_CreateInfoQryApi()
    global  thespi
    global thespi
    thespi = sampleSpi(theapi)
    theapi.RegisterSpi(thespi)
    theapi.RegisterFront(g_address, g_port)
    threading.Thread(target=__read_request, args=(request_queue, response_queue, ), daemon=True).start()
    threading.Thread(target=__read_request, args=(request_queue, response_queue,), daemon=True).start()
    theapi.Run()
strategy/account_management.py
@@ -29,10 +29,10 @@
        frozenCash = data_cache.account_finance_dict[0]['frozenCash']  # 冻结的资金
        fetchLimit = data_cache.account_finance_dict[0]['fetchLimit']  # 可取资金
        preDeposit = data_cache.account_finance_dict[0]['preDeposit']  # 上日结存
        print(f"可用资金==={data_cache.usefulMoney}")
        print(f"冻结的资金==={frozenCash}")
        print(f"可取资金==={fetchLimit}")
        print(f"上日结存==={preDeposit}")
        logger.info(f"可用资金==={data_cache.usefulMoney}")
        logger.info(f"冻结的资金==={frozenCash}")
        logger.info(f"可取资金==={fetchLimit}")
        logger.info(f"上日结存==={preDeposit}")
# finance_management()
strategy/kpl_api.py
@@ -306,38 +306,33 @@
# market_strong = get_market_strong()
# print(f"market_strong==={market_strong}")
# 获取涨停板块名称列表并存储本地的函数
def get_limit_up_block_names():
    # 获取涨停信息列表
    limit_up_info = get_limit_up_info()
    # print(f"limit_up_info=={limit_up_info}")
    data_cache.limit_up_info = get_limit_up_info()
    # 提取涨停列表中的板块名称
    limit_up_block_names = []
    # 设定当前时间点
    now_time = datetime.datetime.now().strftime("%H:%M:%S")
    # 循环添加涨停概念
    for i in limit_up_info:
        limit_up_block_names.append(i[5])
    # print(f"limit_up_block_names==={limit_up_block_names}")
    # return limit_up_block_names
    # # 使用Counter计算每个元素的出现次数
    # counter = Counter(limit_up_block_names)
    # # 找出出现次数最多的元素及其次数
    # most_common_element, most_common_count = counter.most_common(1)[0]
    # # 打印出现次数最多的元素
    # print(f"主线概念:{most_common_element},出现了 {most_common_count} 次")
    if now_time > data_cache.after_closing_time:
        # print(f"收盘结束,记录当前涨停板块")
        # 将获取到的涨停概念板块转JSON格式并存储在本地文件夹中
        # 将字典转换为JSON格式的字符串
        json_data = json.dumps(limit_up_block_names)
        # print(f"json_data=={json_data}")
        if len(json_data) != 0:
            # 写入文件
            with open(constant.KPL_LIMIT_UP_BLOCK_NAMES_PATH, 'w', encoding='utf-8') as f:
                f.write(json_data)
    return limit_up_block_names
    # print(f"now_time===={now_time}")
    if data_cache.opening_time < now_time < data_cache.update_data_time:
        # print(f"在时间内使用--------------------------")
        # 获取涨停信息列表
        limit_up_info = get_limit_up_info()
        # print(f"limit_up_info=={limit_up_info}")
        data_cache.limit_up_info = get_limit_up_info()
        # 提取涨停列表中的板块名称
        limit_up_block_names = []
        # 循环添加涨停概念
        for i in limit_up_info:
            limit_up_block_names.append(i[5])
        # print(f"limit_up_block_names==={limit_up_block_names}")
        # return limit_up_block_names
        # # 使用Counter计算每个元素的出现次数
        # counter = Counter(limit_up_block_names)
        # # 找出出现次数最多的元素及其次数
        # most_common_element, most_common_count = counter.most_common(1)[0]
        # # 打印出现次数最多的元素
        # print(f"主线概念:{most_common_element},出现了 {most_common_count} 次")
        return limit_up_block_names
# 为开盘啦接口获取的涨停列表概念板块单独开一个进程  形参(callback)