3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 融资融券(两融)量化交易中,卖券还款 (margincash_close) 与 直接还款 (margincash_direct_refund) 是两种用于偿还融资负债的接口。它们在资金来源、触发机制、交易性质及接口参数上存在本质区别。
| 特性 | 卖券还款 (margincash_close) |
直接还款 (margincash_direct_refund) |
|---|---|---|
| 资金来源 | 通过卖出证券账户中的持仓股票/证券变现获得资金还款 | 直接使用账户内的可用现金资金还款 |
| 交易性质 | 属于报单委托交易,需要撮合成交 | 属于资金划转/柜台划拨指令,无需证券撮合成交 |
| 主要参数 | 证券代码 security、卖出数量 amount、限价 limit_price |
偿还金额 value |
| 适用场景 | 当投资者希望通过减仓/卖出指定股票来偿还融资负债时 | 当账户内已有可用现金,希望直接冲抵融资合约负债时 |
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)
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)
margincash_close 前,建议配合使用 get_margincash_close_amount() 查询当前标的最允许卖出的还款数量。margincash_direct_refund 前,建议配合使用 get_margin_assert() 查询当前的 fin_compact_balance(融资合约金额)及资金状况,避免过度还款或资金不足失败。