3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽(JoinQuant)平台进行量化交易时,默认的账户仓位类型为普通股票与基金账户(type='stock')。若要进行融资融券(信用交易)或期货交易,必须在 initialize 初始化函数中,使用 set_subportfolios 与 SubPortfolioConfig 来配置对应的子账户。
set_subportfolios 函数用于初始化或修改策略的子账户配置。注意:该函数只能在 initialize 中调用,且所有子账户初始资金(cash)的总和必须等于策略的总初始资金 context.portfolio.starting_cash。
SubPortfolioConfig(cash, type) 参数说明cash: 该子仓位的初始资金量。type: 子仓位可操作标的的类型,支持以下取值:
'stock': 股票和场内基金账户'stock_margin': 融资融券账户'futures': 商品期货与股指期货账户'index_futures': 金融期货账户下面的代码演示了如何在 initialize 函数中将总初始资金一分为二,分别配置为普通股票账户(subportfolios[0])和融资融券账户(subportfolios[1]):
import jqdata
def initialize(context):
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 设定基准
set_benchmark('000300.XSHG')
# 获取初始资金并平分为两份
init_cash = context.portfolio.starting_cash / 2
# 初始化多子账户:
# subportfolios[0] -> 普通股票账户
# subportfolios[1] -> 融资融券账户
set_subportfolios([
SubPortfolioConfig(cash=init_cash, type='stock'),
SubPortfolioConfig(cash=init_cash, type='stock_margin')
])
# 设置融资融券利率及保证金比率(可选)
set_option('margincash_interest_rate', 0.08) # 融资年利率 8%
set_option('margincash_margin_rate', 1.0) # 融资保证金比率 100%
# 定时运行函数
run_daily(market_open, time='every_bar')
def market_open(context):
# 普通账户买入股票(指定 pindex=0)
order('000001.XSHE', 100, pindex=0)
# 信用账户融资买入股票(指定 pindex=1)
margincash_open('000001.XSHE', 100, pindex=1)
set_subportfolios,默认仅有 subportfolios[0],且类型为普通股票账户(stock),此时直接调用 margincash_open 等融资融券 API 将会报错。pindex:在多仓位架构下,执行买卖或融资融券操作时(如 order, margincash_open, margincash_close 等),请务必通过 pindex 参数明确指定对应的子账户序号(从 0 开始)。transfer_cash(from_pindex, to_pindex, cash) 函数实现即时到账的资金划转。