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