From ed9e2367eea9baa6c8bea82e0f81c209ffb2a56f Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 02 一月 2023 17:55:50 +0800
Subject: [PATCH] 撤单策略再次修改

---
 data_export_util.py |  128 +++++++++++++++++++++++++++++++++---------
 1 files changed, 99 insertions(+), 29 deletions(-)

diff --git a/data_export_util.py b/data_export_util.py
index 8f46882..f5341ff 100644
--- a/data_export_util.py
+++ b/data_export_util.py
@@ -7,15 +7,51 @@
 
 import xlwt
 
+import l2_data_util
+import log
 
-def export_l2_data(code, datas, dest_dir="D:/export/l2"):
+import l2_data_manager
+
+
+def export_l2_excel(code,date=None):
+    # 鑾峰彇L2鐨勬暟鎹�
+    local_today_datas=log.load_l2_from_log(date)
+    datas = local_today_datas[code]
+    # 鑾峰彇L2澶勭悊浣嶇疆淇℃伅
+    process_indexs = log.get_l2_process_position(code,date)
+    trade_indexs = log.get_l2_trade_position(code,date)
+    export_l2_data(code, datas, process_indexs, trade_indexs)
+
+
+def export_l2_data(code, datas, process_indexs, trade_indexs, dest_dir="D:/export/l2"):
+    def find_process_index(index):
+        for i in range(0, len(process_indexs)):
+            if process_indexs[i][0] <= index <= process_indexs[i][1]:
+                return i
+        return len(process_indexs)
+
+    def find_trade_index(index):
+        for i in range(0, len(trade_indexs)):
+            if trade_indexs[i][1] == index:
+                return trade_indexs[i]
+        return None
+
+    # 鏁版嵁棰勫鐞�
+    num_operate_map = {}
+    l2_data_util.load_num_operate_map(num_operate_map, code, datas)
+    num_dict = {}
+    for data in datas:
+        if data["val"]["num"] not in num_dict:
+            num_dict[data["val"]["num"]] = []
+        num_dict[data["val"]["num"]].append(data)
+
     local_time = time.strftime("%Y%m%dT%H%M%S", time.localtime(time.time()))
     file_name = "{}/{}_{}.xls".format(dest_dir, code, local_time)
     file_name_txt = "{}/{}_{}.txt".format(dest_dir, code, local_time)
-    openfile = open(file_name_txt,'w')
+    openfile = open(file_name_txt, 'w')
     try:
         for data in datas:
-            openfile.write(json.dumps(data)+"\n")
+            openfile.write(json.dumps(data) + "\n")
     finally:
         openfile.close()
     wb = xlwt.Workbook()
@@ -23,20 +59,41 @@
     ws.write(0, 0, '搴忓彿')
     ws.write(0, 1, '鏃堕棿')
     ws.write(0, 2, '涔版挙闂撮殧')
-    ws.write(0, 3, '浠锋牸')
-    ws.write(0, 4, '鎵嬫暟')
-    ws.write(0, 5, '绫诲瀷')
-    ws.write(0, 6, '閲嶅鏁伴噺')
+    ws.write(0, 3, '閲戦')
+    ws.write(0, 4, '浠锋牸')
+    ws.write(0, 5, '鎵嬫暟')
+    ws.write(0, 6, '绫诲瀷')
+    ws.write(0, 7, '閲嶅鏁伴噺')
+    ws.write(0, 8, '鎾ゅ崟鏃堕棿')
+
     index = 0
     for data in datas:
         index += 1
-        ws.write(index, 0, data["index"])
-        ws.write(index, 1, data["val"]["time"])
+        trade_info = find_trade_index(data["index"])
+        font = xlwt.Font()
+        if trade_info:
+            if trade_info[0] == 0:
+                font.colour_index = 53
+            elif trade_info[0] == 1:
+                font.colour_index = 17
+            elif trade_info[0] == 2:
+                font.colour_index = 10
+                ws.write(index, 8, trade_info[2])
+        style = None
+        if find_process_index(data["index"]) % 2 == 0:
+            style = xlwt.easyxf('pattern: pattern solid')
+        else:
+            style = xlwt.easyxf('pattern: pattern solid, fore_colour light_yellow')
+        style.font = font
+        cancel_style = xlwt.easyxf('pattern: pattern solid, fore_colour gray25')
+
+        ws.write(index, 0, data["index"], style)
+        ws.write(index, 1, data["val"]["time"], style)
         cancel_time = data["val"]["cancelTime"]
         if cancel_time == '0':
             cancel_time = ''
         else:
-            cancel_time= "{}".format(cancel_time)
+            cancel_time = "{}".format(cancel_time)
         if len(cancel_time) > 0:
             if int(data["val"]["cancelTimeUnit"]) == 0:
                 cancel_time += "s"
@@ -45,40 +102,52 @@
             elif int(data["val"]["cancelTimeUnit"]) == 2:
                 cancel_time += "h"
 
-        ws.write(index, 2, cancel_time)
-        ws.write(index, 3, data["val"]["price"])
+        ws.write(index, 2, cancel_time, style)
+        ws.write(index, 4, data["val"]["price"], style)
         if int(data["val"]["operateType"]) == 1 or int(data["val"]["operateType"]) == 2:
-            ws.write(index, 4, 0-int(data["val"]["num"]))
+            ws.write(index, 5, 0 - int(data["val"]["num"]), style)
         else:
-            ws.write(index, 4, int(data["val"]["num"]))
+            ws.write(index, 5, int(data["val"]["num"]), style)
 
-        limit_price=""
+        limit_price = ""
         if int(data["val"]["limitPrice"]) == 1:
-            limit_price="娑ㄥ仠"
+            limit_price = "娑ㄥ仠"
         elif int(data["val"]["limitPrice"]) == 2:
-            limit_price="璺屽仠"
+            limit_price = "璺屽仠"
 
         if int(data["val"]["operateType"]) == 0:
-            if len(limit_price)>0:
-                ws.write(index, 5, '涔� ({})'.format(limit_price))
+            if len(limit_price) > 0:
+                ws.write(index, 6, '涔� ({})'.format(limit_price), style)
             else:
-                ws.write(index, 5, '涔�')
+                ws.write(index, 6, '涔�', style)
         elif int(data["val"]["operateType"]) == 1:
             if len(limit_price) > 0:
-                ws.write(index, 5, '涔版挙 ({})'.format(limit_price))
+                ws.write(index, 6, '涔版挙 ({})'.format(limit_price), style)
             else:
-                ws.write(index, 5, '涔版挙')
+                ws.write(index, 6, '涔版挙', style)
         elif int(data["val"]["operateType"]) == 2:
             if len(limit_price) > 0:
-                ws.write(index, 5, '鍗� ({})'.format(limit_price))
+                ws.write(index, 6, '鍗� ({})'.format(limit_price), style)
             else:
-                ws.write(index, 5, '鍗�')
+                ws.write(index, 6, '鍗�', style)
         elif int(data["val"]["operateType"]) == 3:
             if len(limit_price) > 0:
-                ws.write(index, 5, '鍗栨挙 ({})'.format(limit_price))
+                ws.write(index, 6, '鍗栨挙 ({})'.format(limit_price), style)
             else:
-                ws.write(index, 5, '鍗栨挙')
-        ws.write(index, 6, data["re"])
+                ws.write(index, 6, '鍗栨挙', style)
+        ws.write(index, 7, data["re"], style)
+        # 鏌ヨ鏄惁鎾ゅ崟
+        if int(data["val"]["operateType"]) == 0:
+            cancel = False
+            # 涔�
+            for d in num_dict[data["val"]["num"]]:
+                if int(d["val"]["operateType"]) == 1:
+                    buy_index, buy_data = l2_data_util.get_buy_data_with_cancel_data(d, num_operate_map[code])
+                    if buy_index == data["index"]:
+                        ws.write(index, 8, "{}-{}".format(d["index"], d["val"]["time"]), cancel_style)
+                        break
+
+        ws.write(index, 3, "{}涓�".format(round(int(data["val"]["num"]) * float(data["val"]["price"]) / 100, 2)), style)
     wb.save(file_name)
     return file_name
 
@@ -124,5 +193,6 @@
 
 
 if __name__ == "__main__":
-    _t = "1661391666562"
-    print(_t[-3:])
+    codes = ["000610"]
+    for code in codes:
+        export_l2_excel(code,"2022-12-27")

--
Gitblit v1.8.0