コード例 #1
0
 def on_account(self, d):
     """
     处理账号资金信息 可以用资金,冻结资金,总资金
     :param d: 
     :return: 
     """
     accountid = str(d["account"])
     account = self.accounts.get(accountid, None)
     if not account:
         account = AccountData(accountid=accountid,
                               gateway_name=self.gateway_name)
         self.accounts[accountid] = account
     # 总金额(xbt)
     account.balance = float(d.get("marginBalance",
                                   account.balance)) / 1000000000
     # 可用xbt
     account.available = float(d.get("availableMargin",
                                     account.available)) / 1000000000
     # 冻结 xbt
     account.frozen = account.balance - account.available
     # 备注名
     user_id = self.user_id
     # 删除数据
     o_money = Money.delete().where(Money.money_user_id == user_id,
                                    Money.money_accountid == accountid)
     o_money.execute()  # 执行指令
     # 插入数据库
     o_money = Money().insert(money_user_id=user_id,
                              money_balance=account.balance,
                              money_available=account.available,
                              money_frozen=account.frozen,
                              money_accountid=accountid)
     o_money.execute()  # 执行
コード例 #2
0
ファイル: bitmex_gateway.py プロジェクト: yunnant/vnpy2.0.7
    def on_account(self, d):
        """"""
        accountid = str(d["account"])
        account = self.accounts.get(accountid, None)
        if not account:
            account = AccountData(accountid=accountid,
                                  gateway_name=self.gateway_name)
            self.accounts[accountid] = account

        account.balance = d.get("marginBalance", account.balance)
        account.available = d.get("availableMargin", account.available)
        account.frozen = account.balance - account.available

        self.gateway.on_account(copy(account))
コード例 #3
0
ファイル: bitmex_gateway.py プロジェクト: shhuiw/vnpy
    def on_account(self, d):
        """"""
        accountid = str(d["account"])
        account = self.accounts.get(accountid, None)
        if not account:
            account = AccountData(accountid=accountid,
                                  gateway_name=self.gateway_name)
            self.accounts[accountid] = account

        account.balance = d.get("marginBalance", account.balance)
        account.available = d.get("availableMargin", account.available)
        account.frozen = account.balance - account.available

        self.gateway.on_account(copy(account))
コード例 #4
0
ファイル: bitfinex_gateway.py プロジェクト: yunnant/vnpy2.0.7
    def on_wallet(self, data):
        """"""
        if str(data[0]) == "exchange":
            accountid = str(data[1])
            account = self.accounts.get(accountid, None)
            if not account:
                account = AccountData(
                    accountid=accountid,
                    gateway_name=self.gateway_name,
                )

            account.balance = float(data[2])
            account.available = 0.0
            account.frozen = 0.0
            self.gateway.on_account(copy(account))
コード例 #5
0
    def on_query_account(self, data, request):
        """"""
        for acc in data:
            account_id = str(acc["currency"])

            account = self.accounts.get(account_id, None)
            if not account:
                account = AccountData(accountid=account_id,
                                      gateway_name=self.gateway_name)
                self.accounts[account_id] = account

            account.balance = float(acc.get("balance", account.balance))
            account.available = float(acc.get("available", account.available))
            account.frozen = float(acc.get("hold", account.frozen))

            self.gateway.on_account(copy(account))
コード例 #6
0
    def onQueryAsset(self, data: dict, error: dict, request: int, last: bool,
                     session: int) -> None:
        """"""
        account = AccountData(accountid=self.userid,
                              balance=round(data["total_asset"], 2),
                              frozen=round(data["withholding_amount"], 2),
                              gateway_name=self.gateway_name)
        account.available = round(data["buying_power"], 2)

        if data["account_type"] == 1:
            self.margin_trading = True
        elif data["account_type"] == 2:
            account.frozen = round(account.balance - account.available, 2)
            self.option_trading = True

        self.gateway.on_account(account)
コード例 #7
0
ファイル: bitfinex_gateway.py プロジェクト: zxd6655422/vnpy
    def on_wallet(self, data):
        """"""
        # Exchange Mode
        if not self.margin and str(data[0]) != "exchange":
            return
        # Margin Mode
        elif self.margin and str(data[0]) != "margin":
            return

        accountid = str(data[1])
        account = self.accounts.get(accountid, None)
        if not account:
            account = AccountData(
                accountid=accountid,
                gateway_name=self.gateway_name,
            )

        account.balance = float(data[2])
        account.available = 0.0
        account.frozen = 0.0
        self.gateway.on_account(copy(account))