3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化交易平台中,进行融资融券(信用交易)时,可以通过调用 marginsec_direct_refund 函数将现有的股票持仓直接归还给券商以完成还券操作。
在使用任何融资融券 API(包括直接还券)之前,必须在策略的 initialize(context) 函数中将子账户类型设置为信用账户 stock_margin。默认的 stock 类型账户不支持融券与还券指令。
def initialize(context):
# 获取初始资金
init_cash = context.portfolio.starting_cash
# 设置账户类型为融资融券账户 ('stock_margin')
set_subportfolios([SubPortfolioConfig(cash=init_cash, type='stock_margin')])
marginsec_direct_refund 函数说明marginsec_direct_refund 用于使用账户中已持有的证券直接归还融券负债,无需发起卖券或买券交易。
marginsec_direct_refund(security, amount, pindex=0)
security (str): 标的代码,例如 '000001.XSHE'。amount (int): 还券数量(股数)。pindex (int): 子账户索引,默认为 0。order 购买对应股票后再执行直接还券。以下是在 JoinQuant 策略中买入股票并直接还券的完整代码示例:
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. 设置全局变量
g.security = '000001.XSHE'
# 4. 定时运行策略
run_daily(market_open, time='10:00')
def market_open(context):
security = g.security
refund_amount = 1000
# 检查持仓是否满足还券要求
current_position = context.portfolio.positions[security].total_amount
if current_position < refund_amount:
# 如果持仓不足,先通过买入订单获取股票
need_to_buy = refund_amount - current_position
log.info("持仓不足,买入 %s 股 %s" % (need_to_buy, security))
order(security, need_to_buy)
# 执行直接还券操作
log.info("开始执行直接还券操作: %s, 数量: %s" % (security, refund_amount))
marginsec_direct_refund(security, refund_amount, pindex=0)