Administrator
2023-05-15 045a5aa6434da6e83c3d850b17e7e58cd7b55ef5
output/code_info_output.py
@@ -55,12 +55,17 @@
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)}万"
    return render(get_output_params(code))
def money_desc(money):
    if money > 100000000:
        return f"{round(money / 100000000, 2)}亿"
    else:
        return f"{round(money / 10000, 2)}万"
def get_output_params(code):
    params = {
        "base_url": "http://192.168.3.252/kp/",
    }
@@ -111,7 +116,8 @@
        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}
                                                  "base_money": score_source_list[8][1] // 10000,
                                                  "rate": round(score_source_list[8][0] / score_source_list[8][1], 2)}
        if deal_indexes:
            temps = []
            for index in deal_indexes:
@@ -135,28 +141,28 @@
        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(("涨幅过高", score_list[3][k]))
            elif k == 1:
                if score_source_list[3][k][0]:
                    k_source.append("突破前高")
                    k_source.append(("突破前高", score_list[3][k]))
            elif k == 2:
                if score_source_list[3][k][0]:
                    k_source.append("超跌补涨")
                    k_source.append(("超跌补涨", score_list[3][k]))
            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]}】", score_list[3][k]))
            elif k == 4:
                if score_source_list[3][k][0]:
                    k_source.append("N字型")
                    k_source.append(("N字型", score_list[3][k]))
            elif k == 5:
                if score_source_list[3][k][0]:
                    k_source.append("V字型")
                    k_source.append(("V字型", score_list[3][k]))
            elif k == 6:
                if not score_source_list[3][k][0]:
                    k_source.append("不满足任何形态")
                    k_source.append(("不满足任何形态", score_list[3][k]))
            elif k == 7:
                if score_source_list[3][k][0]:
                    k_source.append("天量大阳")
                    k_source.append(("天量大阳", score_list[3][k]))
        params["score_data"]["k_form"] = {"score": k_score, "datas": k_source}
@@ -166,21 +172,27 @@
        for k in score_list[4]:
            nature_score += k
        code_nature_datas = {"score": nature_score, "limit_up_count": score_source_list[4][0]}
        for n in range(0, len(score_source_list[4])):
            if n == 0:
                nature_source.append(f"涨停次数【{score_source_list[4][n]}】")
            elif n == 1:
                if score_source_list[4][n]:
                    nature_source.append(f"首板溢价率【{round(score_source_list[4][n], 2)}】")
                    code_nature_datas["first_limit_up_yijia"] = round(score_source_list[4][1], 2)
                else:
                    nature_source.append(f"无首板")
                    code_nature_datas["first_limit_up_yijia"] = "无首板"
            elif n == 2:
                if score_source_list[4][n]:
                    nature_source.append(f"首板炸板溢价率【{round(score_source_list[4][n], 2)}】")
                    code_nature_datas["first_open_limit_up_yijia"] = round(score_source_list[4][2], 2)
                else:
                    nature_source.append(f"无首板炸板")
                    code_nature_datas["first_open_limit_up_yijia"] = "无首板炸板"
        params["score_data"]["code_nature"] = {"score": nature_score, "data_desc": ",".join(nature_source)}
        params["score_data"]["code_nature"] = code_nature_datas
        # 板块热度
        hot_block_score = 0
@@ -208,6 +220,7 @@
                                             "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'],
                                             "block_history_count": hot_block_source_data['target_block_info'][2],
                                             "open_limit_up_count": hot_block_source_data['break_size']}
        # 上板时间
@@ -262,7 +275,7 @@
            global_data_loader.load_zyltgb()
            zyltgb = global_util.zyltgb_map.get(code)
        base_m = L2TradeFactorUtil.get_base_safe_val(zyltgb)
        params["trade_data"]["m_val"] = {"base": base_m // 10000, "now": m[0] // 10000},
        params["trade_data"]["m_val"] = {"base": base_m // 10000, "now": m[0] // 10000}
        # 买前大单
        big_num = __L2PlaceOrderParamsManager.get_big_num_count()
        base_big_num = __base_L2PlaceOrderParamsManager.get_big_num_count()
@@ -315,14 +328,7 @@
            elif trade_state == trade_manager.TRADE_STATE_BUY_SUCCESS:
                params["trade_data"]["trade_state"]["desc"] = "已成交"
    ##############################选股宝##################################
    params["xgb_code_infos"] = []
    ##############################热门风口##################################
    params["xgb_infos"] = []
    ##############################主动买,被动买##################################
    # 返回主动买,被动买,不买的列表(代码, 名称, 得分, 是否涨停)
    codes_score = __load_codes_scores()
    params["initiative_buy_codes"] = []
@@ -334,12 +340,23 @@
    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]
    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"] = {}
    params["kpl_code_info"] = {"industry":global_util.code_industry_map.get(code)}
    # 获取开盘啦板块
    plate_info = kpl_api.getStockIDPlate(code)
    if plate_info:
@@ -347,85 +364,18 @@
        plate_info.reverse()
        params["kpl_code_info"]["plate"] = plate_info
    # 获取代码的历史涨停数据
    params["kpl_code_info"]["code_records"] = KPLLimitUpDataRecordManager.get_latest_infos(code, 4)
    # 获取代码的历史涨停数据,(涨停原因,日期,板块)
    params["kpl_code_info"]["code_records"] = KPLLimitUpDataRecordManager.get_latest_infos(code, 4, False)[:2]
    # 获取今日板块
    block = block_info.get_target_block(code, False)
    if block is None:
        block = "无板块"
    # 获取最近的4个交易日
    today = tool.get_now_date_str()
    days = []
    day = today
    for i in range(3):
        day = juejin.JueJinManager.get_previous_trading_date(day)
        days.append(day)
    days.insert(0, today)
    # 获取这几天的涨停代码
    kpl_record_datas = {}
    for d in days:
        tem_datas = KPLLimitUpDataRecordManager.list_by_block(block, d)
        tem_datas = list(tem_datas)
        # 根据涨停时间排序
        tem_datas.sort(key=lambda x: int(x[5]))
    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])
            break
        kpl_record_datas[d] = {"codes": [], "hot_block": block, "index": -1, "limit_up_count": 0}
        for i in range(len(tem_datas)):
            temp = tem_datas[i]
            __code = temp[3]
            kpl_record_datas[d]["codes"].append(
                {"name": temp[4], "code": __code, "limit_up": False, "open_limit_up": False,"ss":(__code.find("00")==0 or __code.find("60")==0) })
            if __code == code:
                kpl_record_datas[d]["blocks"] = temp[6].split("、")
                kpl_record_datas[d]["index"] = i + 1
                kpl_record_datas[d]["limit_up_time"] = time.strftime("%H:%M:%S", time.localtime(int(temp[5])))
    # 获取今日代码的得分
    __score_dict = {}
    for fs in codes_score:
        for s in fs:
            # (得分,是否涨停)
            __score_dict[s[0]] = (s[2], s[3])
    # 获取分值
    for d in kpl_record_datas[today]["codes"]:
        __code = d["code"]
        if __code in __score_dict:
            d["score"] = __score_dict[__code][0]
    # 获取是否涨停,统计涨停数量
    for d in kpl_record_datas:
        # 获取涨停代码信息
        limit_up_datas = __kplDataManager.get_from_file(kpl_util.KPLDataType.LIMIT_UP, d)
        if limit_up_datas is None:
            limit_up_datas = []
        limit_up_codes = set([x[0] for x in limit_up_datas])
        limit_up_count = 0
        for code_info in kpl_record_datas[d]["codes"]:
            __code = code_info["code"]
            if __code in limit_up_codes:
                code_info["limit_up"] = True
                code_info["open_limit_up"] = False
                limit_up_count += 1
            else:
                code_info["limit_up"] = False
                code_info["open_limit_up"] = True
        kpl_record_datas[d]["limit_up_count"] = limit_up_count
    block_records = [[key, kpl_record_datas[key]] for key in kpl_record_datas]
    block_records.sort(key=lambda x: x[0])
    block_records.reverse()
    for i in range(len(block_records)):
        if i == 0:
            block_records[i][0] = "今天"
        elif i == 1:
            block_records[i][0] = "昨天"
        elif i == 2:
            block_records[i][0] = "前天"
        elif i == 3:
            block_records[i][0] = "之前"
    params["kpl_code_info"]["block_records"] = block_records
    return render(params)
    return params
def __load_codes_scores():