3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 量化交易平台中,获取某只股票在特定时间段内的龙虎榜数据,可以使用 ContextInfo.get_longhubang() 接口。
该接口返回一个 pandas.DataFrame 对象,其中包含了上榜原因、成交额、以及买卖席位的详细信息。
以下是一个完整的策略示例代码,展示了如何在策略初始化时获取“平安银行(000001.SZ)”在指定时间段内的龙虎榜数据并打印结果。
# -*- coding: gbk -*-
def init(ContextInfo):
# 1. 设置需要查询的股票代码列表
stock_list = ['000001.SZ']
# 2. 设置查询的起始时间和结束时间 (格式:YYYYMMDD)
start_time = '20230101'
end_time = '20230630'
# 3. 调用接口获取龙虎榜数据
# 注意:该函数返回的是一个 pandas DataFrame
lhb_data = ContextInfo.get_longhubang(stock_list, start_time, end_time)
# 4. 打印结果
if lhb_data is not None and not lhb_data.empty:
print("获取到的龙虎榜数据如下:")
print(lhb_data)
# 示例:访问第一条记录的买入席位详情
# 注意:'buyTraderBooth' 和 'sellTraderBooth' 字段中的内容本身也是 DataFrame
if 'buyTraderBooth' in lhb_data.columns:
first_record_buy_seats = lhb_data.iloc[0]['buyTraderBooth']
print("-" * 30)
print("第一条记录的买入席位详情:")
print(first_record_buy_seats)
else:
print("未查询到指定时间段内的龙虎榜数据。")
def handlebar(ContextInfo):
# 本示例仅在 init 中演示数据获取,handlebar 中无需操作
pass
ContextInfo.get_longhubanglist): 股票代码列表,例如 ['600000.SH', '000001.SZ']。string): 起始时间,格式为 'YYYYMMDD',例如 '20230101'。string): 结束时间,格式为 'YYYYMMDD',例如 '20231231'。返回值为 pandas.DataFrame,主要包含以下字段:
| 字段名 | 含义 | 数据类型 |
|---|---|---|
| reason | 上榜原因 | String |
| close | 收盘价 | Float |
| spreadRate | 涨跌幅 | Float |
| TurnoverVolune | 成交量 | Float |
| Turnover_Amount | 成交金额 | Float |
| buyTraderBooth | 买方席位详情 | DataFrame (嵌套) |
| sellTraderBooth | 卖方席位详情 | DataFrame (嵌套) |
buyTraderBooth 和 sellTraderBooth 字段中存储的是嵌套的 DataFrame,包含以下列:
traderName: 交易营业部名称buyAmount: 买入金额buyPercent: 买入金额占总成交占比sellAmount: 卖出金额sellPercent: 卖出金额占总成交占比totalAmount: 该席位总成交金额rank: 席位排行direction: 买卖方向Q: get_longhubang 接口返回的数据为空是什么原因?
A: 可能的原因包括:
'YYYYMMDD' 的格式)。Q: 如何获取龙虎榜中买一席位的名称?
A: 返回的数据中 buyTraderBooth 是一个嵌套的 DataFrame。你可以通过索引访问。例如,假设 df 是龙虎榜数据:
# 获取第一行数据的买方席位DataFrame
buy_seats_df = df.iloc[0]['buyTraderBooth']
# 获取买一席位(假设按rank排序,通常第一行即为买一)
if not buy_seats_df.empty:
buy_one_name = buy_seats_df.iloc[0]['traderName']
Q: 这个接口支持回测模式吗?
A: 支持。get_longhubang 接口在回测模式和实盘/模拟模式下均可使用,但必须确保本地已下载了对应的历史数据。