3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽(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("未获取到数据")
在研究环境中,你需要先计算出“上一个交易日”具体是哪一天。
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 之前的数据。数据权限: