From b946684114d097e937b766f986d12c7eea8edce8 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期日, 18 九月 2022 17:23:43 +0800
Subject: [PATCH] l2数据计算优化

---
 l2_trade_factor.py |   46 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/l2_trade_factor.py b/l2_trade_factor.py
index 78b8438..e886d64 100644
--- a/l2_trade_factor.py
+++ b/l2_trade_factor.py
@@ -1,4 +1,7 @@
 # l2浜ゆ槗鍥犲瓙
+import global_util
+
+
 class L2TradeFactorUtil:
     # 鑾峰彇鍩虹m鍊硷紝杩斿洖鍗曚綅涓哄厓
     @classmethod
@@ -93,15 +96,45 @@
         # 鑷敱娴侀�氳偂鏈奖鍝嶆瘮渚�
         zyltgb_rate = cls.get_zylt_rate(zyltgb)
         # 琛屼笟娑ㄥ仠褰卞搷姣斾緥
-        industry_rate = cls.get_industry_rate(total_industry_limit_percent)
+        industry_rate=0
+        if total_industry_limit_percent is not None:
+            industry_rate = cls.get_industry_rate(total_industry_limit_percent)
         # 閲忓奖鍝嶆瘮渚�
-        volumn_rate=cls.get_volumn_rate(volumn_day60_max,volumn_yest,volumn_today)
+        volumn_rate = 0
+        if volumn_day60_max is not None and volumn_yest is not None and volumn_today is not None:
+            volumn_rate = cls.get_volumn_rate(volumn_day60_max, volumn_yest, volumn_today)
         # 娑ㄥ仠鏃堕棿褰卞搷姣斾緥
-        limit_up_time_rate=cls.get_limit_up_time_rate(limit_up_time)
+        limit_up_time_rate=0
+        if limit_up_time is not None:
+            limit_up_time_rate = cls.get_limit_up_time_rate(limit_up_time)
         # 涓囨墜鍝ュ奖鍝�
-        big_money_rate=cls.get_big_money_rate(big_money_num)
+        big_money_rate = 0
+        if big_money_num is not None:
+            big_money_rate = cls.get_big_money_rate(big_money_num)
+        print("zyltgb_rate锛歿} industry_rate锛歿} volumn_rate锛歿} limit_up_time_rate锛歿} big_money_rate锛歿}",zyltgb_rate,industry_rate,volumn_rate,limit_up_time_rate,big_money_rate)
 
-        return 1-(zyltgb_rate+industry_rate+volumn_rate+limit_up_time_rate+big_money_rate);
+        return 1 - (zyltgb_rate + industry_rate + volumn_rate + limit_up_time_rate + big_money_rate);
+
+    @classmethod
+    def compute_rate_by_code(cls, code):
+        zyltgb = global_util.zyltgb_map.get(code)
+        total_industry_limit_percent = global_util.industry_hot_num.get(code)
+        volumn_day60_max, volumn_yest, volumn_today = global_util.max60_volumn.get(
+            code), global_util.yesterday_volumn.get(code), global_util.today_volumn.get(code)
+        limit_up_time = global_util.limit_up_time.get(code)
+        big_money_num = global_util.big_money_num.get(code)
+        return cls.compute_rate(zyltgb, total_industry_limit_percent, volumn_day60_max, volumn_yest, volumn_today,
+                                limit_up_time, big_money_num)
+
+    @classmethod
+    def compute_m_value(cls, code):
+        zyltgb = global_util.zyltgb_map.get(code)
+        if zyltgb is None:
+            print("娌℃湁鑾峰彇鍒拌嚜鐢辨祦閫氬競鍊�")
+            return 10000000
+        rate = cls.compute_rate_by_code(code)
+        print("m鍊艰幏鍙栵細",code,round(zyltgb*rate))
+        return round(zyltgb*rate)
 
 
 # l2鍥犲瓙褰掑洜鏁版嵁
@@ -109,6 +142,9 @@
     # 鏄惁涓哄ぇ鍗�
     @classmethod
     def is_big_money(cls, data):
+        if int(data["val"]["limitPrice"]) != 1:
+            return False
+
         if int(data["val"]["num"]) >= 9000:
             return True
         money = round(float(data["val"]["price"]) * int(data["val"]["num"]) * 100)

--
Gitblit v1.8.0