🚀 AI 一键生成 ptrade 策略代码
立即体验

PTrade 融券交易指南:使用 marginsec_direct_refund 实现直接还券(附 Python 源码)

ptrade | 发布时间: 2026/7/30
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: PTrade 两融实战:如何使用 marginsec_direct_refund 进行直接还券?

Question: PTrade 融券交易中,如何调用 marginsec_direct_refund 接口直接还券?

解决方案

PTrade 融券交易:使用 marginsec_direct_refund 接口进行直接还券

在 PTrade 的融资融券(两融)交易中,当投资者证券账户中已拥有现券(通过担保品买卖或自有持仓)并希望将其还给券商以归还融券负债时,可以调用 marginsec_direct_refund 接口实现直接还券(现券还券)。


1. 接口说明与使用限制

  • 接口名称marginsec_direct_refund(security, amount)
  • 适用场景:仅支持 PTrade 客户端可用,且只能在两融交易模块运行(回测模块不支持)。
  • 功能描述:使用账户内已有的证券直接归还融券负债。
  • 返回值None

2. 参数详解

参数名 类型 说明
security str 股票代码,例如 '600030.SS''000001.SZ'
amount int 归还的股票数量,必须输入正整数(如 100 表示还券 100 股)

3. 核心代码示例

以下是一个简单的 PTrade 两融策略示例,演示如何在盘中调用 marginsec_direct_refund 接口直接还券:

def initialize(context):
    # 设置两融标的股票
    g.security = '600030.SS'
    set_universe(g.security)
    g.flag = False

def handle_data(context, data):
    security = g.security
    
    # 仅执行一次还券示例
    if not g.flag:
        # 查询当前最大可现券还券数量(可选保护逻辑)
        margin_entrans_dict = get_margin_entrans_amount(security)
        if margin_entrans_dict:
            max_refund_amount = margin_entrans_dict.get(security, 0)
            log.info(f"当前股票 {security} 最大可直接还券数量为: {max_refund_amount}")
            
            if max_refund_amount >= 100:
                # 调用直接还券接口归还 100 股
                marginsec_direct_refund(security, 100)
                log.info(f"已成功提交股票 {security} 的直接还券申请,数量:100 股")
                g.flag = True

4. 注意事项与常见问题

  1. 持仓前提:账户中必须拥有对应股票的可用现券持仓,否则还券请求将被柜台拒绝。
  2. 查询可还数量:在直接还券前,建议结合 get_margin_entrans_amount(security) 接口先查询当前最大可现券还券的数量,避免超额还券失败。
  3. 买券还券 vs 直接还券
    • 买券还券marginsec_close):通过在市场上买入股票来归还融券负债(产生交易委托与费用)。
    • 直接还券marginsec_direct_refund):用持仓中现有的股票直接划转给券商(不产生新的买入交易费用)。