admin
2024-07-02 c66c2af41f4806b04abfc8af89b0a31fea294405
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("没有获取到tick数据")
    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}')