3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽(JoinQuant)平台进行融资融券(两融)交易,需要先配置信用账户,再使用特定的融资融券 API 接口。本文将详细介绍如何初始化信用账户以及调用 margincash_open(融资买入)和 marginsec_open(融券卖出)接口。
默认的 subportfolios[0] 账户类型为普通股票账户(type='stock'),不支持融资融券操作。要使用融资融券功能,必须在 initialize 函数中设置 type='stock_margin'。
def initialize(context):
# 设置动态复权模式(真实价格)
set_option('use_real_price', True)
# 获取初始资金
init_cash = context.portfolio.starting_cash
# 设定子账户为融资融券账户
set_subportfolios([SubPortfolioConfig(cash=init_cash, type='stock_margin')])
# (可选)设置融资/融券利率与保证金比率
set_option('margincash_interest_rate', 0.08) # 融资年利率 8%
set_option('marginsec_interest_rate', 0.10) # 融券年利率 10%
set_option('margincash_margin_rate', 1.0) # 融资保证金比例 100%
set_option('marginsec_margin_rate', 1.0) # 融券保证金比例 100%
margincash_open语法:
margincash_open(security, amount, style=None, pindex=0)
'000001.XSHE')。None 表示市价单(MarketOrderStyle),也可指定限价单 LimitOrderStyle(price)。0。marginsec_open语法:
marginsec_open(security, amount, style=None, pindex=0)
'000001.XSHE')。0。margincash_close(security, amount)margincash_direct_refund(value)marginsec_close(security, amount)marginsec_direct_refund(security, amount)在下单前,建议使用聚宽提供的接口判断标的是否属于两融标的:
get_margincash_stocks():获取可融资标的列表。get_marginsec_stocks():获取可融券标的列表。# 判断平安银行是否可以融资与融券
is_cash_target = '000001.XSHE' in get_margincash_stocks()
is_sec_target = '000001.XSHE' in get_marginsec_stocks()
以下是一个简单的演示策略,开盘时检查标的并分别进行融资买入与融券卖出操作:
from jqdata import *
def initialize(context):
set_option('use_real_price', True)
# 设置两融账户
set_subportfolios([SubPortfolioConfig(cash=context.portfolio.starting_cash, type='stock_margin')])
g.security = '000001.XSHE'
run_daily(market_open, time='9:30')
def market_open(context):
security = g.security
# 1. 检查是否在融资/融券列表中
can_cash = security in get_margincash_stocks()
can_sec = security in get_marginsec_stocks()
# 2. 执行融资买入
if can_cash:
order_res = margincash_open(security, 1000)
if order_res:
log.info("融资买入成功: %s" % security)
# 3. 执行融券卖出
if can_sec:
order_res = marginsec_open(security, 1000)
if order_res:
log.info("融券卖出成功: %s" % security)
initialize 中使用 set_subportfolios 将账户类型设置为 stock_margin,否则调用两融 API 时会抛出异常。get_margincash_stocks 和 get_marginsec_stocks 获取的是上交所、深交所最新披露的数据,无法获取当天未完结交易日的数据。