3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant (聚宽) 平台上,如果您需要在模拟盘(或回测)运行过程中修改账户的可用资金,可以使用平台提供的专用 API 函数:inout_cash。
inout_cash 函数详解inout_cash(cash, pindex=0) 函数用于向账户转入或转出资金。当日的出入金会从当日开始记入成本,并用于计算收益(即当日结束计算收益时的本金是包含当日出入金金额的)。
cash: 浮点数或整数。代表出入金的金额。正数表示入金(增加资金),负数表示出金(减少资金)。pindex: 整数。在使用 set_subportfolios 创建了多个子仓位时,用于指定操作的 subportfolio 序号。从 0 开始,例如 0 指定第一个子账户,1 指定第二个子账户。默认为 0。以下是如何在策略代码中使用 inout_cash 来修改模拟盘资金的示例:
def handle_data(context, data):
# 查看修改前的账户可用资金
log.info('修改前账户可用资金:', context.portfolio.subportfolios[0].available_cash)
# 增加资金:向账户转入 6666 元
inout_cash(6666, pindex=0)
# 查看增加资金之后账户的可用资金
log.info('增加后账户可用资金:', context.portfolio.subportfolios[0].available_cash)
# 减少资金:从账户转出 3000 元
inout_cash(-3000, pindex=0)
# 查看减少资金之后账户的可用资金
log.info('减少后账户可用资金:', context.portfolio.subportfolios[0].available_cash)
inout_cash 进行出入金操作后,系统会自动调整您的本金基数,从而保证收益率(returns)计算的准确性。例如,您追加了资金,这部分资金不会被算作策略的盈利。initialize 中使用了 set_subportfolios 配置了股票、期货等多个子账户,请务必通过 pindex 参数指定正确的账户进行资金修改。transfer_cash(from_pindex, to_pindex, cash) 函数,而不是分别调用两次 inout_cash。