实盘中关于.closeable_amount
问题1:
请问一下一创实盘如果我卖出一个股票一部分,然后我立即查询context.portfolio.long_positions[stock].closeable_amount会立刻更新吗? 市价单和限价单的情况下一样吗?谢谢!
问题2:
请问如何在实盘中获得当前的时间精确到秒,貌似context.current_dt只能精确到分钟。谢谢!
closeable_amount 的更新机制\n\n在 JoinQuant 的实盘或模拟交易中,当您调用下单函数(如 order)卖出股票后,如果订单创建成功,context.portfolio.positions[stock].closeable_amount 会立刻更新(减少)。\n\n市价单与限价单的情况是一样的。因为无论是市价单还是限价单,只要订单成功提交到系统中,为了防止出现“超卖”或“重复卖出”的情况,系统会立即冻结(锁定)对应的可卖仓位。因此,您查询到的 closeable_amount 会立刻扣除刚刚挂单卖出的那部分数量。\n\n注:根据 JoinQuant 最新 API 文档,一创聚宽(实盘)项目已于2023-12-29终止维护,目前聚宽官方不提供任何形式的实盘及交易通道服务,但模拟盘的撮合与冻结逻辑与此一致。\n\n### 问题2:如何获取精确到秒的当前时间\n\n在策略中,context.current_dt 获取的是逻辑时间(在按天回测时通常是 09:30,按分钟则是该分钟的第一秒)。\n\n如果您在模拟交易或实盘环境中需要获取真实的物理系统时间(精确到秒甚至微秒),请使用 Python 标准库 datetime 中的 datetime.datetime.now() 方法。\n\n示例代码:\npython\nimport datetime\n\ndef handle_data(context, data):\n # 获取逻辑时间(精确到分钟)\n logical_time = context.current_dt\n \n # 获取真实的系统当前时间(精确到秒/微秒)\n real_time = datetime.datetime.now()\n \n log.info("逻辑时间: %s, 真实时间: %s" % (logical_time, real_time))\n\n\n使用 datetime.datetime.now() 可以帮助您在盘中执行特定定时任务时获取最准确的现实时间。