🚀 AI 一键生成 ptrade 策略代码

PTrade 融资融券账户风险监控 (get_margin_assert, get_assure_security_list)

ptrade | 发布时间: 2025/12/2
以下内容由 EasyQuant 生成。

问题描述

如何查询我的信用账户的总资产、总负债和可用保证金是多少?

解决方案

在 PTrade 中,查询信用账户(融资融券账户)的资产、负债和保证金信息,需要使用 get_margin_assert() 函数。

该函数仅在 两融交易模块 中可用(实盘交易),它返回一个字典,包含了信用账户的详细资产状况。

核心代码实现

以下是一个完整的策略示例,展示如何在 handle_data 中获取并打印这三项关键数据:

def initialize(context):
    # 初始化设置,这里设置一个标的仅为了策略能运行
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 获取信用资产查询信息
    # 注意:函数名是 get_margin_assert (assert 是 PTrade API 的拼写,非 asset)
    margin_data = get_margin_assert()
    
    if margin_data:
        # 1. 获取担保资产 (即信用账户总资产)
        total_assets = margin_data.get('assure_asset')
        
        # 2. 获取负债总额
        total_liabilities = margin_data.get('total_debit')
        
        # 3. 获取可用保证金
        available_margin = margin_data.get('enable_bail_balance')
        
        # 打印日志信息
        log.info("========== 信用账户资产信息 ==========")
        log.info("总资产 (担保资产): %s" % total_assets)
        log.info("总负债: %s" % total_liabilities)
        log.info("可用保证金: %s" % available_margin)
        log.info("======================================")
    else:
        log.info("未获取到信用资产信息,请确认当前是否为两融账号或交易环境。")

字段说明

get_margin_assert() 返回的字典中,对应的键(Key)含义如下:

您的需求 对应 API 字段名 说明
总资产 assure_asset 即“担保资产”,指信用账户内的总资产价值。
总负债 total_debit 负债总额,包含融资合约金额、融券合约金额及相关利息费用等。
可用保证金 enable_bail_balance 账户当前可用于新开仓(融资或融券)的保证金余额。

注意事项

  1. 适用范围:该函数仅支持 Ptrade 客户端,且仅在 两融交易模块(实盘)可用。普通股票账户或回测环境通常无法获取有效数据。
  2. 函数拼写:请特别注意函数名为 get_margin_assert(末尾是 assert 而不是 asset),这是 PTrade API 的特定命名。
  3. 数据更新:该数据通常是实时或准实时的,具体更新频率取决于券商柜台的推送机制。

Q&A

Q1: get_margin_assert() 函数能查询到具体的融资或融券合约明细吗?
A1: 不能。get_margin_assert() 主要用于查询账户层面的汇总资产数据。如果您需要查询具体的合约明细(如每笔融资的开仓日期、金额等),请使用 get_margin_contract()(查询所有合约)或 get_margin_contractreal()(查询实时合约流水)。

Q2: 为什么我在回测中调用此函数返回了空字典或报错?
A2: 该函数主要设计用于实盘交易中的两融账户。在普通股票回测或未配置两融环境的回测中,该函数可能无法获取数据。如果您需要测试两融策略,请确保回测环境已开启融资融券功能(如果平台支持)或在实盘仿真环境中测试。

Q3: enable_bail_balance (可用保证金) 和 enable_balance (可用资金) 有什么区别?
A3: enable_bail_balance 是信用账户特有的概念,指可以用来作为担保品进行融资融券开仓的额度;而 enable_balance 通常指账户内的现金余额(可通过 get_crdt_fund() 查询)。在两融交易中,开仓能力主要受限于可用保证金。