admin
2025-03-06 14117f79cdcb0edcac199f27f169d77f9ea5358a
日志调整
1个文件已修改
55 ■■■■■ 已修改文件
strategy/kpl_api.py 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/kpl_api.py
@@ -6,6 +6,7 @@
import time
import datetime
import dask
import requests
import constant
@@ -118,7 +119,6 @@
    return __base_request("https://apphq.longhuvip.com/w1/api/index.php", data=data)
# 获取概念中的板块中的子板块
def getSonPlate(plate_code):
    data = f"a=SonPlate_Info&apiv=w32&c=ZhiShuRanking&PhoneOSNew=1&DeviceID=a38adabd-99ef-3116-8bb9-6d893c846e23&VerSion=5.8.0.2&PlateID={plate_code}&"
@@ -217,16 +217,12 @@
# 获取行情精选板块 强度排名
def get_market_sift_plate_its_stock_power():
    data = (getMarketJingXuanRealRankingInfo())
    market_sift_plate = json.loads(data)
    # logger_kpl_jingxuan_in 打印的日志专用于开盘了数据的存储分析,不能轻易删除
    # print(f"market_sift_plate 数 ======{len(market_sift_plate['list'])}")
    # logger.info(f"market_sift_plate['list']======{market_sift_plate['list']}")
    # logger.info(f"market_sift_plate['list'][0]  ======{market_sift_plate['list'][0]}")
    # 初始化精选板块对应个股字典
    market_sift_plate_stock_dict = {}
    if 'list' in market_sift_plate:
        for i in market_sift_plate['list']:
    @dask.delayed
    def batch_get_plate_codes(fs):
        return fs
    @dask.delayed
    def request_plate_codes(i):
            plate_name = i[1]
            # 尝试过滤掉无意义的概念板块(plate_name not in ['科创板', '北交所', '次新股', '无', 'ST板块', 'ST摘帽', '并购重组', '国企改革','超跌', '壳资源', '股权转让', '送转填权']) and '增长' in plate_name
            if (plate_name not in ['科创板', '北交所', '次新股', '无', 'ST板块', 'ST摘帽', '并购重组', '国企改革', '超跌',
@@ -234,6 +230,7 @@
                # print(f"{i[1]} 强度:{i[2]}")
                # 通过板块ID获取其下面的个股强度列表
                its_stock = getCodesByPlate(i[0])
            print(f"======={i[0]}=======")
                its_stock = json.loads(its_stock)
                # print(f"its_stock['list']  ===  {its_stock['list']}")
                # print(f"its_stock['list'][0]  ===  {its_stock['list'][0]}")
@@ -265,6 +262,21 @@
                    stock_power_item = {i[1]: stock_power_list}
                    # 并更新到精选板块个股字典中
                    market_sift_plate_stock_dict.update(stock_power_item)
    data = (getMarketJingXuanRealRankingInfo())
    market_sift_plate = json.loads(data)
    # logger_kpl_jingxuan_in 打印的日志专用于开盘了数据的存储分析,不能轻易删除
    # print(f"market_sift_plate 数 ======{len(market_sift_plate['list'])}")
    # logger.info(f"market_sift_plate['list']======{market_sift_plate['list']}")
    # logger.info(f"market_sift_plate['list'][0]  ======{market_sift_plate['list'][0]}")
    # 初始化精选板块对应个股字典
    market_sift_plate_stock_dict = {}
    if 'list' in market_sift_plate:
        ds = []
        for d in market_sift_plate['list']:
            ds.append(request_plate_codes(d))
        dask_result = batch_get_plate_codes(ds)
        dask_result.compute()
        logger.info(f"精选板块股票强度数据更新 == {market_sift_plate_stock_dict}")
    return market_sift_plate_stock_dict
@@ -307,6 +319,7 @@
                            f"a=DiskReview&apiv=w35&c=HomeDingPan&VerSion=5.13.0.0&PhoneOSNew=1&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9773&")
    data = json.loads(result)
    return int(data["info"]["strong"])
# market_strong = get_market_strong()
# print(f"market_strong==={market_strong}")
@@ -383,7 +396,8 @@
                        # 将日期和data_to_append转换为JSON格式的字符串
                        json_line = json.dumps({current_date: data_to_append}, ensure_ascii=False) + '\n'
                        # 打开文件并追加JSON行
                        with open(self.file_path, 'a', encoding='utf-8') as file:file.write(json_line)
                        with open(self.file_path, 'a', encoding='utf-8') as file:
                            file.write(json_line)
                    else:
                        logger.info(f"(当日日期已存在于文件的最后一行了,不再重复追加写入)")
                else:
@@ -444,7 +458,6 @@
    data_cache.daily_limit_up_info = history_limit_up_info.arrange_limit_up_info()
    # logger.info(f"读本地的日更的历史涨停数据=={data_cache.daily_limit_up_info}")
    # print(f"daily_limit_up_info  类型==={type(data_cache.daily_limit_up_info)}")
    # 统计每日主线
    daily_limit_up_info_len = len(data_cache.daily_limit_up_info)
@@ -488,6 +501,7 @@
                sorted_plate_ranking_list = sorted(plate_ranking_list, key=lambda x: list(x.values())[0], reverse=True)
                # logger.info(f"{key}=====>>>>{sorted_plate_ranking_list}")
                history_sorted_plate_ranking_list.append(sorted_plate_ranking_list)
    # print(f"history_sorted_plate_ranking_list={history_sorted_plate_ranking_list}")
    # for ranking_list in history_sorted_plate_ranking_list:
    #     print(f"ranking_list={ranking_list}")
@@ -592,6 +606,7 @@
        # the_same_class_amount = pre_trading_day_limit_up_info[0][20]
        # logger.info(f"同概念涨停数量=={the_same_class_amount}")
# get_handling_limit_up_info()
@@ -654,9 +669,6 @@
                plate_are_null_list.append(sec_name)
    logger.info(f"有{have_no_plate_num}只股票概念为空")
    logger.info(f"个股有历史K线但概念为空的有:{plate_are_null_list}")
# 获取全部个股的精选板块并存储的函数
@@ -723,12 +735,15 @@
                    if Unfinished_opening_plan_number != 0:
                        # 根据账户可用金额 计算今日计划下单金额
                        # (账户可用金额/今日最大新增持仓票数) * (大盘综合强度分数 * 0.01)
                        data_cache.today_planned_order_amount = (usefulMoney * low_emotion_mood_emotion / Unfinished_opening_plan_number) * (data_cache.real_time_market_strong * 0.01)
                        data_cache.today_planned_order_amount = (
                                                                        usefulMoney * low_emotion_mood_emotion / Unfinished_opening_plan_number) * (
                                                                        data_cache.real_time_market_strong * 0.01)
        except Exception as error:
            logger.error(f"获取实时大盘行情情绪综合强度[分数] 函数报错: {error}")
        finally:
            time.sleep(3)
# kpl_stocks_list_selected_blocks_process()   #在 kpl_api.py中可以调用
@@ -737,3 +752,9 @@
# list = ['SHSE.600805','SHSE.600804']
#
# all_stocks_plate_dict(list)
if __name__ == "__main__":
    start_time = time.time()
    get_market_sift_plate_its_stock_power()
    print("耗时:", time.time() - start_time)