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

PTrade 两融实战:卖券还款 (margincash_close) 与直接还款 (margincash_direct_refund) 的区别与应用

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

问题描述

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

Title: PTrade 两融实战:卖券还款 (margincash_close) 与直接还款 (margincash_direct_refund) 的区别与应用

Question: 在 ptrade 两融交易中,卖券还款和直接现金还款两个接口有什么区别?如何正确调用?

解决方案

在 PTrade 融资融券(两融)量化交易中,卖券还款 (margincash_close) 与 直接还款 (margincash_direct_refund) 是两种用于偿还融资负债的接口。它们在资金来源、触发机制、交易性质及接口参数上存在本质区别。


一、核心区别对比

特性 卖券还款 (margincash_close) 直接还款 (margincash_direct_refund)
资金来源 通过卖出证券账户中的持仓股票/证券变现获得资金还款 直接使用账户内的可用现金资金还款
交易性质 属于报单委托交易,需要撮合成交 属于资金划转/柜台划拨指令,无需证券撮合成交
主要参数 证券代码 security、卖出数量 amount、限价 limit_price 偿还金额 value
适用场景 当投资者希望通过减仓/卖出指定股票来偿还融资负债时 当账户内已有可用现金,希望直接冲抵融资合约负债时

二、接口详解与代码示例

1. 卖券还款 margincash_close

接口说明:
通过向柜台发送卖出指定股票委托,撮合成交后的资金优先用于偿还融资负债。

核心参数:

  • security (str): 股票代码,如 '600570.SS'
  • amount (int): 交易数量(须为正整数)
  • limit_price (float, 可选): 买卖限价,不传则默认按最新价报单

Python 代码示例:

def handle_data(context, data):
    security = '600570.SS'
    # 查询卖券还款标的最大可卖数量
    close_amount_dict = get_margincash_close_amount(security)
    if close_amount_dict and security in close_amount_dict:
        max_close_amount = close_amount_dict.get(security)
        if max_close_amount > 0:
            # 卖出100股还款
            margincash_close(security, 100)
            log.info("执行卖券还款,卖出 %s 100股" % security)

2. 直接还款 margincash_direct_refund

接口说明:
使用账户中的可用现金直接归还融资合约的本金及利息,不产生新的卖出交易。

核心参数:

  • value (float): 还款金额(须为正数)

Python 代码示例:

def handle_data(context, data):
    # 获取信用账户负债总额及可用资金
    margin_assert = get_margin_assert()
    if margin_assert:
        # 获取融资合约金额/负债
        fin_compact_balance = margin_assert.get('fin_compact_balance', 0)
        # 获取现金还款可用资金
        fin_enrepaid_balance = margin_assert.get('fin_enrepaid_balance', 0)
        
        # 若存在负债且账户有可用还款资金
        if fin_compact_balance > 0 and fin_enrepaid_balance > 0:
            refund_value = min(fin_compact_balance, fin_enrepaid_balance)
            # 执行直接现金还款
            margincash_direct_refund(refund_value)
            log.info("执行直接现金还款,金额:%s 元" % refund_value)

三、实战注意事项

  1. 运行环境限制: 上述接口均仅支持 PTrade 客户端的两融实盘/模拟交易模块,不支持普通股票账户。
  2. 可卖数量与资产查询配合:
    • 调用 margincash_close 前,建议配合使用 get_margincash_close_amount() 查询当前标的最允许卖出的还款数量。
    • 调用 margincash_direct_refund 前,建议配合使用 get_margin_assert() 查询当前的 fin_compact_balance(融资合约金额)及资金状况,避免过度还款或资金不足失败。