3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade中,有接口可以查询融资融券当天的实时合约流水。
该接口为 get_margin_contractreal。
以下是关于该接口的详细说明、代码示例及返回字段解析。
get_margin_contractreal()pandas.DataFrame 对象,包含了合约流水的详细信息;异常或无数据时返回 None。以下代码展示了如何在盘中打印当天的融资融券实时流水信息:
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("当前无融资融券实时流水记录。")
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 | 备注 | 具体的业务描述 |
get_fundjour(资金流水)或 get_deliver(交割单),但这两个接口通常只支持查询上一交易日及之前的数据。business_flag 是区分流水类型的关键字段,不同的券商柜台可能定义略有不同,具体含义可结合 remark 字段理解。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)(查询交割单)。注意这两个接口仅支持查询上一个交易日(包含)之前的数据。