Balance RPC provides a pulsed stream of user balance updates.

Sample Code

import os

import grpc
import common_pb2
import port_pb2_grpc

API_KEY = os.getenv("QFEX_API_KEY")

def stream_balance():
    metadata = (('api-key', API_KEY),)
    channel = grpc.secure_channel('trade.pfex.io:443', grpc.ssl_channel_credentials())
    stub = port_pb2_grpc.PortServiceStub(channel)
    for bal in stub.GetUserBalance(common_pb2.Empty(), metadata=metadata):
        print(bal)

if __name__ == '__main__':
    stream_balance()

Example Response

balances id: "abc12345-6e54-48c4-82e9-641e64bf185d"
user_id: "abc12345-6e54-48c4-82e9-641e64bf185d"
deposit: 1000
realised_pnl: 898.662
order_margin: 0.0623741
position_margin: 0.582
unrealised_pnl: 0.0525001287
net_funding: 1.53546357
available_balance: 1900.89433767
timestamp {
  seconds: 1746906292
  nanos: 332090000
}