From 8535f56dbf6e410b4a09f02f95d4d49bcc8753f2 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 27 三月 2023 18:58:54 +0800 Subject: [PATCH] 看盘页面数据调整 --- trade/first_code_score_manager.py | 239 +++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 140 insertions(+), 99 deletions(-) diff --git a/trade/first_code_score_manager.py b/trade/first_code_score_manager.py index f4a6755..3b08089 100644 --- a/trade/first_code_score_manager.py +++ b/trade/first_code_score_manager.py @@ -21,151 +21,192 @@ def __get_score(zyltgb, limit_price, bidding, k_form, code_nature, hot_block, volume_rate, limit_up_time, deal_big_money): - score = 0 score_list = [] - # 寮�鐩樺墠绔炰环 - if bidding: - score += 25 - score_list.append(25) - else: - score_list.append(0) - # 澶у崟鎴愪氦 - if deal_big_money: - score += 30 - score_list.append(30) - else: - score_list.append(0) - # 閲� - volume_score = [0, 40, 50, 40, 30, 10, -150, -1000] - volume_rates = [0, 0.499, 0.649, 0.799, 0.949, 1.099, 1.249, 1.399] - for i in range(1, len(volume_rates)): - if volume_rates[i - 1] <= volume_rate < volume_rates[i]: - score += volume_score[i - 1] - score_list.append(volume_score[i - 1]) - break - - # 15涓氦鏄撴棩鏄惁娑ㄥ箙24.9% - if k_form[0]: - score += -100 - score_list.append(-100) - else: - score_list.append(0) - # 鏄惁鐮村墠楂� - if k_form[1]: - score += 50 - score_list.append(50) - else: - score_list.append(0) - # 鏄惁瓒呰穼 - if k_form[2]: - score += 40 - score_list.append(40) - else: - score_list.append(0) - - # 鏄惁鎺ヨ繎鍓嶉珮 - if k_form[3]: - score += -50 - score_list.append(-50) - else: - score_list.append(0) - # 鏄惁N - if k_form[4]: - score += 35 - score_list.append(35) - else: - score_list.append(0) - # 鏄惁V - if k_form[5]: - score += 30 - score_list.append(30) - else: - score_list.append(0) - - if not code_nature[0]: - score += 5 - score_list.append(5) - else: - score_list.append(0) - if code_nature[1]: - score += 20 - score_list.append(20) - else: - score_list.append(0) - - if hot_block[0] >= 2: - score += 40 - score_list.append(40) - else: - score += 30 - score_list.append(30) - if hot_block[1] > 0: - score += 10 - score_list.append(10) - else: - score_list.append(0) - if zyltgb: - score += -80 - score_list.append(-80) + zyltgbs = [0, 10, 31, 51, 101, 150, 250, 1000000] + zyltgb_score = [5, 25, 20, 15, 10, 5, -80] + for i in range(1, len(zyltgbs)): + if zyltgbs[i - 1] <= zyltgb / 100000000 < zyltgbs[i]: + score_list.append(zyltgb_score[i - 1]) else: score_list.append(0) if limit_price: - score += -1000 score_list.append(-1000) else: score_list.append(0) + # 寮�鐩樺墠绔炰环 + if bidding: + score_list.append(25) + else: + score_list.append(0) + + k_score = [] + # 15涓氦鏄撴棩鏄惁娑ㄥ箙24.9% + if k_form[0]: + k_score.append(-25) + else: + k_score.append(0) + # 鏄惁鐮村墠楂� + + if k_form[1]: + k_score.append(50) + else: + k_score.append(0) + # 鏄惁瓒呰穼 + if k_form[2]: + k_score.append(40) + else: + k_score.append(0) + + # 鏄惁鎺ヨ繎鍓嶉珮 + if k_form[3]: + k_score.append(-25) + else: + k_score.append(0) + # 鏄惁N + if k_form[4]: + k_score.append(35) + else: + k_score.append(0) + # 鏄惁V + if k_form[5]: + k_score.append(30) + else: + k_score.append(0) + score_list.append(k_score) + + nature_score = [] + + if code_nature is None: + code_nature = [True, False] + + if not code_nature[0]: + nature_score.append(5) + else: + nature_score.append(0) + if code_nature[1]: + nature_score.append(20) + else: + nature_score.append(0) + + score_list.append(nature_score) + + hot_block_score = [] + + if hot_block[1] >= 2: + hot_block_score.append(40) + else: + hot_block_score.append(30) + if hot_block[2] > 0: + hot_block_score.append(10) + else: + hot_block_score.append(0) + score_list.append(hot_block_score) + + # 閲� + volume_score = [0, 40, 50, 40, 30, 10, -15, -35] + volume_rates = [0, 0.499, 0.649, 0.799, 0.949, 1.099, 1.249, 1.399] + volume_add = False + for i in range(1, len(volume_rates)): + if volume_rates[i - 1] <= volume_rate < volume_rates[i]: + score_list.append(volume_score[i - 1]) + volume_add = True + break + if not volume_add: + score_list.append(volume_score[-1]) + if limit_up_time: - score += 20 score_list.append(20) else: score_list.append(0) + # 澶у崟鎴愪氦 + if deal_big_money: + score_list.append(30) + else: + score_list.append(0) + + score = 0 + for s in score_list: + if type(s) == list: + for ss in s: + score += ss + else: + score += s return score, score_list -def get_score(code, volume_rate, limit_up_time): - bidding_money = bidding_money_manager.get_bidding_money(code) - bidding = False - if bidding_money and bidding_money >= 5000: - bidding = True +def get_score(code, volume_rate, limit_up_time, with_source_data=False): + source_datas = [] + # 鑾峰彇鑷敱娴侀�氳偂鏈� zyltgb = global_util.zyltgb_map.get(code) if zyltgb is None: + global_data_loader.load_zyltgb() + zyltgb = global_util.zyltgb_map.get(code) + if zyltgb is None: zyltgb = 100 * 100000000 + source_datas.append(zyltgb) + + limit_price = float(gpcode_manager.get_limit_up_price(code)) + source_datas.append(limit_price) + + # 绔炰环閲戦 + bidding_money = bidding_money_manager.get_bidding_money(code) + source_datas.append(bidding_money) + bidding = False + if bidding_money and bidding_money >= 5000: + bidding = True k_form = code_nature_analyse.CodeNatureRecordManager.get_k_format(code) if k_form is None: - k_form = [True, False, False, False, False, False] + k_form = [(True, ''), (False, ''), (False, ''), (False, ''), (False, ''), (False, '')] + source_datas.append(k_form) + code_nature = code_nature_analyse.CodeNatureRecordManager.get_nature(code) + source_datas.append(code_nature) hot_block = hot_block_data_process.get_info(code) if hot_block is None: - hot_block = (1, 0) + hot_block = ('鏃犳澘鍧�', 1, 0) else: # 鍔犱笂鑷繁 - hot_block = (hot_block[0] + 1, hot_block[1]) + hot_block = (hot_block[0], hot_block[1] + 1, hot_block[2]) + source_datas.append(hot_block) + + source_datas.append(volume_rate) + + source_datas.append(limit_up_time) if limit_up_time and tool.trade_time_sub(limit_up_time, "10:00:00") < 0: limit_up_time = True else: limit_up_time = False + # 鑾峰彇鎴愪氦澶у崟 deal_big_num = deal_big_money_manager.get_deal_big_money_num(code) m = l2_trade_factor.L2TradeFactorUtil.get_base_safe_val(zyltgb) - limit_price = float(gpcode_manager.get_limit_up_price(code)) + source_datas.append((deal_big_num * limit_price * 100, m)) + if deal_big_num * limit_price * 100 > m: deal_big_num = True else: deal_big_num = False - return __get_score(zyltgb >= 250 * 100000000, limit_price > 100, bidding, k_form, code_nature, hot_block, - volume_rate, limit_up_time, deal_big_num) + k_form_1 = [] + for d in k_form: + k_form_1.append(d[0]) + + result = __get_score(zyltgb, limit_price > 100, bidding, k_form_1, code_nature, hot_block, + volume_rate, limit_up_time, deal_big_num) + if with_source_data: + return result, source_datas + return result if __name__ == "__main__": global_data_loader.load_zyltgb() - score = get_score("601698", 1.2, "15:00:01") + score = get_score("000779", 1.2, "15:00:01", True) print(score) -- Gitblit v1.8.0