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

JoinQuant聚宽平台查询期货持仓数量及多空方向指南

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

问题描述

如何调出自己的持仓数量?

请问如何查询自己的持仓期货数量?或者知道自己持有正的数量或者是负的数量?

解决方案

在 JoinQuant(聚宽)平台上,查询期货的持仓数量以及判断是多头(正)还是空头(负),可以通过全局对象 context 中的账户信息来实现。

期货的持仓严格区分多头(买涨)空头(买跌),因此在 API 中,它们分别存储在不同的字典中:

  • 多头持仓(正数量):存储在 context.portfolio.long_positions 中。
  • 空头持仓(负数量):存储在 context.portfolio.short_positions 中。

这两个属性都是字典(dict),键(key)是标的代码(如 'RB1909.XSGE'),值(value)是 Position 对象。你可以通过访问 Position 对象的 total_amount 属性来获取具体的持仓数量。

具体代码示例

你可以在 handle_data 或定时运行的函数中,使用以下代码来查询和打印你的期货持仓情况:

def handle_data(context, data):
    # 假设你要查询的期货合约代码
    future_code = 'RB1909.XSGE'
    
    # 1. 查询多头持仓(正数量)
    if future_code in context.portfolio.long_positions:
        long_position = context.portfolio.long_positions[future_code]
        long_amount = long_position.total_amount
        print(f"标的 {future_code} 的多头持仓数量为: {long_amount}")
    else:
        print(f"标的 {future_code} 没有多头持仓")
        
    # 2. 查询空头持仓(负数量)
    if future_code in context.portfolio.short_positions:
        short_position = context.portfolio.short_positions[future_code]
        short_amount = short_position.total_amount
        print(f"标的 {future_code} 的空头持仓数量为: {short_amount}")
    else:
        print(f"标的 {future_code} 没有空头持仓")

    # 3. 遍历打印所有期货持仓
    print("--- 当前所有多头持仓 ---")
    for code, pos in context.portfolio.long_positions.items():
        print(f"合约: {code}, 多单数量: {pos.total_amount}, 可平数量: {pos.closeable_amount}")
        
    print("--- 当前所有空头持仓 ---")
    for code, pos in context.portfolio.short_positions.items():
        print(f"合约: {code}, 空单数量: {pos.total_amount}, 可平数量: {pos.closeable_amount}")

Position 对象常用属性解析

当你获取到 Position 对象(如上面的 pos)后,除了 total_amount,还可以获取以下有用信息:

  • pos.total_amount: 总仓位数量(包含挂单冻结的仓位)。
  • pos.closeable_amount: 可平仓数量(当前可以用来下平仓单的数量)。
  • pos.price: 最新行情价格。
  • pos.avg_cost: 当前持仓成本(开仓均价)。
  • pos.value: 标的价值(计算方法:price * total_amount * 合约乘数)。

总结

  • 正的数量(多头):去 context.portfolio.long_positions 里面找。
  • 负的数量(空头):去 context.portfolio.short_positions 里面找。
  • 获取到的 total_amount 本身是一个正数,代表你持有该方向的合约手数。方向由它所在的字典(long 还是 short)决定。