From d30c3d2335348d65878735b18aaf2d1f4537db1c Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 23 四月 2024 17:33:33 +0800
Subject: [PATCH] 买入目标票单价升至15块

---
 utils/data_export_util.py |  128 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 109 insertions(+), 19 deletions(-)

diff --git a/utils/data_export_util.py b/utils/data_export_util.py
index 6058200..0f934fc 100644
--- a/utils/data_export_util.py
+++ b/utils/data_export_util.py
@@ -11,41 +11,59 @@
 import constant
 from code_attribute import gpcode_manager
 import l2.l2_data_util
+from l2.huaxin import l2_huaxin_util
 from log_module import log, log_export
 from l2 import l2_data_source_util
 from trade import deal_big_money_manager
+from utils import tool
 
 
 def export_l2_excel(code, date=None):
     # 鑾峰彇L2鐨勬暟鎹�
-    local_today_datas = log_export.load_l2_from_log(date)
-    datas = local_today_datas[code]
-    datas = datas[-2000:]
-    # 鑾峰彇L2澶勭悊浣嶇疆淇℃伅
-    process_indexs = log_export.get_l2_process_position(code, date)
-    trade_indexs = log_export.get_l2_trade_position(code, date)
-    real_position_indexes = log_export.get_real_place_order_positions(code, date)
-    fdatas = export_l2_data(code, datas, process_indexs, trade_indexs, real_position_indexes)
+    fdatas = get_l2_datas(code, date=date)
     __save_l2_datas(code, fdatas)
 
 
 # 鑾峰彇L2鐨勬暟鎹�
-def get_l2_datas(code, date=None):
-    local_today_datas = log_export.load_l2_from_log(date)
-    datas = local_today_datas[code]
+def get_l2_datas(code, today_datas=None, date=None, max_time=None):
+    if date is None:
+        date = tool.get_now_date_str()
+    datas = today_datas
+    if datas is None:
+        local_today_datas = log_export.load_l2_from_log(date)
+        datas = local_today_datas.get(code)
+    if not datas:
+        datas = []
     process_indexs = log_export.get_l2_process_position(code, date)
     trade_indexs = log_export.get_l2_trade_position(code, date)
     real_position_indexes = log_export.get_real_place_order_positions(code, date)
-    deal_list = log_export.load_huaxin_deal_record(code)
+    deal_list = log_export.load_huaxin_deal_record(code, date)
     deal_list_dict = {}
     for d in deal_list:
-        deal_list_dict[d[0]] = d
+        deal_list_dict[str(d[0])] = d
 
-    fdatas = export_l2_data(code, datas, process_indexs, trade_indexs, real_position_indexes, deal_list_dict)
+    sell_no_dict = log_export.load_huaxin_transaction_sell_no(code=code, date=date)
+    sell_nos = sell_no_dict.get(code)
+    active_sell_map = log_export.load_huaxin_active_sell_map(date=date)
+    active_sell_set = active_sell_map.get(code)
+    if not active_sell_set:
+        active_sell_set = set()
+    fdatas = export_l2_data(code, datas, process_indexs, trade_indexs, real_position_indexes, deal_list_dict, sell_nos,
+                            active_sell_set)
     return fdatas
 
 
-def export_l2_data(code, datas, process_indexs, trade_indexs, real_position_indexes, deal_list_dict):
+def get_l2_transaction_datas(code, date=None):
+    if date is None:
+        date = tool.get_now_date_str()
+    sell_no_dict = log_export.load_huaxin_transaction_sell_no(code=code, date=date)
+    sell_nos = sell_no_dict.get(code)
+    fdatas = export_l2_transaction_data(code, sell_nos)
+    return fdatas
+
+
+def export_l2_data(code, datas, process_indexs, trade_indexs, real_position_indexes, deal_list_dict, sell_nos,
+                   active_sell_nos):
     def find_process_index(index):
         for i in range(0, len(process_indexs)):
             if process_indexs[i][0] <= index <= process_indexs[i][1]:
@@ -62,7 +80,9 @@
     num_operate_map = {}
     l2.l2_data_util.load_num_operate_map(num_operate_map, code, datas)
     buy_no_map = {}
+    sell_no_map = {}
     l2.l2_data_util.load_buy_no_map(buy_no_map, code, datas)
+    l2.l2_data_util.load_sell_no_map(sell_no_map, code, datas)
 
     l2.l2_data_util.load_canceled_buy_no_map(l2.l2_data_util.local_today_canceled_buyno_map, code, datas)
 
@@ -76,6 +96,11 @@
     fdatas = []
     for data in datas:
         index += 1
+        # 鍏堢Щ闄�
+        if data['val']['orderNo'] in active_sell_nos:
+            # 杩囨护涓诲姩鍗�
+            continue
+
         trade_info = find_trade_index(data["index"])
         if not trade_info:
             # 鑾峰彇鐪熷疄涓嬪崟浣嶇疆
@@ -155,12 +180,19 @@
             # 涔�
             if cancel_data:
                 try:
-                    cancel_info = "{}-{}".format(cancel_data["index"], cancel_data["val"]["time"])
+                    left_num = data["val"]["num"] - cancel_data["val"]["num"]
+                    if left_num > 0:
+                        cancel_info = f"鎴愪氦:{left_num} 搴忓彿:{cancel_data['index']}"
+                    else:
+                        cancel_info = "{}-{}".format(cancel_data["index"], f"{cancel_data['val']['time']}") + (
+                            f".{cancel_data['val']['tms']}" if "tms" in cancel_data["val"] else '')
                 except Exception as e:
                     logging.exception(e)
             else:
-                if int(data["val"].get("orderNo")) in deal_list_dict:
-                    cancel_info = deal_list_dict[int(data["val"].get("orderNo"))][3]
+                deal_info = deal_list_dict.get(str(data["val"].get("orderNo")))
+                if deal_info and len(deal_info) >= 5:
+                    cancel_info = l2_huaxin_util.convert_time(deal_info[4],
+                                                              with_ms=True)
         format_data.append(cancel_info)
         cancel_order_info = None
         if trade_info:
@@ -176,6 +208,64 @@
         format_data.append(cancel_order_info)
         format_data.append(data["val"].get("orderNo"))
         fdatas.append((style_int, trade_info, format_data))
+
+    # 灏嗚鍗曞彿绱㈠紩
+    order_no_index_map = {}
+    for i in range(len(fdatas)):
+        d = fdatas[i][2]
+        if d[6].find('鎾�') >= 0:
+            continue
+        order_no_index_map[int(d[10])] = i
+    order_no_indexes = [(k, order_no_index_map[k]) for k in order_no_index_map]
+    order_no_indexes.sort(key=lambda x: x[0])
+    # 涓嶆坊鍔犱富鍔ㄥ崠鏁版嵁
+    # if sell_nos:
+    #     for sell_info in sell_nos:
+    #         if sell_info[1] * sell_info[2] < 50 * 10000:
+    #             continue
+    #         for i in range(len(order_no_indexes) - 1):
+    #             if order_no_indexes[i][0] < sell_info[0] < order_no_indexes[i + 1][0]:
+    #                 item = []
+    #                 item.append(order_no_indexes[i + 1][1])
+    #                 item.append(l2_huaxin_util.convert_time(sell_info[3][0], with_ms=True))
+    #                 item.append("")
+    #                 item.append(
+    #                     "{}涓�".format(round(sell_info[1] * sell_info[2] / 10000, 1)))
+    #                 item.append(sell_info[2])
+    #                 item.append(sell_info[1] // 100)
+    #                 item.append("涓诲姩鍗�")
+    #                 item.append(1)
+    #                 item.append(l2_huaxin_util.convert_time(sell_info[4][0], with_ms=True))
+    #                 item.append(None)
+    #                 item.append(sell_info[0])
+    #                 fdatas.insert(order_no_indexes[i + 1][1], (0, None, item))
+    #                 break
+
+    return fdatas
+
+
+def export_l2_transaction_data(code, sell_nos):
+    fdatas = []
+    if sell_nos:
+        index = 0
+        for sell_info in sell_nos:
+            if sell_info[1] * sell_info[2] < 50 * 10000:
+                continue
+            index += 1
+            item = []
+            item.append(index)
+            item.append(l2_huaxin_util.convert_time(sell_info[3][0], with_ms=True))
+            item.append("")
+            item.append(
+                "{}涓�".format(round(sell_info[1] * sell_info[2] / 10000, 1)))
+            item.append(sell_info[2])
+            item.append(sell_info[1] // 100)
+            item.append("涓诲姩鍗�")
+            item.append(1)
+            item.append(l2_huaxin_util.convert_time(sell_info[4][0], with_ms=True))
+            item.append(None)
+            item.append(sell_info[0])
+            fdatas.append((0, None, item))
     return fdatas
 
 
@@ -279,6 +369,6 @@
 
 if __name__ == "__main__":
     try:
-        export_l2_excel("605218")
+        get_l2_datas("600990")
     except Exception as e:
         logging.exception(e)

--
Gitblit v1.8.0