🚀 AI 一键生成 joinquant 策略代码

JoinQuant 期货数据:使用 get_future_contracts 获取当日可交易合约

joinquant | 发布时间: 2025/12/19
以下内容由 EasyQuant 生成。

问题描述

怎样获取某个期货品种当前所有可交易的合约代码?

解决方案

在 JoinQuant(聚宽)平台中,获取某个期货品种当前所有可交易的合约代码,可以使用 get_future_contracts 函数。

核心函数

get_future_contracts(security, date=None)

  • security: 期货合约品种代码,例如 'RB' (螺纹钢)、'IF' (沪深300股指期货)。
  • date: 查询日期。
    • 回测/模拟模块中:若不填,默认为回测当前的日期。
    • 研究模块中:若不填,默认为最新日期。
    • 也可以指定具体的日期字符串(如 '2023-10-27')。

代码示例

以下代码展示了如何在研究环境或回测中获取“螺纹钢”(RB)和“沪深300股指期货”(IF)的所有可交易合约。

# -*- coding: utf-8 -*-
from jqdata import *

def initialize(context):
    # 示例:获取螺纹钢(RB)当前日期的所有可交易合约
    rb_contracts = get_future_contracts('RB')
    print("螺纹钢当前可交易合约:")
    print(rb_contracts)
    
    # 示例:获取沪深300股指期货(IF)在指定日期(2023-01-05)的可交易合约
    if_contracts = get_future_contracts('IF', date='2023-01-05')
    print("2023-01-05 沪深300股指期货可交易合约:")
    print(if_contracts)

# 如果是在研究环境中直接运行,可以使用以下代码:
# contracts = get_future_contracts('RB')
# print(contracts)

注意事项

  1. 品种代码:参数 security 传入的是品种代码(如 'AG', 'AU', 'RB', 'IF'),而不是具体的合约代码。
  2. 返回结果:返回的是一个包含合约代码字符串的列表(List),例如 ['RB2310.XSGE', 'RB2401.XSGE', ...]
  3. 主力合约:该函数返回的是所有在市合约。如果您只需要获取主力合约,请使用 get_dominant_future(security, date) 函数。

Q&A

Q: 如何获取某个期货品种的主力合约代码?
A: 使用 get_dominant_future(underlying_symbol, date=None) 函数。例如 get_dominant_future('RB') 会返回当前日期的螺纹钢主力合约代码。

Q: get_future_contracts 返回的列表中包含已经过期的合约吗?
A: 不包含。它只返回在 date 指定的日期当天仍然上市可交易的合约。

Q: 如果我想获取全市场所有期货品种的列表怎么办?
A: 可以使用 get_all_securities(types=['futures']) 来获取所有期货合约的详细信息列表,然后从中提取品种代码。