From 70b51a2636858fb8cfbf39d3764d88d07286d8ad Mon Sep 17 00:00:00 2001 From: admin <admin@example.com> Date: 星期二, 08 四月 2025 11:27:42 +0800 Subject: [PATCH] 增加并行数量 --- strategy/kpl_api.py | 192 +++++++++++++++++------------------------------ 1 files changed, 69 insertions(+), 123 deletions(-) diff --git a/strategy/kpl_api.py b/strategy/kpl_api.py index 4ff40b8..cd91466 100644 --- a/strategy/kpl_api.py +++ b/strategy/kpl_api.py @@ -12,12 +12,11 @@ import constant from log_module import async_log_util from log_module.log import logger_common, logger_kpl_jingxuan_in, logger_Overall_market_strength_score, \ - logger_stock_of_markets_plate + logger_stock_of_markets_plate, logger_debug # import requests from strategy import data_cache from strategy import basic_methods -from strategy.index_market_trend_strategy import index_trend_expectation - +from strategy.kpl_data_manager import KPLStockOfMarketsPlateLogManager from trade import middle_api_protocol from utils import hx_qc_value_util, tool @@ -186,37 +185,60 @@ return json.dumps({"errcode": 0, "list": fresults}) -# if __name__ == "__main__": -# print(f"鎵撴澘鍒楄〃t(pidType)====={daBanList(2)}") -# print(f"鑾峰彇涓偂浠g爜鐨勬澘鍧�==={getStockIDPlate('002766')}") -# print((f"鑾峰彇涓偂浠g爜鐨勭簿閫夋澘鍧�==={getCodeJingXuanBlocks('002878')}")) -# print(f"鑾峰彇璇ユ蹇典笅鐨勪釜鑲′唬鐮佸強鍏朵粬====={getCodesByPlate(885500)}") 銆娿�娿�娿�娿�娿�娿�娿�娿�娿�� -# print(f"鑾峰彇姒傚康涓殑鏉垮潡涓殑瀛愭澘鍧�====={json.loads(getSonPlate(801085))}") +# 鑾峰彇娑ㄥ仠淇℃伅鏁版嵁 +def get_limit_up_info(): + # 鑾峰彇娑ㄥ仠淇℃伅鍒楄〃 + limit_up_info = json.loads(getLimitUpInfoNew())['list'] + return limit_up_info -# print(f"鑾峰彇姒傚康涓殑鏉垮潡寮哄害====={getSonPlate(getCodesByPlate(getCodeJingXuanBlocks('002452')[2][0]))}") -# print(f"甯傚満琛屾儏-琛屼笟鏉垮潡 鏁�==={len(getMarketIndustryRealRankingInfo(True))}") -# print(f"甯傚満琛屾儏-琛屼笟鏉垮潡==={json.loads(getMarketIndustryRealRankingInfo(True))}") -# 杩斿洖鏍煎紡锛歔'鏉垮潡ID','鏉垮潡鍚嶇О','寮哄害','娑ㄥ箙','鏈煡','鎴愪氦棰�','''''''''寮哄害','鏈煡'] -# print(f"甯傚満琛屾儏-绮鹃�夋澘鍧� 鏁�==={getMarketJingXuanRealRankingInfo(True)}") -# print(f"甯傚満琛屾儏-绮鹃�夋澘鍧�==={json.loads(getMarketJingXuanRealRankingInfo(True))}") -# print(f"鑲$エ浠g爜锛歿Market_situation_selected_sectors_No1[0]}") -# jingxuanbankuai = json.loads(getMarketJingXuanRealRankingInfo(True)) -# print(f"jingxuanbankuai==={type(jingxuanbankuai)}") -# print(f"鏉垮潡浠g爜锛歿jingxuanbankuai['list'][0][0]}锛屾澘鍧楀悕绉帮細{jingxuanbankuai['list'][0][1]}锛屽己搴︼細{jingxuanbankuai['list'][0][2]}锛屾定骞咃細{jingxuanbankuai['list'][0][3]}锛屾湭鐭ワ細{jingxuanbankuai['list'][0][4]}锛屾垚浜ら锛歿round(jingxuanbankuai['list'][0][5]/100000000)}浜匡紝涓诲姏鍑�棰濓細{round(jingxuanbankuai['list'][0][6]/100000000,2)}浜匡紝涓讳拱锛歿round(jingxuanbankuai['list'][0][7]/100000000,2)}浜匡紝涓诲崠锛歿round(jingxuanbankuai['list'][0][8]/100000000,2)}浜匡紝鏈煡锛歿jingxuanbankuai['list'][0][9]}锛屾祦閫氬�硷細{round(jingxuanbankuai['list'][0][10]/100000000,2)}浜匡紝鏈煡/鎴栦负鏈�澶ф定璺屽箙锛歿round(jingxuanbankuai['list'][0][11],2)}锛屾湭鐭ワ細{round(jingxuanbankuai['list'][0][12]/100000000,2)}浜匡紝鎬诲競鍊硷細{round(jingxuanbankuai['list'][0][13]/100000000,2)}浜匡紝绗竴瀛e害鏈烘瀯鎸佷粨锛歿round(jingxuanbankuai['list'][0][14]/100000000,2)}浜匡紝鏈煡锛歿round(jingxuanbankuai['list'][0][15],2)}锛屾湭鐭ワ細{round(jingxuanbankuai['list'][0][16],2)}锛屽己搴︼細{round(jingxuanbankuai['list'][0][17],2)}") -# # 閮ㄥ垎鏉垮潡娌℃湁瀛愭澘鍧� -# print(f"鑾峰彇姒傚康涓殑鏉垮潡涓殑瀛愭澘鍧�====={json.loads(getSonPlate(801248))}") +# 鑾峰彇甯傚満鎯呯华缁煎悎寮哄害銆愬畬鏁淬�� +def changeStatistics(): + """ + 鑾峰彇甯傚満寮哄害 + :return: + """ + result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php", + f"a=ChangeStatistics&apiv=w35&c=HomeDingPan&PhoneOSNew=1&UserID=0&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9774&VerSion=5.13.0.0&Token=0&") + # data = result.text + data = json.loads(result) + return data["info"][0] -# print(f"鑷敱娴侀�氬競鍊�==={getZYLTAmount('603319')}") -# print((f"鑾峰彇涓偂浠g爜鐨勭簿閫夋澘鍧楀垪琛�==={getCodeJingXuanBlocks('002452')}")) -# print((f"鑾峰彇涓偂浠g爜鐨勭簿閫夌涓�鏉垮潡浠g爜==={getCodeJingXuanBlocks('002452')[0][0]}")) -# print(f"鑾峰彇璇ユ蹇典笅鐨勪釜鑲′唬鐮佸強鍏朵粬====={json.loads(getCodesByPlate(getCodeJingXuanBlocks('002452')[0][0]))}") -# print(f"鑾峰彇璇ユ蹇典笅鐨勪釜鑲′唬鐮佸強鍏朵粬dddddd====={json.loads(its_strongest_sector_situation)}") -# print(f"娑ㄥ仠鍒楄〃鍙婃蹇垫澘鍧�={json.loads(getLimitUpInfoNew())['list']}") -######################################################################################################################################################################################################################## +# 鑾峰彇甯傚満鎯呯华缁煎悎寮哄害 +def get_market_strong(): + """ + 鑾峰彇甯傚満寮哄害 + :return: + """ + result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php", + 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"]) + + +# 甯傚満鎯呯华--娑ㄨ穼缁熻 +# 鏁版嵁鏍煎紡锛� +# SJZT:瀹為檯娑ㄥ仠 SJDT:瀹為檯璺屽仠 SZJS:娑ㄦ暟閲� ZT:娑ㄥ仠 DT:璺屽仠 XDJS:璺屾暟閲� sign:浜烘皵姒傝堪 +def getMarketFelling(): + result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php", + f"a=ZhangFuDetail&apiv=w35&c=HomeDingPan&PhoneOSNew=1&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9774&VerSion=5.13.0.0&") + data = json.loads(result) + return data["info"] +# market_strong = get_market_strong() +# print(f"market_strong==={market_strong}") + + +if __name__ == "__main__": + MarketFelling = getMarketFelling() + print(f"MarketFelling==={MarketFelling}") + changeStatistics = changeStatistics() + print(f"changeStatistics==={changeStatistics}") + +# -------------------------------------------------------------------------------------------------------------------------------------------------------------- + # 鑾峰彇琛屾儏绮鹃�夋澘鍧� 寮哄害鎺掑悕 def get_market_sift_plate_its_stock_power(): @@ -227,6 +249,11 @@ @dask.delayed def request_plate_codes(i): plate_name = i[1] + log_data = None + its_stock = json.loads(getCodesByPlate(i[0])) + now_time_str = tool.get_now_time_str() + if data_cache.OPENING_TIME < now_time_str < data_cache.NOON_MARKET_TIME: + log_data = {plate_name: its_stock['list']} # 灏濊瘯杩囨护鎺夋棤鎰忎箟鐨勬蹇垫澘鍧�(plate_name not in ['绉戝垱鏉�', '鍖椾氦鎵�', '娆℃柊鑲�', '鏃�', 'ST鏉垮潡', 'ST鎽樺附', '骞惰喘閲嶇粍', '鍥戒紒鏀归潻','瓒呰穼', '澹宠祫婧�', '鑲℃潈杞', '閫佽浆濉潈']) and '澧為暱' in plate_name if (plate_name not in ['绉戝垱鏉�', '鍖椾氦鎵�', '娆℃柊鑲�', '鏃�', 'ST鏉垮潡', 'ST鎽樺附', '骞惰喘閲嶇粍', '鍥戒紒鏀归潻', '瓒呰穼', '澹宠祫婧�', '鑲℃潈杞', '閫佽浆濉潈']) or ('澧為暱' in plate_name): @@ -234,16 +261,6 @@ # print(f"{i[1]} 寮哄害:{i[2]}") # 閫氳繃鏉垮潡ID鑾峰彇鍏朵笅闈㈢殑涓偂寮哄害鍒楄〃 # print(f"======={i[0]}=======") - its_stock = json.loads(getCodesByPlate(i[0])) - - # 鍙湪鐩樹腑鏃堕棿鑾峰彇 - now_time = tool.get_now_time_str() - if data_cache.L1_DATA_START_TIME < now_time < data_cache.CLOSING_TIME: - log_data = {plate_name: its_stock['list']} - async_log_util.info(logger_stock_of_markets_plate, f"{log_data}") - - # logger.info(f"its_stock['list'] ===銆嬨�� {log_data}") - # logger.info(f"its_stock['list'][0] === {its_stock['list'][0]}") # its_stock_list_info = its_stock['list'] # logger.info(f"its_stock_list_info==={its_stock_list_info}") @@ -282,6 +299,7 @@ stock_power_item = {i[1]: stock_power_list} # 骞舵洿鏂板埌绮鹃�夋澘鍧椾釜鑲″瓧鍏镐腑 market_sift_plate_stock_dict.update(stock_power_item) + return log_data data = (getMarketJingXuanRealRankingInfo()) market_sift_plate = json.loads(data) @@ -297,10 +315,19 @@ for d in market_sift_plate['list']: ds.append(request_plate_codes(d)) dask_result = batch_get_plate_codes(ds) - dask_result.compute() + compute_results = dask_result.compute() + log_datas = {} + for r in compute_results: + if not r: + continue + for b in r: + log_datas[b] = r[b] now_time = tool.get_now_time_str() - if data_cache.L1_DATA_START_TIME < now_time < data_cache.CLOSING_TIME: - logger.info(f"绮鹃�夋澘鍧楄偂绁ㄥ己搴︽暟鎹洿鏂� == {market_sift_plate_stock_dict}") + if data_cache.L1_DATA_START_TIME < now_time < data_cache.NOON_MARKET_TIME: + # logger.info(f"绮鹃�夋澘鍧楄偂绁ㄥ己搴︽暟鎹洿鏂� == {market_sift_plate_stock_dict}") + # 鍙湪鐩樹腑鏃堕棿鑾峰彇 + KPLStockOfMarketsPlateLogManager().add_log(market_sift_plate['list'], log_datas) + return market_sift_plate_stock_dict @@ -322,32 +349,10 @@ callback(its_stock_power) # print(f"绮鹃�夋澘鍧楁媺鍗囦釜鑲℃洿鏂�===={its_stock_power}") except Exception as e: + logger_debug.exception(e) logger.error(f"寮�鐩樺暒鏉垮潡寮哄害绾跨▼鎶ラ敊An error occurred: {e}") finally: time.sleep(2) - - -# 鑾峰彇娑ㄥ仠淇℃伅鏁版嵁 -def get_limit_up_info(): - # 鑾峰彇娑ㄥ仠淇℃伅鍒楄〃 - limit_up_info = json.loads(getLimitUpInfoNew())['list'] - return limit_up_info - - -# 鑾峰彇甯傚満琛屾儏鎯呯华缁煎悎寮哄害 -def get_market_strong(): - """ - 鑾峰彇甯傚満寮哄害 - :return: - """ - result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php", - 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}") # 鑾峰彇娑ㄥ仠鏉垮潡鍚嶇О鍒楄〃骞跺瓨鍌ㄦ湰鍦扮殑鍑芥暟 @@ -735,68 +740,9 @@ print(f"鍐欏叆绮鹃�夋澘鍧楁枃浠跺畬鎴愶紒::{now_time}") -# 鑾峰彇瀹炴椂澶х洏琛屾儏鎯呯华缁煎悎寮哄害 [鍒嗘暟] 鍑芥暟 骞� 璁$畻褰撴棩璁″垝鎸佷粨鏁伴噺 -def get_real_time_market_strong(): - while True: - try: - if data_cache.position_automatic_management_switch is True: - now_time = tool.get_now_time_str() - if data_cache.L1_DATA_START_TIME < now_time < data_cache.UPDATE_DATA_TIME: - # 鑾峰彇澶х洏缁煎悎寮哄害鍒嗘暟 - data_cache.real_time_market_strong = get_market_strong() - # data_cache.time_sharing_market_strong_dirt = time_sharing_market_strong_dirt.update({now: data_cache.real_time_market_strong}) - # 璇ogger.info鐨勭殑鏃ュ織涓嶅啀闇�瑕佹墦鍗帮紝鍚庣画灏嗚浆鍏ュ埌GUI瀹㈡埛绔笂鐩存帴鏄剧ず锛岃鏁版嵁鐨勬墦鍗颁氦鐢变笅鏂圭殑鎵撳嵃鏈哄埗寮傛鎵ц鍗曠嫭瀛樺偍锛屼互渚垮悗缁彲瑙嗗寲鍛堢幇鍚庤繘琛屾洿楂樻晥鐨勬暟鎹垎鏋� - # logger.info(f"澶х洏琛屾儏鎯呯华缁煎悎寮哄害 [鍒嗘暟]==={data_cache.real_time_market_strong}鍒�") - # 澶х洏缁煎悎寮哄害鍒嗘暟 鐨� 寮傛鏃ュ織 - # logger_Overall_market_strength_score.info(data_cache.real_time_market_strong) - async_log_util.info(logger_Overall_market_strength_score, f"{data_cache.real_time_market_strong}") - - usefulMoney = data_cache.account_finance_dict[0].get('usefulMoney', 0) - logger.info(f"璐︽埛鍙敤璧勯噾==={usefulMoney}鍏�") - # 浣庤糠鎯呯华姣斾緥 - low_emotion_mood_ratio = 1 - # 33鍒嗘槸涓袱绾у垎鍖栭樁姊笉濂斤紝鐩墠涓嶅ソ鎷挎崗锛屾殏鏃朵笉鐢� - # if data_cache.real_time_market_strong <= 33: - if data_cache.real_time_market_strong < 30: - low_emotion_mood_ratio = 0.1 - if data_cache.real_time_market_strong <= 10: - low_emotion_mood_ratio = 0 - logger.info(f"鏋佺浣庤糠鎯呯华姣斾緥===={low_emotion_mood_ratio * 100}%") - - data_cache.index_trend_expectation_score = index_trend_expectation() - logger.info(f"澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟==={data_cache.index_trend_expectation_score}鍒�") - # print(f"澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟==={data_cache.index_trend_expectation_score}鍒�") - # 鐩墠澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟 灏氫笉绉戝 寮哄埗璁剧疆涓哄垵濮�0鍊� - index_trend_expectation_score = 0 - - # 鑾峰彇璁$畻浠婂ぉ鏂板鐨勬寔浠撴暟閲� - addition_position_number = len(data_cache.addition_position_symbols_set) - # 瀹氫箟涓�涓粖鏃ョ殑鍓╀綑鏂板鎸佷粨鏁伴噺鐨勫彉閲� - Unfinished_opening_plan_number = 3 - addition_position_number - if Unfinished_opening_plan_number != 0: - # 濡傛灉GUI鐪嬬洏涓婃病鏈夋墜鍔ㄨ缃叿浣撶殑涓嬪崟閲戦锛屽氨鎸夌収璇勫垎绛栫暐鐨勯噾棰濅笅鍗曪紝鍚﹀垯灏辨寜鐓UI璁剧疆鐨勯噾棰濅笅鍗曘�� - if data_cache.BUY_MONEY_PER_CODE < 0: - # 鏍规嵁璐︽埛鍙敤閲戦 璁$畻浠婃棩璁″垝涓嬪崟閲戦 - # ((澶х洏缁煎悎寮哄害鍒嗘暟 + 澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟) * 0.01) * (璐︽埛鍙敤閲戦 * 鏋佺浣庤糠鎯呯华姣斾緥 / 浠婃棩鏈�澶ф柊澧炴寔浠撶エ鏁�) - data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + index_trend_expectation_score) * 0.01) * (usefulMoney * low_emotion_mood_ratio / Unfinished_opening_plan_number) - else: - data_cache.today_planned_order_amount = data_cache.BUY_MONEY_PER_CODE - - except Exception as error: - logger.error(f"鑾峰彇瀹炴椂澶х洏琛屾儏鎯呯华缁煎悎寮哄害[鍒嗘暟] 鍑芥暟鎶ラ敊: {error}") - finally: - time.sleep(3) - - # kpl_stocks_list_selected_blocks_process() #鍦� kpl_api.py涓彲浠ヨ皟鐢� # stocks_list_selected_blocks(min_stocks) #鍦� kpl_api.py涓彲浠ヨ皟鐢� # 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) - get_market_sift_plate_its_stock_power_process(None) -- Gitblit v1.8.0