From 46b13281c1c57d5708aa3f2a54281f30258c5e04 Mon Sep 17 00:00:00 2001
From: lhr <lhr@example.com>
Date: 星期二, 02 七月 2024 10:29:45 +0800
Subject: [PATCH] Merge branch 'master' of http://193.112.35.168:10101/r/gp_low_suction

---
 gui.py |   62 ++++++++++++++++++------------
 1 files changed, 37 insertions(+), 25 deletions(-)

diff --git a/gui.py b/gui.py
index 1bb6914..19c0dd2 100644
--- a/gui.py
+++ b/gui.py
@@ -1,3 +1,4 @@
+import copy
 import threading
 import time
 
@@ -173,7 +174,7 @@
         if index < 0:
             return
         self.label_sell_code.SetLabel(self.positions[index][0])
-        self.label_sell_avaiable_volume.SetLabel(str(self.positions[index][3]))
+        self.label_sell_avaiable_volume.SetLabel(str(self.__compute_available_volume(self.positions[index])))
         sell_percent = gui_util.GuiViewManager.get_sell_volume_percent()
         self.edit_sell_volume.SetValue(str(self.positions[index][3] // sell_percent // 100 * 100))
 
@@ -207,6 +208,39 @@
             print("鎸佷粨锛�", local_api.trade_api.position_by_symbol(symbol))
         else:
             wx.MessageBox("娌℃湁鑾峰彇鍒皌ick鏁版嵁")
+
+    def __compute_available_volume(self, data):
+        """
+        璁$畻鍙敤閲忥細鎬婚噺-濮旀墭閲�
+        :param data:
+        :return:
+        """
+        available_volume = self.__compute_total_volume(data)
+        # 濮旀墭閲�
+        dvolume = 0
+        if data[0] in self.delegates_dict:
+            delegates_list = self.delegates_dict[data[0]]
+            if delegates_list:
+                dvolume = sum([x[3] for x in delegates_list])
+        available_volume -= dvolume
+        return available_volume
+
+    def __compute_total_volume(self, data):
+        """
+        璁$畻鎬婚噺
+        :param data:
+        :return:
+        """
+        total_volume = copy.deepcopy(data[2])
+        if data[0] in self.deal_dict:
+            deal_list = self.deal_dict[data[0]]
+            deal_volume = 0
+            if deal_list:
+                for d in deal_list:
+                    if d[1] == 2 and tool.trade_time_sub(d[5], system_start_time) > 0:
+                        deal_volume += d[3]
+            total_volume -= deal_volume
+        return total_volume
 
     def __start_task(self):
         def __show_blocks():
@@ -242,19 +276,8 @@
                 symbols_names_dict = get_symbols_names([x[0] for x in datas])
                 for data in datas:
                     code = data[0].split(".")[1]
-                    total_volume = data[2]
-                    available_volume = data[3]
-
-                    if data[0] in self.deal_dict:
-                        deal_list = self.deal_dict[data[0]]
-                        deal_volume = 0
-                        if deal_list:
-                            for d in deal_list:
-                                if d[1] == 2 and tool.trade_time_sub(d[5], system_start_time) > 0:
-                                    deal_volume += d[3]
-                        total_volume -= deal_volume
-                        available_volume -= deal_volume
-
+                    total_volume = self.__compute_total_volume(data)
+                    available_volume = self.__compute_available_volume(data)
                     index = self.list_ctrl_position.InsertItem(self.list_ctrl_position.GetItemCount(), data[0])
                     # 濮旀墭閲�
                     dvolume = 0
@@ -263,7 +286,6 @@
                         if delegates_list:
                             dvolume = sum([x[3] for x in delegates_list])
                             self.list_ctrl_position.SetItem(index, 8, f'{delegates_list[-1][4]}')
-                    available_volume -= dvolume
 
                     self.list_ctrl_position.SetItem(index, 1, symbols_names_dict.get(data[0]))
                     self.list_ctrl_position.SetItem(index, 2, str(round(data[1], 2)))
@@ -275,16 +297,6 @@
                         self.list_ctrl_position.SetItem(index, 6, str(tick[2]))
                     else:
                         self.list_ctrl_position.SetItem(index, 6, str(data[5]))
-
-                    if data[0] in self.deal_dict:
-                        deal_list = self.deal_dict[data[0]]
-                        deal_volume = 0
-                        if deal_list:
-                            for d in deal_list:
-                                if d[1] == 2 and tool.trade_time_sub(d[5], system_start_time) > 0:
-                                    deal_volume += d[3]
-
-                            self.list_ctrl_position.SetItem(index, 8, f'{delegates_list[-1][4]}')
 
                     self.list_ctrl_position.SetItem(index, 7, f'{dvolume}')
 

--
Gitblit v1.8.0