问题描述
解决方案
在 JoinQuant 聚宽平台上,查询当前可以进行融资买入(Margin Cash)的标的股票列表,主要使用 get_margincash_stocks 函数。
以下是详细的使用说明和代码示例。
查询融资标的列表
核心函数:get_margincash_stocks
该函数用于获取上交所、深交所最近一次披露的可融资标的列表。
函数说明
get_margincash_stocks(date=None)
- 参数:
date:查询日期。- 在回测/模拟模块中:若不填,默认为回测当前的日期。
- 在研究模块中:若不填,默认为最新日期。
- 也可以指定具体的日期字符串(如
'2023-01-01')。
- 返回值:
- 返回一个包含股票代码的
list(列表)。
- 返回一个包含股票代码的
代码示例
以下代码展示了如何获取列表以及如何判断某只股票是否属于融资标的。
# 导入聚宽数据库
from jqdata import *
# 1. 获取最新的融资标的列表
# 如果在回测中,获取的是回测当天的列表;在研究中,获取的是最新披露的列表
margincash_stocks = get_margincash_stocks()
# 打印列表中前 5 只股票代码
print("融资标的示例(前5个):")
print(margincash_stocks[:5])
# 2. 判断特定股票是否可融资买入
target_stock = '000001.XSHE' # 平安银行
if target_stock in margincash_stocks:
print(f"{target_stock} 当前是可以融资买入的标的")
else:
print(f"{target_stock} 当前不可融资买入")
# 3. 获取指定日期的融资标的列表
history_stocks = get_margincash_stocks(date='2022-01-01')
print(f"2022-01-01 时共有 {len(history_stocks)} 只融资标的")
注意事项
- 数据更新机制:交易所通常在交易日结束后披露最新的融资融券标的,因此获取的数据通常是基于最近一次交易所公告的。
- 融券标的区别:如果您需要查询融券卖出(Securities Lending)的标的,请使用
get_marginsec_stocks()函数,用法与上述函数完全一致。 - 未完结交易日:该函数无法获取当前未完结交易日的数据,因为交易所尚未生成当日数据。
Q&A
Q: 如何查询某只股票具体的融资余额和融券余量数据?
A: 可以使用 get_mtss(security_list, start_date, end_date, fields) 函数。该函数可以获取指定股票在一段时间内的融资余额(fin_value)、融资买入额(fin_buy_value)、融券余量(sec_value)等详细数据。
Q: get_margincash_stocks 返回的列表中包含基金吗?
A: 是的,该列表包含交易所披露的所有可融资标的,其中可能包含部分 ETF 基金(如 510050.XSHG),具体取决于交易所的规定。
Q: 如果我想在回测中只交易融资标的,应该怎么写?
A: 您可以在 before_trading_start 或 handle_data 中调用 get_margincash_stocks() 获取列表,然后在选股逻辑中过滤掉不在该列表中的股票。例如:valid_stocks = [s for s in my_stock_pool if s in get_margincash_stocks()]。