🚀 AI 一键生成 ptrade 策略代码

PTrade 两融风控:实时监控融资融券合约流水 (get_margin_contractreal)

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

问题描述

有没有接口可以查到融资融券当天的实时流水?

解决方案

在PTrade中,接口可以查询融资融券当天的实时合约流水。

该接口为 get_margin_contractreal

以下是关于该接口的详细说明、代码示例及返回字段解析。

1. 接口说明

  • 接口名称get_margin_contractreal()
  • 功能:用于查询融资融券业务的实时合约流水。它可以获取当日发生的融资买入、融券卖出、还款、还券、利息扣除等导致合约变化的流水记录。
  • 适用范围
    • 仅支持 PTrade客户端(本地终端)环境。
    • 仅在 两融交易 模块可用(回测环境不可用)。
  • 参数:无。
  • 返回值:正常返回一个 pandas.DataFrame 对象,包含了合约流水的详细信息;异常或无数据时返回 None

2. 策略代码示例

以下代码展示了如何在盘中打印当天的融资融券实时流水信息:

def initialize(context):
    # 初始化策略,设置一个标的以保证策略正常启动
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 获取融资融券实时合约流水
    # 注意:此函数仅在两融交易实盘中有效
    df_contract_flow = get_margin_contractreal()
    
    if df_contract_flow is not None:
        log.info("当前融资融券实时流水如下:")
        log.info(df_contract_flow)
    else:
        log.info("当前无融资融券实时流水记录。")

3. 返回数据字段解析

get_margin_contractreal 返回的 DataFrame 包含以下主要字段,这些字段描述了每一笔流水的具体细节:

字段名 类型 含义 备注
init_date int 交易日期 格式如 20230101
compact_id str 合约编号 对应具体的融资或融券合约ID
business_flag int 业务标志 标识具体的业务类型(如融资开仓、还款等)
compact_type str 合约类别 '0'-融资, '1'-融券, '2'-其他负债
stock_code str 证券代码 涉及的标的代码
occur_balance float 发生金额 本次流水变动的金额
occur_amount float 发生数量 本次流水变动的证券数量
post_balance float 后资金额 变动后的金额余额
post_amount float 后证券额 变动后的证券数量余额
occur_interest float 发生利息 本次流水产生的利息
occur_fare float 发生费用 本次流水产生的费用
entrust_no int 委托编号 关联的委托单号
remark str 备注 具体的业务描述

4. 注意事项

  1. 环境限制:请务必确保您的策略是在“两融交易”账号下运行,普通股票账户调用此接口可能会报错或返回空。
  2. 数据时效:该接口返回的是实时流水,即当日盘中发生的变动。如果需要查询历史日期的流水,通常需要使用 get_fundjour(资金流水)或 get_deliver(交割单),但这两个接口通常只支持查询上一交易日及之前的数据。
  3. 业务标志business_flag 是区分流水类型的关键字段,不同的券商柜台可能定义略有不同,具体含义可结合 remark 字段理解。

Q&A

Q1: get_margin_contractrealget_margin_contract 有什么区别?
A: get_margin_contract 用于查询当前持有的合约状态(即存量负债,包含开仓日期、截止日、未还金额等),是一个静态的快照;而 get_margin_contractreal 用于查询当日发生的合约变动流水(如当日新开了仓、当日还了款等动态过程)。

Q2: 为什么我在回测中调用此接口返回 None?
A: 该接口仅支持 PTrade客户端两融交易 模块。回测环境无法模拟柜台的实时合约流水结算过程,因此不可用。

Q3: 如何查询历史的融资融券流水?
A: 查询历史流水(非当日)通常使用 get_fundjour(start_date, end_date)(查询资金流水)或 get_deliver(start_date, end_date)(查询交割单)。注意这两个接口仅支持查询上一个交易日(包含)之前的数据。