🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant聚宽平台获取股票当前持仓数量的方法(替代过时的amount属性)

joinquant | 发布时间: 2026/6/24
以下内容由 EasyQuant 生成。

问题描述

怎样获取某只股票当前持仓数量?

stock='600104.XSHG'
amount = context.portfolio.positions[stock].amount
如上方式获取股票当前持仓数量,报以下WARNING:
Img
但是在文档中没有找到total_amount 或者 closeable_amount的用法,所以可以怎样获取某只股票当前持仓数量呢?

解决方案

在 JoinQuant(聚宽)平台中,context.portfolio.positions[stock].amount 这个属性已经过时(deprecated),为了向前兼容,它目前等同于 closeable_amount,但系统会抛出警告提示您更改。

根据最新的 API 文档,Position(持仓标的信息)对象提供了更精细的仓位属性。要获取某只股票的当前持仓数量,您可以使用以下几个属性,具体取决于您的业务需求:

1. 获取总持仓数量(推荐)

如果您想获取当前账户中实际持有的总股数(包括可卖出的和今天刚买入还不能卖出的,但不包括挂单冻结的),请使用 total_amount

stock = '600104.XSHG'
# 获取总仓位(不含挂单冻结仓位)
total_amount = context.portfolio.positions[stock].total_amount

注意:如果要获取绝对的当前总持仓(包含因为挂了卖单而被冻结的仓位),需要将 total_amountlocked_amount 相加:

real_total_amount = context.portfolio.positions[stock].total_amount + context.portfolio.positions[stock].locked_amount

2. 获取可卖出的持仓数量

如果您获取持仓数量是为了卖出(例如在 A 股 T+1 规则下,今天买入的股票今天不能卖),您应该使用 closeable_amount

stock = '600104.XSHG'
# 获取当前可卖出的仓位
closeable_amount = context.portfolio.positions[stock].closeable_amount

# 卖出示例:如果可卖数量大于0,则全部卖出
if closeable_amount > 0:
    order_target(stock, 0)

3. 其他相关属性

  • locked_amount: 挂单冻结仓位(例如您下了一个限价卖单,还没成交,这部分股票就会被冻结)。
  • today_amount: 今天开的仓位(今天刚买入的股数)。

总结

将您的代码修改为以下形式即可消除警告:

stock = '600104.XSHG'
# 如果是为了计算总资产或查看总股数:
amount = context.portfolio.positions[stock].total_amount

# 如果是为了判断能卖多少:
amount = context.portfolio.positions[stock].closeable_amount