def onRspQryTradingAccount(self, data: dict, error: dict, reqid: int, last: bool): """""" if "AccountID" not in data: return account = AccountData( accountid=data["AccountID"], balance=round(data["Balance"], 3), pre_balance=round(data['PreBalance'], 3), #上个交易日总资金 available=round(data["Available"], 3), #可用资金 commission=round(data['Commission'], 3), #手续费 margin=round(data['CurrMargin'], 3), #账户保证金 close_profit=round(data['CloseProfit'], 3), #平仓盈亏 position_profit=round(data['PositionProfit'], 3), #持仓盈亏 frozen=round( data["FrozenMargin"] + data["FrozenCash"] + data["FrozenCommission"], 3), #冻结资金 date=str(datetime.now().date()), time=str(datetime.now().time()), gateway_name=self.gateway_name, ) try: account.percent = round(account.margin / account.balance, 3) * 100 #资金使用率 except ZeroDivisionError: account.percent = 0 self.gateway.on_account(account)
def on_query_account(self, data: dict, request: Request) -> None: """""" if self.check_error(data, "查询账户"): return for d in data["data"]["responseBody"]: account = AccountData( accountid=self.open_account, balance=d["currentBalance"] / 100, pre_balance=d["beginBalance"] / 100, available=d["canUseBalance"] / 100, frozen=d["forbidBalance"] / 100, commission=d["payFee"] / 100, margin=(d["lxExDepositBanlance"] + d["lxPreDepositBanlance"]) / 100, date=str(datetime.now().date()), time=str(datetime.now().time()), gateway_name=self.gateway_name, ) try: account.percent = round(1 - account.available / account.balance,3) * 100 #资金使用率 except ZeroDivisionError: account.percent = 0 self.gateway.on_account(account)