From 751183dcd74207a50834cacc575f0dfccb41658c Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 06 六月 2023 18:13:05 +0800 Subject: [PATCH] 交易优化,看盘接口完善 --- output/code_info_output.py | 73 ++++++++++++++++++++++++++++-------- 1 files changed, 56 insertions(+), 17 deletions(-) diff --git a/output/code_info_output.py b/output/code_info_output.py index 8003c61..4e3d160 100644 --- a/output/code_info_output.py +++ b/output/code_info_output.py @@ -20,7 +20,10 @@ import log import tool from l2 import l2_data_manager, l2_data_util, transaction_progress, l2_data_manager_new, code_price_manager +from l2.cancel_buy_strategy import HourCancelBigNumComputer +import l2.l2_data_manager_new from third_data import kpl_data_manager, kpl_util, kpl_api, block_info +from third_data.code_plate_key_manager import RealTimeKplMarketData from third_data.kpl_data_manager import KPLLimitUpDataRecordManager, KPLDataManager from trade import first_code_score_manager, l2_trade_factor, trade_manager, l2_trade_util from trade.l2_trade_factor import L2TradeFactorUtil @@ -59,13 +62,21 @@ def money_desc(money): - if money > 100000000: + if abs(money) > 100000000: return f"{round(money / 100000000, 2)}浜�" else: return f"{round(money / 10000, 2)}涓�" -def get_output_params(code): +def get_output_params(code, jingxuan_cache_dict, industry_cache_dict): + def format_plate_output(_plat): + if _plat in jingxuan_cache_dict: + return _plat, money_desc(jingxuan_cache_dict[_plat][3]) + elif _plat in industry_cache_dict: + return _plat, money_desc(industry_cache_dict[_plat][3]) + else: + return _plat, '' + params = { "base_url": "http://192.168.3.252/kp/", } @@ -97,6 +108,7 @@ volume_rate, volume_info = code_volumn_manager.get_volume_rate(code, True) (score, score_list), score_source_list = first_code_score_manager.get_score(code, volume_rate, limit_up_time, True) + ################################涔板墠璇勫垎################################ # ["鎹㈡墜閲忚兘", "绔炰环寮哄害", "璧勯噾鍔涘害", "K绾垮舰鎬�", "鍘嗗彶鑲℃��", "鏉垮潡鐑害", "涓婃澘鏃堕棿", "甯傚�煎ぇ灏�","鑲′环澶у皬"] @@ -246,6 +258,14 @@ ( (score, score_list), score_source_list)) + # 鏄惁鍙互涔板叆鐨勪俊鎭� + can_buy_info = l2.l2_data_manager_new.L2TradeDataProcessor.can_buy_first(code, limit_up_price, __L2PlaceOrderParamsManager.score_index, + __L2PlaceOrderParamsManager.score, + __L2PlaceOrderParamsManager.score_info, + (volume_rate, + code_volumn_manager.get_volume_rate_index(volume_rate))) + params["trade_data"]["can_buy_info"] = can_buy_info + __base_L2PlaceOrderParamsManager = l2_trade_factor.L2PlaceOrderParamsManager(code, False, volume_rate, code_volumn_manager.get_volume_rate_index( volume_rate), @@ -328,6 +348,26 @@ elif trade_state == trade_manager.TRADE_STATE_BUY_SUCCESS: params["trade_data"]["trade_state"]["desc"] = "宸叉垚浜�" + # H鎾ょ洃鍚寖鍥� + if trade_state == trade_manager.TRADE_STATE_BUY_PLACE_ORDER or trade_state == trade_manager.TRADE_STATE_BUY_DELEGATED or trade_state == trade_manager.TRADE_STATE_BUY_SUCCESS: + hcancel_datas_dict, cancel_indexes_set = HourCancelBigNumComputer.get_watch_index_dict(code) + # 鏍规嵁鏃ュ織璇诲彇瀹炴椂鐨勮绠楁暟鎹� + h_cancel_latest_compute_info = log.get_h_cancel_compute_info(code) + if hcancel_datas_dict: + temp_list = [(k, hcancel_datas_dict[k][0]) for k in hcancel_datas_dict] + canceled_indexs = set([int(k.split("-")[0]) for k in cancel_indexes_set]) + temp_list.sort(key=lambda x: x[0]) + params["trade_data"]["h_cancel"] = { + "computed_info": list(h_cancel_latest_compute_info) if h_cancel_latest_compute_info else None, + "datas": []} + for i in range(0, len(temp_list)): + temp = temp_list[i] + val = total_datas[temp[0]]["val"] + canceled = temp[0] in canceled_indexs + params["trade_data"]["h_cancel"]["datas"].append( + (val["time"], val["num"], money_desc(val["num"] * float(val["price"]) * 100), + (1 if canceled else 0))) + ##############################涓诲姩涔帮紝琚姩涔�################################## # 杩斿洖涓诲姩涔�,琚姩涔�,涓嶄拱鐨勫垪琛�(浠g爜, 鍚嶇О, 寰楀垎, 鏄惁娑ㄥ仠) codes_score = __load_codes_scores() @@ -340,39 +380,38 @@ for d in codes_score[1]: params["passive_buy_codes"].append( {"name": d[1], "code": d[0], "score": d[2], "limit_up": d[3], "open_limit_up": d[4]}) - # 涓诲姩涔颁笌琚姩涔颁笉鑳借秴杩�11琛� - initiative_count = len(params["initiative_buy_codes"]) - passive_count = len(params["passive_buy_codes"]) - buy_row = 0 - buy_row += initiative_count // 3 - if initiative_count % 3 > 0: - buy_row += 1 - max_passive_count = (10 - buy_row) * 3 - if max_passive_count < 0: - max_passive_count = 0 - params["passive_buy_codes"] = params["passive_buy_codes"][:max_passive_count] + + params["passive_buy_codes"] = params["passive_buy_codes"] trade_info = __load_trade_record(code, total_datas) params["trade_record"] = {"open_limit_up": trade_info[0], "records": trade_info[2]} ##############################寮�鐩樺暒鐩稿叧淇℃伅################################## - params["kpl_code_info"] = {"industry":global_util.code_industry_map.get(code)} + industry = global_util.code_industry_map.get(code) + params["kpl_code_info"] = { + "industry": format_plate_output(industry)} # 鑾峰彇寮�鐩樺暒鏉垮潡 plate_info = kpl_api.getStockIDPlate(code) if plate_info: plate_info.sort(key=lambda x: x[2]) plate_info.reverse() - params["kpl_code_info"]["plate"] = plate_info + params["kpl_code_info"]["plate"] = [(k[0], k[1], k[2], format_plate_output(k[1])[1]) for k in plate_info] # 鑾峰彇浠g爜鐨勫巻鍙叉定鍋滄暟鎹�,(娑ㄥ仠鍘熷洜,鏃ユ湡,鏉垮潡) - params["kpl_code_info"]["code_records"] = KPLLimitUpDataRecordManager.get_latest_infos(code, 4, False)[:2] + code_records = KPLLimitUpDataRecordManager.get_latest_infos(code, 4, False)[:2] + if code_records: + code_records = [(format_plate_output(k[0]), k[1], [format_plate_output(k1) for k1 in k[2].split("銆�")]) for k in + code_records] + params["kpl_code_info"]["code_records"] = code_records if not KPLLimitUpDataRecordManager.total_datas: KPLLimitUpDataRecordManager.load_total_datas() for d in KPLLimitUpDataRecordManager.total_datas: if d[3] == code: # 鑾峰彇浠婃棩 - params["kpl_code_info"]["today"] = (d[2], d[1], d[6]) + plates = d[6].split("銆�") + plates = [format_plate_output(p) for p in plates] + params["kpl_code_info"]["today"] = (format_plate_output(d[2]), d[1], plates) break return params -- Gitblit v1.8.0