query_symbols() 返回 list[str],可能为空。订阅前先检查长度,不假定列表顺序具有策略含义。
查询列表#
futures = api.query_symbols("FUTURE")
main_futures = api.query_symbols("FUTURE", exchange_id="SHFE", is_main=True)
rebar = api.query_symbols("FUTURE", exchange_id="SHFE", product_id="rb")
options = api.query_symbols("OPTION", exchange_id="DCE")| 参数 | 要求 |
|---|---|
ins_class | 必填,"FUTURE" 或 "OPTION";需要两类时分别查询 |
exchange_id、product_id | 默认不筛选,分别用于筛选交易所、品种 |
is_main | True 仅主力,False 仅非主力,默认不筛选;期权均为非主力 |
当前合约列表面向未过期合约。is_main=True 只是查询当时的主力标记,不是主力连续合约订阅;返回具体合约后,watch_quote()、watch_kline() 会继续观察该合约,不会自动换月。需要换月时,由应用重新查询、核对持仓和委托,再明确切换。
合约代码#
格式为 交易所.合约。例如 SHFE.rb2610、DCE.a2611-C-3700 仅用于说明格式,并不保证该合约在你运行程序时仍然有效。交易所和品种代码大小写按服务返回值保留,不把整段代码统一转成大写或小写。
查询详情#
symbols = api.query_symbols("FUTURE", is_main=True)
if symbols:
info = api.query_symbol_info(symbols[0])
print(info["symbol"], info["ins_class"])
details = info["data"]
print("名称", details.get("name"))
print("最小变动价位", details.get("price_tick"))
print("合约乘数", details.get("volume_multiple"))
print("限价委托手数范围", details.get("min_limit_order_volume"),
details.get("max_limit_order_volume"))| 顶层字段 | 类型 |
|---|---|
symbol | str |
exchange_id | str |
product_id | str |
ins_class | str |
is_main | bool |
data | dict |
data 中的 price_tick 是最小变动价位;下单前应核对限价是否为有效价位,不能只按 price_decs 保留小数位。读取值缺失、为空或不符合预期时,先核实合约信息,不应自行假定为 0。完整常用字段见 合约详情字典,最终委托仍由柜台校验。
这两个方法都是调用时的一次性查询,不返回观察句柄,无需调用 .data() 或 .is_changing(),也不会在 wait_update() 后原地更新查询结果。