问题描述
解决方案
在 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)
注意事项
- 品种代码:参数
security传入的是品种代码(如'AG','AU','RB','IF'),而不是具体的合约代码。 - 返回结果:返回的是一个包含合约代码字符串的列表(List),例如
['RB2310.XSGE', 'RB2401.XSGE', ...]。 - 主力合约:该函数返回的是所有在市合约。如果您只需要获取主力合约,请使用
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']) 来获取所有期货合约的详细信息列表,然后从中提取品种代码。