🚀 AI 一键生成 ptrade 策略代码

PTrade 两融策略必备:如何查询账户可融资金信息?(get_crdt_fund)

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

问题描述

如何查询我的信用账户里还有多少钱可以用来融资买入?

解决方案

在PTrade中,查询信用账户中用于“融资买入”的可用资金(即融资可用额度),主要使用 get_margin_assert() 函数。

该函数返回一个字典,其中包含了信用账户的各项资产数据。你需要关注的字段是 fin_enable_quota(融资可用额度)。

以下是具体的代码实现和字段说明。

核心代码实现

def initialize(context):
    # 初始化设置,设置一个标的以便策略运行
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 获取信用账户资产信息
    # 注意:该函数仅在两融交易模块(实盘或两融回测)中可用
    margin_assets = get_margin_assert()
    
    if margin_assets:
        # 1. 获取融资可用额度 (可以直接用来融资买入的金额上限)
        fin_enable_quota = margin_assets.get('fin_enable_quota')
        
        # 2. 获取融资已用额度 (已经借来的钱)
        fin_used_quota = margin_assets.get('fin_used_quota')
        
        # 3. 获取融资额度上限 (总授信额度)
        fin_max_quota = margin_assets.get('fin_max_quota')
        
        # 4. 获取可用保证金 (账户里的自有可用资金,可用于充当保证金)
        enable_bail_balance = margin_assets.get('enable_bail_balance')
        
        log.info("========== 信用账户资金详情 ==========")
        log.info("融资可用额度 (可买入金额): %s" % fin_enable_quota)
        log.info("融资已用额度: %s" % fin_used_quota)
        log.info("融资总额度上限: %s" % fin_max_quota)
        log.info("可用保证金余额: %s" % enable_bail_balance)
    else:
        log.info("未能获取到信用资产信息,请检查是否处于两融账号环境。")

关键字段详解

调用 get_margin_assert() 返回的字典中,与资金相关的关键字段如下:

字段名 中文含义 说明
fin_enable_quota 融资可用额度 这是你最关心的字段。它表示你当前还可以向券商借多少钱来买入股票。
fin_used_quota 融资已用额度 表示你已经借了多少钱(负债本金部分)。
fin_max_quota 融资额度上限 券商给你核定的总融资授信额度。
enable_bail_balance 可用保证金 账户内可用的自有资金,这部分钱可以用来买担保品,也可以作为融资买入的保证金。
assure_asset 担保资产 账户内的总资产(现金+持仓市值)。

注意事项

  1. 适用范围get_margin_assert() 仅支持 Ptrade客户端,且仅在 两融交易模块(包括两融回测和实盘)中可用。如果在普通股票账户回测中调用,可能会返回空字典或报错。
  2. 数据更新:该接口获取的是柜台的实时数据(实盘中),但在回测中依赖于回测引擎的撮合逻辑。
  3. 买入限制:实际能买入的股票数量,除了受限于fin_enable_quota(钱够不够),还受限于你的维持担保比例和标的证券的折算率。如果维持担保比例过低,即使有额度也可能无法开新仓。

Q&A

Q: fin_enable_quotaenable_bail_balance 有什么区别?
A: fin_enable_quota借贷额度,代表你还能从券商那里借多少钱;enable_bail_balance 是你的自有资金(可用保证金),代表你账户里还没用掉的现金。融资买入时,使用的是借贷额度,但需要自有资金或持仓作为担保。

Q: 如果我想查询某一只特定股票最大能融资买入多少股,用哪个函数?
A: 请使用 get_margincash_open_amount(security, price=None)。该函数会综合考虑你的可用额度、保证金比例以及该股票的折算率,直接返回该股票的最大可买数量。

Q: 为什么我在回测的 initialize 里调用这个函数报错?
A: 交易类和资产查询类函数通常建议在 handle_databefore_trading_startrun_daily 调用的函数中使用。在 initialize 阶段,策略尚未正式启动交易循环,账户数据可能尚未初始化完毕。