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

joinquant 信用交易教程:如何使用 margincash_open 与 marginsec_close 进行融资融券

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

问题描述

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

Title: joinquant 信用交易教程:margincash_open 与 marginsec_close 实战

Question: 如何在 joinquant 融资融券账户中执行融资买入与买券还券操作?

解决方案

joinquant 信用交易教程:margincash_open 与 marginsec_close 实战

在 JoinQuant(聚宽)量化交易平台上,进行融资融券(信用交易)需要先对策略账户进行特定配置,并调用专属的融资融券 API。本文将详细讲解如何初始化信用账户,以及如何使用 margincash_open(融资买入)和 marginsec_close(买券还券)。


一、账户初始化配置

默认的账户类型为普通股票账户(type='stock'),无法直接调用融资融券接口。进行信用交易时,必须在 initialize 函数中使用 set_subportfolios 建立类型为 'stock_margin' 的子账户。

pythonSubPortfolioConfig(cash=init_cash, type='stock_margin')


二、核心 API 说明

1. 融资买入:margincash_open

向券商借入资金买入标的股票。

  • 语法margincash_open(security, amount, style=None, pindex=0)
  • 参数
    • security: 标的代码(如 '000001.XSHE')。
    • amount: 买入数量(股数)。
    • style: 订单类型,默认为市价单 MarketOrderStyle(),也可指定限价单 LimitOrderStyle(price)
    • pindex: 子账户序号,默认为 0。

2. 买券还券:marginsec_close

在进行融券卖出后,通过在二级市场买入标的股票并归还给券商,以平掉融券空头头寸。

  • 语法marginsec_close(security, amount, style=None, pindex=0)
  • 参数
    • security: 标的代码。
    • amount: 买入归还的数量。
    • style: 订单类型,默认市价单。
    • pindex: 子账户序号,默认为 0。

三、实战代码示例

以下示例展示了如何在 JoinQuant 中配置融资融券账户,并在盘中分别执行融资买入(margincash_open)与买券还券(marginsec_close)操作。

import jqdata

def initialize(context):
    # 1. 设定基准与真实价格模式
    set_benchmark('000300.XSHG')
    set_option('use_real_price', True)
    
    # 2. 初始化信用账户(融资融券账户)
    init_cash = context.portfolio.starting_cash
    set_subportfolios([SubPortfolioConfig(cash=init_cash, type='stock_margin')])
    
    # 3. 设置融资融券利率与保证金比例(可选,系统有默认值)
    set_option('margincash_interest_rate', 0.08)   # 年化 8% 融资利率
    set_option('marginsec_margin_rate', 1.0)       # 融券保证金比率 100%
    
    # 设定操作标的
    g.security = '000001.XSHE'
    
    # 4. 定时运行交易逻辑
    run_daily(trade_margin, time='10:00')

def trade_margin(context):
    security = g.security
    
    # 检查标的是否在可融资/融券列表中
    margincash_stocks = get_margincash_stocks()
    marginsec_stocks = get_marginsec_stocks()
    
    # 示例 1: 执行融资买入(margincash_open)
    if security in margincash_stocks:
        # 融资买入 1000 股平安银行
        order_result = margincash_open(security, 1000)
        if order_result:
            log.info("融资买入委托成功:%s 1000股" % security)
    
    # 示例 2: 执行买券还券(marginsec_close)
    # 假设此前已存在融券空头头寸(short_positions)
    subport = context.subportfolios[0]
    if security in subport.short_positions:
        short_amount = subport.short_positions[security].total_amount
        if short_amount > 0 and security in marginsec_stocks:
            # 买入 1000 股或平掉所有融券空头用于还券
            close_amount = min(1000, short_amount)
            order_result = marginsec_close(security, close_amount)
            if order_result:
                log.info("买券还券委托成功:%s %d股" % (security, close_amount))

四、关键注意事项

  1. 标的合规性检查:只有交易所披露的标的才能进行融资融券操作。可在下单前通过 get_margincash_stocks()get_marginsec_stocks() 进行校验。
  2. T+1 还券限制:若要使用直接还券(marginsec_direct_refund),可以使用当日买入的券归还;但如果是执行买券还券操作,需遵循交易规则及资金保证金限制。
  3. 数据延时get_margincash_stocksget_marginsec_stocks 依赖交易所上一交易日披露的数据,无法获取当前未完结交易日的即时变动。