| | |
| | | import copy |
| | | import threading |
| | | import time |
| | | |
| | |
| | | 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)) |
| | | |
| | |
| | | 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(): |
| | |
| | | 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 |
| | |
| | | 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))) |
| | |
| | | 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}') |
| | | |