问题描述
解决方案
在聚宽(JoinQuant)平台中,获取最新的可以融券做空(融券标的)的股票名单,可以使用 get_marginsec_stocks 函数。
以下是具体的获取方法和代码示例。
核心函数说明
get_marginsec_stocks(date=None)
- 功能:获取上交所、深交所最近一次披露的可融券标的列表。
- 参数:
date:查询日期。- 在回测/模拟模块中:若不填,默认为回测当前的日期。
- 在研究模块中:若不填,默认为最新日期。
- 也可以指定具体的日期字符串(如
'2023-10-27')。
- 返回值:包含股票代码的列表(List)。
代码示例
以下代码展示了如何在研究环境或策略中获取并打印最新的融券标的列表。
# -*- coding: utf-8 -*-
from jqdata import *
def get_short_selling_stocks():
"""
获取最新的融券标的列表
"""
# 获取最新的融券标的列表
# 如果是在回测中,这里返回的是回测当天的列表
# 如果是在研究环境中,这里返回的是交易所最新披露的列表
margin_sec_stocks = get_marginsec_stocks()
# 打印数量
print(f"当前可融券标的数量: {len(margin_sec_stocks)}")
# 打印前10只股票代码作为示例
print("部分可融券标的示例:", margin_sec_stocks[:10])
return margin_sec_stocks
# 执行函数
if __name__ == '__main__':
stocks = get_short_selling_stocks()
# 示例:判断某只股票是否可以融券
check_stock = '000001.XSHE'
if check_stock in stocks:
print(f"{check_stock} 当前可以融券做空")
else:
print(f"{check_stock} 当前不可融券做空")
注意事项
- 数据更新机制:该数据来源于交易所的披露。在回测中,无法获取当前未完结交易日的数据,因为交易所的数据通常在收盘后生成。
- 融资 vs 融券:
get_marginsec_stocks():获取融券标的(做空)。get_margincash_stocks():获取融资标的(杠杆买入)。- 两者列表通常高度重合,但并不完全一致,请根据策略需求选择正确的函数。
- 实盘/模拟交易限制:即使股票在名单中,实际交易时还需取决于券商是否有券源可供融出。
Q&A
Q: 如何获取指定历史日期的融券标的列表?
A: 可以向函数传入 date 参数。例如:get_marginsec_stocks(date='2022-01-01') 将返回2022年1月1日当时的可融券股票列表。
Q: get_marginsec_stocks 返回的数据包含ETF吗?
A: 该函数主要返回上交所和深交所披露的标的,通常包含股票和部分ETF基金。具体以交易所披露的名单为准。
Q: 如果我想查询融资(做多)标的怎么办?
A: 请使用 get_margincash_stocks() 函数,用法与融券接口完全一致。
Q: 回测时报错 NameError: name 'get_marginsec_stocks' is not defined 怎么办?
A: 请确保代码头部已经导入了聚宽的数据库:from jqdata import *。