| | |
| | | # 下单参数信息 |
| | | # 选股宝 |
| | | # 市场热度 |
| | | import os |
| | | import sys |
| | | import time |
| | | |
| | | import code_volumn_manager |
| | | import code_attribute |
| | | from code_attribute import code_volumn_manager, limit_up_time_manager, global_data_loader, gpcode_manager |
| | | import constant |
| | | import global_data_loader |
| | | import global_util |
| | | import gpcode_manager |
| | | import limit_up_time_manager |
| | | import log |
| | | import tool |
| | | from utils import global_util, tool |
| | | from logs import log |
| | | 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 third_data import kpl_data_manager, kpl_api |
| | | from third_data.kpl_data_manager import KPLLimitUpDataRecordManager |
| | | 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 = {} |
| | | kpl_block_info_dict = {} |
| | | |
| | | __kplDataManager = kpl_data_manager.KPLDataManager() |
| | | |
| | |
| | | |
| | | |
| | | def render(params): |
| | | env = Environment(loader=FileSystemLoader('D:/workspace/trade/output')) |
| | | env = Environment(loader=FileSystemLoader('/workspace/trade/output')) |
| | | css = env.get_template('css/index.css') |
| | | params["css"] = css.render() |
| | | template = env.get_template('index.html') |
| | |
| | | |
| | | |
| | | def get_output_params(code, jingxuan_cache_dict, industry_cache_dict): |
| | | __start_time = time.time() |
| | | |
| | | def format_plate_output(_plat): |
| | | if _plat in jingxuan_cache_dict: |
| | | return _plat, money_desc(jingxuan_cache_dict[_plat][3]) |
| | |
| | | if l2_trade_util.WhiteListCodeManager.is_in(code): |
| | | code_extra_infos.append("白名单") |
| | | # 获取白名单,黑名单 |
| | | if trade_manager.gpcode_manager.WantBuyCodesManager.is_in(code): |
| | | if code_attribute.gpcode_manager.WantBuyCodesManager.is_in(code): |
| | | code_extra_infos.append("想买单") |
| | | if trade_manager.gpcode_manager.PauseBuyCodesManager.is_in(code): |
| | | if code_attribute.gpcode_manager.PauseBuyCodesManager.is_in(code): |
| | | code_extra_infos.append("暂不买") |
| | | params["code"] = code |
| | | params["code_name"] = f"{gpcode_manager.get_code_name(code)} {code} ({','.join(code_extra_infos)})" |
| | |
| | | |
| | | params["score_data"]["k_form"] = {"score": k_score, "datas": k_source} |
| | | |
| | | log.logger_debug.info(f"K线形态耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | # 历史股性 |
| | | nature_score = 0 |
| | | nature_source = [] |
| | |
| | | code_nature_datas["first_open_limit_up_yijia"] = "无首板炸板" |
| | | |
| | | params["score_data"]["code_nature"] = code_nature_datas |
| | | |
| | | log.logger_debug.info(f"历史股性耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | # 板块热度 |
| | | hot_block_score = 0 |
| | |
| | | |
| | | # zyltgb, limit_price, bidding, k_form, code_nature, hot_block, volume_rate, limit_up_time, |
| | | # deal_big_money |
| | | log.logger_debug.info(f"板块热度耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | ###############################下单信息############################### |
| | | params["trade_data"] = {} |
| | |
| | | (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))) |
| | | 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, |
| | |
| | | elif trade_state == trade_manager.TRADE_STATE_BUY_SUCCESS: |
| | | params["trade_data"]["trade_state"]["desc"] = "已成交" |
| | | |
| | | log.logger_debug.info(f"下单信息耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | # 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) |
| | |
| | | params["trade_data"]["h_cancel"]["datas"].append( |
| | | (val["time"], val["num"], money_desc(val["num"] * float(val["price"]) * 100), |
| | | (1 if canceled else 0))) |
| | | log.logger_debug.info(f"H撤监听范围耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | ##############################主动买,被动买################################## |
| | | # 返回主动买,被动买,不买的列表(代码, 名称, 得分, 是否涨停) |
| | |
| | | {"name": d[1], "code": d[0], "score": d[2], "limit_up": d[3], "open_limit_up": d[4]}) |
| | | |
| | | params["passive_buy_codes"] = params["passive_buy_codes"] |
| | | log.logger_debug.info(f"主动买,被动买耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | trade_info = __load_trade_record(code, total_datas) |
| | | params["trade_record"] = {"open_limit_up": trade_info[0], "records": trade_info[2]} |
| | | |
| | | log.logger_debug.info(f"读取交易记录耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | ##############################开盘啦相关信息################################## |
| | | industry = global_util.code_industry_map.get(code) |
| | | params["kpl_code_info"] = { |
| | | "industry": format_plate_output(industry)} |
| | | # 获取开盘啦板块 |
| | | plate_info = kpl_api.getStockIDPlate(code) |
| | | plate_info = None |
| | | if code not in kpl_block_info_dict: |
| | | plate_info = kpl_api.getStockIDPlate(code) |
| | | else: |
| | | plate_info = kpl_block_info_dict.get(code) |
| | | if plate_info: |
| | | kpl_block_info_dict[code] = plate_info |
| | | plate_info.sort(key=lambda x: x[2]) |
| | | plate_info.reverse() |
| | | params["kpl_code_info"]["plate"] = [(k[0], k[1], k[2], format_plate_output(k[1])[1]) for k in plate_info] |
| | | |
| | | log.logger_debug.info(f"开盘啦板块耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | |
| | | # 获取代码的历史涨停数据,(涨停原因,日期,板块) |
| | | code_records = KPLLimitUpDataRecordManager.get_latest_infos(code, 4, False)[:2] |
| | |
| | | params["kpl_code_info"]["today"] = (format_plate_output(d[2]), d[1], plates) |
| | | break |
| | | |
| | | log.logger_debug.info(f"获取代码的历史涨停数据耗时:{time.time() - __start_time}") |
| | | __start_time = time.time() |
| | | return params |
| | | |
| | | |