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