From d1bf04791ad095b17660a1f383b7a12f0a59b1d1 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 26 四月 2023 19:15:06 +0800 Subject: [PATCH] 优化H撤/融入网页看盘页面/开盘啦数据应用 --- output/code_info_output.py | 449 ++++++++++++++++++++++++------------------------------- 1 files changed, 195 insertions(+), 254 deletions(-) diff --git a/output/code_info_output.py b/output/code_info_output.py index c22d906..61dd105 100644 --- a/output/code_info_output.py +++ b/output/code_info_output.py @@ -19,12 +19,15 @@ import log import tool from l2 import l2_data_manager, l2_data_util, transaction_progress, l2_data_manager_new, code_price_manager -from third_data import hot_block_data_process +from third_data import kpl_data_manager, kpl_util from trade import first_code_score_manager, l2_trade_factor, trade_manager, l2_trade_util from trade.l2_trade_factor import L2TradeFactorUtil import trade.deal_big_money_manager +from jinja2 import Environment, FileSystemLoader base_output_content = {} + +__kplDataManager = kpl_data_manager.KPLDataManager() def __get_base_html_content(): @@ -40,113 +43,38 @@ return f"<head><style>{base_output_content['css']}</style></head>" -def __format_data(code_info, score_info, buy_params_info, xgb_code_info, xgb_infos, codes_score, trade_info): - html = __get_base_html_content() - html += "<body>" - html += f"<h2>{code_info[1]} {code_info[0]} ({code_info[2]})</h2><br>" - - if score_info: - html += "<b>-----涔板墠璇勫垎-------</b><br>" - score_types = ["鎹㈡墜閲忚兘", "绔炰环寮哄害", "璧勯噾鍔涘害", "鏃ョ嚎褰㈡��", "鍘嗗彶鑲℃��", "鏉垮潡鐑害", "涓婃澘鏃堕棿", "甯傚�煎ぇ灏�", "鑲′环澶у皬"] - html += "<table>" - for i in range(0, len(score_info[1])): - html += f"<tr><td>{score_types[i]}</td><td>{score_info[1][i]}</td><td>{score_info[2][i]}</td></tr>" - html += f"<tr><td><b>璇勫垎姹傚拰锛�</td><td>{score_info[0]}</b></td><td></td></tr>" - html += f"</table><br>" - html += "\n" - if buy_params_info: - html += "<b><br>-----浜ゆ槗鍙傛暟-------<br></b><table>" - titles = ["涔板叆鎰忔効", "瀹夊叏绗旀暟", "鍔ㄦ�丮鍊�", "涔板墠澶у崟", "鎴愪氦杩涘害", "涔板叆淇″彿", "涔板叆鎵ц浣�"] - for i in range(0, len(titles)): - html += f"<tr><td>{titles[i]}锛�</td><td>{buy_params_info[i]}</td></tr>" - html += "</table><br>" - html += "\n" - if xgb_code_info: - html += "<b><br>-----閫夎偂瀹�---------<br></b>" - xgb_code_info_dates = ["浠婂ぉ", "鏄ㄥぉ", "鍓嶅ぉ", "涔嬪墠"] - for i in range(0, len(xgb_code_info)): - if xgb_code_info[i]: - html += f"{xgb_code_info_dates[i]}锛�<br>" - for info in xgb_code_info[i]: - if i == 0: - html += f"銆�<font color='red'>{info[0]}</font>銆戯紝鍏便��<font color='red'>{info[1]}</font>銆戝彧绁ㄦ定鍋�<br>绗��<font color='red'>{info[2]}</font>銆戞定鍋滐紝鐜颁环銆�<font color='red'>{info[3]}</font>銆戝厓锛屾定骞呫��<font color='red'>{info[4]}</font>銆�<br><br>" - else: - html += f"銆恵info[0]}銆戯紝鍏便�恵info[1]}銆戝彧绁ㄦ定鍋�<br>绗�恵info[2]}銆戞定鍋滐紝鐜颁环銆恵info[3]}銆戝厓锛屾定骞呫�恵info[4]}銆�<br><br>" - html += "\n" - if codes_score[0]: - html += "<b>-----涓诲姩涔板叆-------</b><br>" - html += "<table>" - for i in range(0, len(codes_score[0])): - if i % 3 == 0: - html += "<tr>" - html += f"<td><font color='red'>{'*' if codes_score[0][i][3] else ''}{codes_score[0][i][1]}({codes_score[0][i][0]}):{codes_score[0][i][2]}</font></td>" - if i % 3 == 2 or i == len(codes_score[0]) - 1: - html += "</tr>" - html += "</table><br>\n" - - if codes_score[1]: - html += "<b>-----琚姩涔板叆-------</b><br>" - html += "<table>" - for i in range(0, len(codes_score[1])): - if i % 3 == 0: - html += "<tr>" - html += f"<td><font color='#000080'>{'*' if codes_score[1][i][3] else ''}{codes_score[1][i][1]}({codes_score[1][i][0]}):{codes_score[1][i][2]}</font></td>" - if i % 3 == 2 or i == len(codes_score[1]) - 1: - html += "</tr>" - html += "</table><br>\n" - - if codes_score[2] and False: - html += "<b>-----涓嶄拱鍏�-------</b><br>" - html += "<table>" - for i in range(0, len(codes_score[2])): - if i % 4 == 0: - html += "<tr>" - html += f"<td>{codes_score[2][i][1]}:{codes_score[2][i][2]}</td>" - if i % 4 == 3 or i == len(codes_score[1]) - 1: - html += "</tr>" - html += "</table><br>\n" - - if trade_info: - html += "<b>-----浠婃棩鎸傛挙璁板綍-------</b><br>" - html += "<br>浠婃棩鏄惁鐐告澘锛�" - if trade_info[0] is not None: - html += f"鐐告澘-{trade_info[0]}" - else: - html += f"鏈偢鏉�" - if trade_info[1]: - html += "<table>" - for i in range(0, len(trade_info[1])): - if i % 2 == 0: - html += "<tr>" - html += f"<td>{trade_info[1][i]}</td>" - if i % 2 == 1 or i == len(codes_score[0]) - 1: - html += "</tr>" - html += "</table><br>" - html += "<br>\n" - - if xgb_infos: - html += "<b><br>-----甯傚満鐑害-------<br></b><table>" - for info in xgb_infos: - html += f"<tr><td>{info[0]}<br><div style=''>{info[1]}</div></td></tr>" - html += "</table>" - html += "<br><br>" - html += "</body>" - return html +def render(params): + env = Environment(loader=FileSystemLoader('D:/workspace/trade/output')) + css = env.get_template('css/index.css') + params["css"] = css.render() + template = env.get_template('index.html') + html_content = template.render(params) + return html_content def get_output_html(code): + def money_desc(money): + if money > 100000000: + return f"{round(money / 100000000, 2)}浜�" + else: + return f"{round(money / 10000, 2)}涓�" + + params = { + "base_url": "http://192.168.3.252/kp/", + } + day = tool.get_now_date_str() is_target_code = gpcode_manager.FirstCodeManager.is_in_first_record(code) - code_extra_infos=[] + code_extra_infos = [] if l2_trade_util.BlackListCodeManager.is_in(code): code_extra_infos.append("榛戝悕鍗�") if l2_trade_util.WhiteListCodeManager.is_in(code): code_extra_infos.append("鐧藉悕鍗�") # 鑾峰彇鐧藉悕鍗�,榛戝悕鍗� - if trade_manager. gpcode_manager.WantBuyCodesManager.is_in(code): + if trade_manager.gpcode_manager.WantBuyCodesManager.is_in(code): code_extra_infos.append("鎯充拱鍗�") + params["code_name"] = f"{gpcode_manager.get_code_name(code)} {code} 锛坽','.join(code_extra_infos)}锛�" - code_info = [code, gpcode_manager.get_code_name(code),",".join(code_extra_infos)] score_info = None buy_params_info = None xgb_infos = None @@ -155,6 +83,7 @@ l2_data_util.load_l2_data(code) total_datas = l2_data_util.local_today_datas.get(code) if is_target_code: + params["score_data"] = {} limit_up_price = gpcode_manager.get_limit_up_price(code) limit_up_time = limit_up_time_manager.get_limit_up_time(code) volume_rate, volume_info = code_volumn_manager.get_volume_rate(code, True) @@ -162,22 +91,24 @@ True) ################################涔板墠璇勫垎################################ # ["鎹㈡墜閲忚兘", "绔炰环寮哄害", "璧勯噾鍔涘害", "K绾垮舰鎬�", "鍘嗗彶鑲℃��", "鏉垮潡鐑害", "涓婃澘鏃堕棿", "甯傚�煎ぇ灏�","鑲′环澶у皬"] - score_list_new = [] - score_source_list_new = [] + # 鎹㈡墜閲忚兘 - score_list_new.append(score_list[6]) # 鑾峰彇褰撳墠閲忎俊鎭� max_60, yest = code_volumn_manager.get_histry_volumn(code) today = code_volumn_manager.get_today_volumn(code) - score_source_list_new.append( - f"瀹炴椂閲忋�恵round(int(today) / 1000000, 2)}涓囨墜銆懨峰墠楂橀噺銆恵round(max_60[0] / 1000000, 2)}涓囨墜-{max_60[1]}銆�=銆恵round(score_source_list[6] * 100, 2)}%銆�") + params["score_data"]["volume"] = {"score": score_list[6], "now": f"{round(int(today) / 1000000, 2)}", + "high": {"num": round(max_60[0] / 1000000, 2), "date": max_60[1]}, + "rate": round(score_source_list[6] * 100, 2)} + # 绔炰环寮哄害 - score_list_new.append(score_list[2]) - score_source_list_new.append(f"寮�鐩樺暒浠婃棩濮斿仠銆恵score_source_list[2] if score_source_list[2] else 0}涓囥��") + params["score_data"]["bidding"] = {"score": score_list[2], + "money": (score_source_list[2] if score_source_list[2] else 0)} # 璧勯噾鍔涘害 deal_indexes = trade.deal_big_money_manager.get_traded_indexes(code) deal_info = "" + params["score_data"]["deal_big_money"] = {"score": score_list[8], "money": score_source_list[8][0] // 10000, + "base_money": score_source_list[8][1] // 10000} if deal_indexes: temps = [] for index in deal_indexes: @@ -186,10 +117,11 @@ start_index = temps[0] end_index = temps[-1] deal_info = f"銆恵total_datas[start_index]['val']['time']}&{total_datas[start_index]['val']['num']}鎵�-{total_datas[end_index]['val']['time']}&{total_datas[end_index]['val']['num']}鎵嬨��," + params["score_data"]["deal_big_money"]["start"] = {"time": total_datas[start_index]['val']['time'], + "num": total_datas[start_index]['val']['num']} + params["score_data"]["deal_big_money"]["end"] = {"time": total_datas[end_index]['val']['time'], + "num": total_datas[end_index]['val']['num']} - score_list_new.append(score_list[8]) - score_source_list_new.append( - f"{deal_info}<br>绱閲戦銆恵score_source_list[8][0] // 10000}涓囥��&鍥哄畾m鍊笺�恵score_source_list[8][1] // 10000}涓囥��") # K绾垮舰鎬� k_score = 0 k_source = [] @@ -200,31 +132,31 @@ for k in range(0, len(score_source_list[3])): if k == 0: if score_source_list[3][k][0]: - k_source.append("銆愭定骞呰繃楂樸��") + k_source.append("娑ㄥ箙杩囬珮") elif k == 1: if score_source_list[3][k][0]: - k_source.append("銆愮獊鐮村墠楂樸��") + k_source.append("绐佺牬鍓嶉珮") elif k == 2: if score_source_list[3][k][0]: - k_source.append("銆愯秴璺岃ˉ娑ㄣ��") + k_source.append("瓒呰穼琛ユ定") elif k == 3: if score_source_list[3][k][0]: - k_source.append(f"銆愰�艰繎鍓嶉珮-{score_source_list[3][k][1]}銆�") + k_source.append(f"閫艰繎鍓嶉珮-{score_source_list[3][k][1]}銆�") elif k == 4: if score_source_list[3][k][0]: - k_source.append("銆怤瀛楀瀷銆�") + k_source.append("N瀛楀瀷") elif k == 5: if score_source_list[3][k][0]: - k_source.append("銆怴瀛楀瀷銆�") + k_source.append("V瀛楀瀷") elif k == 6: if not score_source_list[3][k][0]: - k_source.append("銆愪笉婊¤冻浠讳綍褰㈡�併��") + k_source.append("涓嶆弧瓒充换浣曞舰鎬�") elif k == 7: if score_source_list[3][k][0]: - k_source.append("銆愬ぉ閲忓ぇ闃炽��") + k_source.append("澶╅噺澶ч槼") - score_list_new.append(k_score) - score_source_list_new.append("/".join(k_source)) + params["score_data"]["k_form"] = {"score": k_score, "datas": k_source} + # 鍘嗗彶鑲℃�� nature_score = 0 nature_source = [] @@ -245,12 +177,10 @@ else: nature_source.append(f"鏃犻鏉跨偢鏉�") - score_list_new.append(nature_score) - score_source_list_new.append(",".join(nature_source)) + params["score_data"]["code_nature"] = {"score": nature_score, "data_desc": ",".join(nature_source)} # 鏉垮潡鐑害 hot_block_score = 0 - hot_block_source = [] for k in score_list[5]: hot_block_score += k hot_block_source_data = score_source_list[5] @@ -271,38 +201,26 @@ # 楂樹綅鐗堜俊鎭� "high_block_infos": [], } - if k == "block_codes_rates_info": - hot_block_source.append(f"骞冲潎娑ㄥ箙:銆恵round(hot_block_source_data[k][0]/hot_block_source_data[k][1],2)}%銆�") - elif k == "limit_up_codes_count": - hot_block_source.append(f"鏉垮潡娑ㄥ仠鏁伴噺:銆恵hot_block_source_data[k]}銆�") - elif k == "target_block_info": - hot_block_source.append(f"鏉垮潡娑ㄥ箙:銆恵hot_block_source_data[k][1]}%銆�") - elif k == "limit_up_index": - hot_block_source.append(f"绗�恵hot_block_source_data[k]+1}銆戝彧娑ㄥ仠") - elif k == "high_block_infos": - for info in hot_block_source_data[k]: - hot_block_source.append(f"{info[0][1]}{info[1]}") - if k == "target_block_info": - hot_block_source.append(f"銆恵hot_block_source_data[k][0]}銆戞蹇靛嚭鐜般�恵hot_block_source_data[k][2]}銆戞") - score_list_new.append(hot_block_score) - score_source_list_new.append(",".join(hot_block_source)) + params["score_data"]["hot_block"] = {"score": hot_block_score,"limit_up_index":hot_block_source_data['limit_up_index']+1, + "block_name": hot_block_source_data['target_block_info'][0], + "limit_up_count": hot_block_source_data['limit_up_codes_count'], + "open_limit_up_count": hot_block_source_data['break_size']} # 涓婃澘鏃堕棿 - score_list_new.append(score_list[7]) - score_source_list_new.append(f"涓婃澘鏃堕棿銆恵score_source_list[7]}銆�") + params["score_data"]["limit_up_time"] = {"score": score_list[7], "time": score_source_list[7]} # 甯傚�煎ぇ灏� - score_list_new.append(score_list[0]) - score_source_list_new.append(f"鑷敱甯傚�笺�恵round(score_source_list[0] / 100000000, 2)}浜裤��") + params["score_data"]["zyltgb"] = {"score": score_list[0], "value": round(score_source_list[0] / 100000000, 2)} # 鑲′环澶у皬 - score_list_new.append(score_list[1]) - score_source_list_new.append(f"鐜颁环銆恵score_source_list[1]}銆戝厓") + params["score_data"]["limit_up_price"] = {"score": score_list[1], "price": score_source_list[1]} - score_info = (score, score_list_new, score_source_list_new) + params["score_data"]["total_score"] = score # zyltgb, limit_price, bidding, k_form, code_nature, hot_block, volume_rate, limit_up_time, # deal_big_money ###############################涓嬪崟淇℃伅############################### + params["score_data"]["trade_data"] = {} + # 鑾峰彇涔板叆鎰忔効 volume_rate = score_source_list[6] __L2PlaceOrderParamsManager = l2_trade_factor.L2PlaceOrderParamsManager(code, True, volume_rate, @@ -316,26 +234,23 @@ volume_rate), ((score, score_list), score_source_list)) - buy_params_info = [] if -1 < __L2PlaceOrderParamsManager.score_index < 3: - temp = "<font color='red'>銆愪富鍔ㄤ拱鍏ャ��" + params["score_data"]["trade_data"]["start"] = {"desc": "涓诲姩涔板叆"} if __L2PlaceOrderParamsManager.score_index == 0: - temp += "***" + params["score_data"]["trade_data"]["start"]["count"] = 3 elif __L2PlaceOrderParamsManager.score_index == 1: - temp += "**" + params["score_data"]["trade_data"]["start"]["count"] = 2 else: - temp += "*" - temp += "</font>" - buy_params_info.append(temp) + params["score_data"]["trade_data"]["start"]["count"] = 1 elif __L2PlaceOrderParamsManager.score_index < 0: - buy_params_info.append("銆愪笉鎵ц涔板叆銆�") + params["score_data"]["trade_data"]["start"] = {"desc": "涓嶆墽琛屼拱鍏�", "count": 0} else: - buy_params_info.append("銆愯鍔ㄤ拱鍏ャ��") + params["score_data"]["trade_data"]["start"] = {"desc": "琚姩涔板叆", "count": 0} # 瀹夊叏绗旀暟 safe_count = __L2PlaceOrderParamsManager.get_safe_count() base_safe_count, min_count, max_count = L2TradeFactorUtil.get_safe_buy_count(code, True) - buy_params_info.append(f"鍥哄畾瀹夊叏绗旀暟銆恵base_safe_count}銆戠瑪,琛板噺鍚庡畨鍏ㄧ瑪鏁般�恵safe_count}銆戠瑪") + params["score_data"]["trade_data"]["safe_count"] = {"base": base_safe_count, "now": safe_count} # 鍔ㄦ�丮鍊� m = __L2PlaceOrderParamsManager.get_m_val() zyltgb = global_util.zyltgb_map.get(code) @@ -343,133 +258,103 @@ global_data_loader.load_zyltgb() zyltgb = global_util.zyltgb_map.get(code) base_m = L2TradeFactorUtil.get_base_safe_val(zyltgb) - buy_params_info.append(f"鍥哄畾M鍊笺�恵base_m / 10000}涓囥�戯紝鍔ㄦ�丮鍊笺�恵m[0] / 10000}涓囥�� ") + params["score_data"]["trade_data"]["m"] = {"base": base_m // 10000, "now": m[0] // 10000}, # 涔板墠澶у崟 big_num = __L2PlaceOrderParamsManager.get_big_num_count() base_big_num = __base_L2PlaceOrderParamsManager.get_big_num_count() - buy_params_info.append(f"鍥哄畾涔板墠澶у崟銆恵base_big_num}銆戠瑪锛岃“鍑忓悗涔板墠澶у崟銆恵big_num}銆戠瑪") + params["score_data"]["trade_data"]["big_num"] = {"base": base_big_num, "now": big_num} # 鎴愪氦杩涘害 trade_progress, is_default = transaction_progress.TradeBuyQueue().get_traded_index(code) if trade_progress is None or trade_progress < 0 or is_default: - buy_params_info.append("鏈瘑鍒�") + # buy_params_info.append("鏈瘑鍒�") + pass else: data = total_datas[trade_progress] - buy_params_info.append( - f"銆恵data['val']['time']}銆戙�併�恵data['val']['num']}鎵嬨�戙�併�恵round(data['val']['num'] * float(data['val']['price']) * 100 / 10000, 1)}涓囥��") + params["score_data"]["trade_data"]["trade_progress"] = {"time": data['val']['time'], + "num": data['val']['num'], "money": round( + data['val']['num'] * float(data['val']['price']) * 100 / 10000, 1)} # 涔板叆淇″彿 buy_single_index, buy_exec_index, compute_index, num, count, max_num_set, volume_rate = l2_data_manager.TradePointManager.get_buy_compute_start_data( code) if buy_single_index is None: - buy_params_info.append("鏃犱俊鍙�") + # buy_params_info.append("鏃犱俊鍙�") + pass else: data = total_datas[buy_single_index] - buy_params_info.append( - f"銆恵data['val']['time']}銆戙�併�恵data['val']['num']}鎵嬨�戙�併�恵round(data['val']['num'] * float(data['val']['price']) * 100 / 10000, 1)}涓囥��") + params["score_data"]["trade_data"]["buy_single"] = {"time": data['val']['time'], "num": data['val']['num'], + "money": round(data['val']['num'] * float( + data['val']['price']) * 100 / 10000, 1)} if buy_exec_index is None or buy_exec_index < 0: - buy_params_info.append("鏈笅鍗�") + # buy_params_info.append("鏈笅鍗�") + pass else: data = total_datas[buy_exec_index] - buy_params_info.append( - f"銆恵data['val']['time']}銆戙�併�恵data['val']['num']}鎵嬨�戙�併�恵round(data['val']['num'] * float(data['val']['price']) * 100 / 10000, 1)}涓囥��") + params["score_data"]["trade_data"]["buy_exec"] = {"time": data['val']['time'], "num": data['val']['num'], + "money": round(data['val']['num'] * float( + data['val']['price']) * 100 / 10000, 1)} ##############################閫夎偂瀹�################################## - xgb_code_info = [] - for i in range(0, 4): - xgb_datas = hot_block_data_process.XGBHotBlockDataManager.list_by_code(code, day) - datas = [] - if xgb_datas: - for data in xgb_datas: - block = data[2] - block_datas = hot_block_data_process.XGBHotBlockDataManager.list_by_block(block, day) - block_datas = list(block_datas) - limit_up_count = 0 - limit_up_time = None - for d in block_datas: - if len(d[4]) > 6: - limit_up_count += 1 - if d[3] == code: - limit_up_time = d[4] - # 鏍规嵁娑ㄥ仠鏃堕棿鎺掑簭 - block_datas.sort(key=lambda d: (d[4] if len(d[4]) > 6 else '15:00:00')) - - for i in range(len(block_datas)): - if block_datas[i][3] == code: - datas.append( - (block, limit_up_count, (i + 1) if limit_up_time is not None else (limit_up_count + 1), - block_datas[i][5], block_datas[i][6])) - break - xgb_code_info.append(datas) - day = juejin.JueJinManager.get_previous_trading_date(day) + params["xgb_code_infos"] = [] ##############################鐑棬椋庡彛################################## - xgb_infos = [] - xgb_latest_datas = hot_block_data_process.XGBHotBlockDataManager.latest_datas - if not xgb_latest_datas: - xgb_infos.append('鏆傛湭鑾峰彇鍒版暟鎹�') - else: - # 鑾峰彇浠婃棩鐨勬墍鏈夋暟鎹� - datas_record = hot_block_data_process.XGBHotBlockDataManager.list_all(tool.get_now_date_str()) - datas_record_dict = {} - for data in datas_record: - block = data[2] - if block not in datas_record_dict: - datas_record_dict[block] = [] - # 浠g爜,浠g爜鍚嶇О,娑ㄥ仠鏃堕棿锛岄娆℃定鍋滄椂闂� - datas_record_dict[block].append((data[3], data[9], data[4], data[8], block)) - for block in xgb_latest_datas: - limit_up_count = 0 - codes = datas_record_dict.get(block[0]) - for code_data in block[2]: - if len(code_data[4]) > 6: - limit_up_count += 1 - # 鑾峰彇鏉垮潡涓殑浠g爜 - block_codes_set = set() - for d in block[2]: - _code = d[0][1].split(".")[0] - block_codes_set.add(_code) + params["xgb_infos"] = [] - if codes: - codes_data_html = "<table><tr>" - count = 0 - for code_data in codes: - if code_data[4] != block[0]: - # 涓嶆槸璇ユ澘鍧楁暟鎹� - continue - count += 1 - codes_data_html += "<td style = 'text-decoration锛歶nderline;'>" - # 濡傛灉浠g爜娑ㄥ仠鏃堕棿鎴栬�呮病鏈夊湪鏈�鏂扮殑浠g爜涓� - if (len(code_data[2]) < 6 or code_data[0] not in block_codes_set) and len(code_data[3]) > 6: - # 鐐告澘 - codes_data_html += f"<font color='#000080'>{code_data[1]}:{code_data[0]} </font>" - elif len(code_data[2]) > 6: - # 娑ㄥ仠 - codes_data_html += f"<font color='#FF3232'>{code_data[1]}:{code_data[0]} </font>" - else: - codes_data_html += f"{code_data[1]}:{code_data[0]} " - codes_data_html += "</td>" - if count % 4 == 0: - codes_data_html += "</tr><tr>" - codes_data_html += "</tr></table>" - _info = (f"***銆恵block[0]}銆戯紝娑ㄥ箙銆恵block[1]}銆戯紝鍏便�恵limit_up_count}銆戜釜娑ㄥ仠", codes_data_html) - is_target_block = False - if xgb_code_info: - for _code_info in xgb_code_info[0]: - if len(_code_info) > 0 and _code_info[0] == block[0]: - is_target_block = True - break - if is_target_block: - xgb_infos.insert(0, _info) - else: - xgb_infos.append(_info) - + # 杩斿洖涓诲姩涔�,琚姩涔�,涓嶄拱鐨勫垪琛�(浠g爜, 鍚嶇О, 寰楀垎, 鏄惁娑ㄥ仠) codes_score = __load_codes_scores() + params["initiative_buy_codes"] = [] + for d in codes_score[0]: + params["initiative_buy_codes"].append( + {"name": d[1], "code": d[0], "score": d[2], "limit_up": d[3], "open_limit_up": d[4]}) + + params["passive_buy_codes"] = [] + 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]}) + trade_info = __load_trade_record(code, total_datas) - return __format_data(code_info, score_info, buy_params_info, xgb_code_info, xgb_infos, codes_score, trade_info) + params["trade_record"] = {"open_limit_up": trade_info[0], "records": trade_info[2]} + + ##############################寮�鐩樺暒鐩稿叧淇℃伅################################## + params["kpl_industry_rank"] = [] + params["kpl_best_feng_kou"] = [] + params["kpl_feng_kou"] = [] + params["kpl_feng_xiang"] = [] + best_fengkou = __kplDataManager.get_data(kpl_util.KPLDataType.BEST_FENG_KOU) + fengkou = __kplDataManager.get_data(kpl_util.KPLDataType.FENG_KOU) + fengxiang = __kplDataManager.get_data(kpl_util.KPLDataType.FENG_XIANG) + rank_infos = __kplDataManager.get_data(kpl_util.KPLDataType.INDUSTRY_RANK) + # (浠g爜,鍚嶇О,寮哄害,娑ㄥ箙,鐑棬鏉垮潡,鎵�鏈夋澘鍧�) + if best_fengkou: + for r in best_fengkou: + hot_block = "銆�".join(r[4].split("銆�")[:2]) + params["kpl_best_feng_kou"].append( + {"name": r[1], "weight": r[2], "money": money_desc(r[2]), "rate": r[3], "hot_block": hot_block, + "hot_block_all": r[5]}) + if fengkou: + fengkou = fengkou[:30] + for r in fengkou: + # 甯傚満椋庡彛 + # (浠g爜,鍚嶇О,娑ㄥ箙,涓诲姏鍑�棰�,椋庡彛姒傚康) + params["kpl_feng_kou"].append( + {"name": r[1], "money": money_desc(r[3]), "rate": r[2], "block": r[4]}) + if fengxiang: + for r in fengxiang: + # 椋庡悜鏍� + # (浠g爜, 鍚嶇О, 鐜颁环, 娑ㄥ箙, 鏉垮潡, 300涓囧ぇ鍗曞噣棰�, 涓诲姏鍑�棰�, 鑷敱甯傚��) + params["kpl_feng_xiang"].append( + {"name": r[1], "money_300w": money_desc(r[5]), "money_main": money_desc(r[6]), "rate": r[3], + "block": r[4]}) + + if rank_infos: + for r in rank_infos: + params["kpl_industry_rank"].append({"name": r[1], "money": money_desc(r[2]), "rate": r[3]}) + + return render(params) def __load_codes_scores(): @@ -494,12 +379,14 @@ code_name = gpcode_manager.get_code_name(code) # 鑾峰彇鐜颁环锛屽垽鏂槸鍚︽定鍋� current_price_info = global_util.cuurent_prices.get(code) + limit_up_info = code_price_manager.Buy1PriceManager.get_limit_up_info(code) is_limit_up = True + open_limit_up = limit_up_info[0] and limit_up_info[1] if current_price_info is not None and not current_price_info[1]: is_limit_up = False else: is_limit_up = True - scores_list.append((code, code_name, scores[code], is_limit_up)) + scores_list.append((code, code_name, scores[code], is_limit_up, open_limit_up)) scores_list.sort(key=lambda x: x[2], reverse=True) fscores_list = [[], [], []] for score in scores_list: @@ -520,12 +407,13 @@ # 鑾峰彇鐐告澘淇℃伅 limit_up_info = code_price_manager.Buy1PriceManager.get_limit_up_info(code) break_time = limit_up_info[1] - records =[] + records = [] try: records = log.load_buy_score_recod(code) except: pass records_new = [] + records_new_data = [] index = 0 if records: try: @@ -537,6 +425,7 @@ index += 1 temp = f"绗瑊index}娆′笅鍗曪細銆恵time_}銆�&銆恵data['score']}鍒嗐��,{data.get('desc')}" records_new.append(temp) + records_new_data.append({"type": 1, "index": index, "time": time_, "score": data['score']}) elif type == 'S鎾�': # index':378 , 'rate':0.51 , 'target_rate':0.49 pass @@ -556,12 +445,64 @@ elif type == '鎾ゅ崟': temp = f"绗瑊index}娆℃挙鍗曪細銆恵time_}銆憑data['msg']}" records_new.append(temp) + records_new_data.append({"type": 0, "time": time_, "desc": data['msg']}) + except: pass - return break_time, records_new + return break_time, records_new, records_new_data if __name__ == '__main__': - st="8澶�3鏉�" - print(st[-2:-1]) + datas = { + "base_url": "http://192.168.3.122/kp/", + "code_name": "澶╁煙鐢熸�� 002255", + "score_data": {"volume": {"score": 20, "now": "12", "high": {"num": "56", "date": "2023-04-13"}}, + "bidding": {"score": 10, "money": "4563"}, + "deal_big_money": {"score": 10, "money": 0, "base_money": 456.5, + "start": {"time": "09:00:00", "num": 1456}, + "end": {"time": "09:00:00", "num": 1456}}, + "k_form": {"score": 10, "datas": ["鐮村墠楂�", "瓒呰穼琛ユ定", "娑ㄥ箙杩囬珮"]}, + "code_nature": {"score": 10, "data_desc": "娑ㄥ仠娆℃暟2娆�"}, + "hot_block": {"score": 10, "block_name": "褰辫", "limit_up_count": 10, "open_limit_up_count": 2}, + "limit_up_time": {"score": 10, "time": "09:56:00"}, + "zyltgb": {"score": 10, "value": "12.5"}, + "limit_up_price": {"score": 10, "price": "6.35"}, + "total_score": "210" + }, + "trade_data": {"star": {"desc": "琚姩涔板叆", "count": 0}, + "safe_count": {"base": 12, "now": 2}, + "m": {"base": 1200, "now": 1000}, + "big_num": {"base": 10, "now": 2}, + "trade_progress": {"time": "09:12:12", "num": 1111, "money": "12.56"}, + "buy_single": {"time": "09:12:12", "num": 1111, "money": "12.56"}, + "buy_exec": {"time": "09:12:12", "num": 1111, "money": "12.56"} + }, + "xgb_code_infos": [{"date": "浠婂ぉ", "blocks": [ + {"name": "褰辫", "limit_up_count": 2, "index": 1, "price": "12.00", "rate": "+10.00%"}, + {"name": "鏂囨梾", "limit_up_count": 3, "index": 2, "price": "12.00", "rate": "+10.00%"}, + ]}], + "initiative_buy_codes": [ + {"name": "娴嬭瘯1", "code": "000123", "score": 125, "limit_up": True, "open_limit_up": True}, + {"name": "娴嬭瘯2", "code": "000123", "score": 125, "limit_up": False, "open_limit_up": True}, + {"name": "娴嬭瘯2", "code": "000123", "score": 125, "limit_up": False, "open_limit_up": True}, + {"name": "娴嬭瘯2", "code": "000123", "score": 125, "limit_up": False, "open_limit_up": False} + ], + "passive_buy_codes": [{"name": "娴嬭瘯1", "code": "000123", "score": 125}, + {"name": "娴嬭瘯2", "code": "000123", "score": 125}, + {"name": "娴嬭瘯2", "code": "000123", "score": 125}, + {"name": "娴嬭瘯2", "code": "000123", "score": 125} + ], + "trade_record": {"open_limit_up": "10:00:03", "records": [ + {"type": 1, "index": 1, "time": "11:00:00", "score": 12}, + {"type": 0, "time": "11:26:00", "desc": "H鎾ゆ挙鍗�"} + ]}, + "xgb_infos": [{"block": {"name": "娴嬭瘯1", "rate": "+12.00%", "limit_up_count": 10}, + "codes": [ + {"limit_up": True, "name": "娴嬭瘯浠g爜", "code": "000654"}, + {"limit_up": True, "name": "娴嬭瘯浠g爜", "code": "000654"}, + {"limit_up": True, "name": "娴嬭瘯浠g爜", "code": "000654"}, + {"limit_up": False, "name": "娴嬭瘯浠g爜", "code": "000654"}, + ]}] + } + print(render(datas)) -- Gitblit v1.8.0