admin
2024-07-02 c66c2af41f4806b04abfc8af89b0a31fea294405
'bug修复'
2个文件已修改
66 ■■■■■ 已修改文件
gui.py 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
local_api/juejin.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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}')
local_api/juejin.py
@@ -149,8 +149,8 @@
                __JueJinTradeManager.cancelOrders(data["local_order_id"], data["account_id"])
                __send_request_response(request_id, {})
            elif type == 'get_execution_reports':
                __JueJinTradeManager.getExecutionReports()
                __send_request_response(request_id, {})
                results = __JueJinTradeManager.getExecutionReports()
                __send_request_response(request_id, results)