问题描述
解决方案
在聚宽(JoinQuant)中,获取某只股票特定时间段的 Tick 数据,主要使用 get_ticks 函数。
要获取“昨天”(即上一个交易日)上午开盘第一个小时(09:30:00 到 10:30:00)的数据,关键在于正确构建 start_dt 和 end_dt 参数。
以下是具体的实现代码,分为策略回测/模拟交易和研究环境两种场景:
场景一:在策略回测或模拟交易中
在策略中,context.previous_date 属性可以直接获取上一个交易日的日期对象。
# -*- coding: utf-8 -*-
def initialize(context):
# 设置我们要操作的股票
g.security = '000001.XSHE'
# 每天开盘后运行一次,查看昨天的数据
run_daily(check_yesterday_ticks, '09:30')
def check_yesterday_ticks(context):
# 1. 获取上一个交易日的日期
prev_date = context.previous_date
# 2. 拼接起止时间字符串
# 开盘第一个小时:09:30:00 到 10:30:00
start_time = str(prev_date) + ' 09:30:00'
end_time = str(prev_date) + ' 10:30:00'
# 3. 调用 get_ticks 获取数据
# df=True 表示返回 pandas DataFrame 格式,方便处理
ticks_df = get_ticks(g.security, start_dt=start_time, end_dt=end_time, df=True)
# 4. 打印结果查看
if ticks_df is not None and not ticks_df.empty:
log.info(f"获取到 {g.security} 在 {prev_date} 09:30-10:30 的 Tick 数据,共 {len(ticks_df)} 条")
# 打印前5条数据
log.info(ticks_df.head())
else:
log.info("未获取到数据")
场景二:在研究环境(Notebook)中
在研究环境中,你需要先计算出“上一个交易日”具体是哪一天。
import datetime
from jqdata import *
# 1. 设置股票代码
security = '000001.XSHE'
# 2. 获取最近的一个交易日(作为"昨天")
# 获取截止到今天的前2个交易日,取列表中的第一个即为上一个交易日
# 注意:如果今天是交易日,get_trade_days(count=2) 返回的是[昨天, 今天]
# 如果今天是周六日,逻辑需根据实际需求调整,这里演示获取最近的一个已完成交易日
today = datetime.date.today()
trade_days = get_trade_days(end_date=today, count=2)
if len(trade_days) >= 2:
yesterday = trade_days[-2] # 取倒数第二个,即上一个交易日
else:
# 如果数据不足(极少见),取最近一天
yesterday = trade_days[-1]
print(f"查询日期: {yesterday}")
# 3. 拼接起止时间
start_time = str(yesterday) + ' 09:30:00'
end_time = str(yesterday) + ' 10:30:00'
# 4. 获取 Tick 数据
df = get_ticks(security, start_dt=start_time, end_dt=end_time, df=True)
# 5. 显示数据
print(df.head())
print(f"总条数: {len(df)}")
代码关键点说明:
-
get_ticks函数:security: 标的代码(如 '000001.XSHE')。start_dt: 开始时间字符串(包含日期和时间)。end_dt: 结束时间字符串。df=True: 强烈建议设置为True,这样返回的是pandas.DataFrame,包含time,current,volume,money以及买一卖一(期货)或买五卖五(股票)等字段,便于分析。
-
时间区间:
09:30:00到10:30:00涵盖了开盘后的第一个小时。- 注意:
get_ticks返回的数据是闭区间还是开区间取决于具体的 API 版本细节,但通常包含end_dt之前的数据。
-
数据权限:
- Tick 数据量较大,通常需要开通相应的权限(如聚宽的专业版或试用权限)才能在回测中使用。
- 股票 Tick 数据支持 2010-01-01 至今。