3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化平台中,当策略包含多个交易品种(例如同时操作股票与期货)或需要多仓位独立管理时,通常会通过 set_subportfolios 创建多个子账户(SubPortfolio)。本文将详细介绍如何在运行过程中对指定的子账户(pindex)进行资金的追加、提现及子账户间的资金划转。
在 initialize 函数中,可以使用 set_subportfolios 来划分初始资金与交易类型。子账户按照索引 pindex 依次为 0, 1, 2...
使用 inout_cash(cash, pindex=0) 函数,可以向特定的子账户追加(入金)或划出(出金)资金。
0 开始。默认值为 0。available_cash)。def market_open(context):
# 查看子账户 1 (期货账户) 的当前可用资金
log.info('子账户1当前可用资金:', context.subportfolios[1].available_cash)
# 为子账户 1 单独追加 100,000 元保证金
inout_cash(100000, pindex=1)
log.info('追加资金后子账户1可用资金:', context.subportfolios[1].available_cash)
# 从子账户 0 (股票账户) 提取 50,000 元
inout_cash(-50000, pindex=0)
如果需要在不同子账户之间直接分配资金,可以使用 transfer_cash 函数。
transfer_cash(from_pindex, to_pindex, cash)
# 从子账户 0 转移 500,000 元至子账户 1
transfer_cash(from_pindex=0, to_pindex=1, cash=500000)
pindex 必须在创建的子账户范围内(0 至 len(context.subportfolios)-1),否则会触发越界报错。cash < 0)时,划出金额不能超过该子账户当前的可用资金(available_cash),否则可能导致下单资金不足或失败。pindex 下单时,请确保标的类型与子账户类型一致(如股票订单发送到 type='stock' 的子账户,期货发送到 type='futures' 的子账户)。