Administrator
6 天以前 ece1c2a485053d40d7acdf30ef9485291ece0a81
卖出价格调整
3个文件已修改
53 ■■■■■ 已修改文件
huaxin_client/trade_client.py 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/virtual_trade_account_manager.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/tool.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/trade_client.py
@@ -848,24 +848,35 @@
            if nRequestID not in self.__temp_position_list_dict:
                self.__temp_position_list_dict[nRequestID] = []
            if bIsLast != 1:
                self.__temp_position_list_dict[nRequestID].append(
                    {"investorID": pPositionField.InvestorID, "tradingDay": pPositionField.TradingDay,
                     "securityName": pPositionField.SecurityName,
                     "securityID": pPositionField.SecurityID, "historyPos": pPositionField.HistoryPos,
                     "historyPosFrozen": pPositionField.HistoryPosFrozen,
                     "todayBSPos": pPositionField.TodayBSPos, "todayBSPosFrozen": pPositionField.TodayBSPosFrozen,
                     "historyPosPrice": pPositionField.HistoryPosPrice, "totalPosCost": pPositionField.TotalPosCost,
                     "prePosition": pPositionField.PrePosition, "availablePosition": pPositionField.AvailablePosition,
                     "currentPosition": pPositionField.CurrentPosition, "openPosCost": pPositionField.OpenPosCost,
                     "todayCommission": pPositionField.TodayCommission,
                     "todayTotalBuyAmount": pPositionField.TodayTotalBuyAmount,
                     "todayTotalSellAmount": pPositionField.TodayTotalSellAmount})
                data = {"investorID": pPositionField.InvestorID, "tradingDay": pPositionField.TradingDay,
                        "securityName": pPositionField.SecurityName,
                        "securityID": pPositionField.SecurityID, "historyPos": pPositionField.HistoryPos,
                        "historyPosFrozen": pPositionField.HistoryPosFrozen,
                        "todayBSPos": pPositionField.TodayBSPos, "todayBSPosFrozen": pPositionField.TodayBSPosFrozen,
                        "historyPosPrice": pPositionField.HistoryPosPrice, "totalPosCost": pPositionField.TotalPosCost,
                        "prePosition": pPositionField.PrePosition,
                        "availablePosition": pPositionField.AvailablePosition,
                        "currentPosition": pPositionField.CurrentPosition, "openPosCost": pPositionField.OpenPosCost,
                        "todayCommission": pPositionField.TodayCommission,
                        "todayTotalBuyAmount": pPositionField.TodayTotalBuyAmount,
                        "todayTotalSellAmount": pPositionField.TodayTotalSellAmount}
                self.__temp_position_list_dict[nRequestID].append(data)
            else:
                # logger.info('查询持仓结束[%d] ErrorID[%d] ErrorMsg[%s]'
                #             % (nRequestID, pRspInfoField.ErrorID, pRspInfoField.ErrorMsg))
                if constant.ENABLE_VIRTUAL_ACCOUNT:
                    try:
                        position_codes = virtual_trade_account_manager.VirtualAccountPositionManager().get_position_codes()
                        async_log_util.info(logger_local_huaxin_trade_debug, f"持仓代码:{position_codes}")
                        # 过滤掉非持仓代码
                        results = self.__temp_position_list_dict[nRequestID]
                        # TODO 等待打开
                        # self.__temp_position_list_dict[nRequestID] = [x for x in results if
                        #                                               x['securityID'] in position_codes]
                    except:
                        pass
                self.call_back_thread_pool.submit(self.__data_callback, TYPE_LIST_POSITION, nRequestID,
                                                  self.__temp_position_list_dict[nRequestID])
                self.__temp_position_list_dict.pop(nRequestID)
        except:
            pass
trade/virtual_trade_account_manager.py
@@ -356,6 +356,15 @@
        """
        return self.position_dict.get(code)
    def get_position_codes(self):
        """
        获取持仓的代码
        :return: 代码集合
        """
        if self.position_dict:
            return set(self.position_dict.keys())
        return set()
if __name__ == "__main__":
    print(VirtualAccountPositionManager().get_position_dict())
utils/tool.py
@@ -281,14 +281,14 @@
# 获取买入价格笼子的最低价
def get_buy_min_price(price, is_cb=False):
    price1 = price * (1 - 0.015)
    price1 = price * (1 - 0.02)
    if is_cb:
        price1 = math.ceil(price1 * 1000) / 1000
    else:
        price1 = math.ceil(price1 * 100) / 100
    price2 = price - 0.1
    if not is_cb:
        return round(min(price1, price2) + 0.05, 2)
        return round(min(price1, price2) + 0.001, 2)
    else:
        return price1
@@ -429,4 +429,5 @@
if __name__ == "__main__":
    print(get_buy_max_price(100.123, is_cb=True))
    # print(get_buy_min_price(6.5, is_cb=False))
    pass