请问1年前的历史tick数据如何获取,还有7天订单流
我是一天 24 小时随便什么时间都可以获取,吗还是在特定的时间范围内
问题描述
解决方案
在 qmt 平台上获取历史 tick 数据和订单流数据,需要注意以下几点:
1. 历史 tick 数据的获取
- 数据范围: qmt 平台通常提供一定时间范围内的历史 tick 数据,但能否获取到 1 年前的 tick 数据取决于您所连接的券商服务器或数据源的配置。一般来说,tick 数据量非常大,很多服务器只保留最近几个月的数据。建议您先尝试获取,如果获取不到,可能需要联系您的券商或数据提供商确认其数据保留策略。
- 获取方法: 您可以使用
ContextInfo.get_history_data()或ContextInfo.get_market_data_ex()函数来获取历史 tick 数据。- 使用
get_history_data时,将period参数设置为'tick'。 - 使用
get_market_data_ex时,将period参数设置为'tick'。
- 使用
- 获取时间: 只要您的 qmt 客户端处于登录状态,并且服务器正常运行,您通常可以在一天 24 小时内的任何时间尝试获取历史数据。但是,在交易时间段(如 9:30-11:30, 13:00-15:00),服务器可能会优先处理实时行情和交易请求,获取大量历史数据可能会比较慢或受到限制。建议在非交易时间段下载大量历史数据。
2. 订单流数据的获取
- Level2 数据: 订单流数据通常属于 Level2 行情数据。qmt 平台支持 Level2 数据,但前提是您需要开通了 Level2 行情权限。
- 获取方法: 如果您有 Level2 权限,可以使用
ContextInfo.get_market_data_ex()函数,并将period参数设置为'l2quoteaux'(Level2 行情快照指标) 或'l2transactioncount'(Level2 大单统计) 来获取相关数据。 - 7天订单流: 同样,能否获取到过去 7 天的订单流数据取决于服务器的配置。您可以尝试设置
start_time和end_time来获取指定时间段的数据。
示例代码
def init(ContextInfo):
# 设置股票池
ContextInfo.set_universe(['000001.SZ'])
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 尝试获取历史 tick 数据 (注意:获取大量 tick 数据可能非常耗时)
# 这里仅作为示例,实际使用时请谨慎设置 count 或时间范围
tick_data = ContextInfo.get_market_data_ex(
fields=[],
stock_code=['000001.SZ'],
period='tick',
count=100 # 获取最近 100 个 tick
)
print("Tick Data:", tick_data)
# 尝试获取 Level2 大单统计数据 (需要 Level2 权限)
# l2_data = ContextInfo.get_market_data_ex(
# fields=[],
# stock_code=['000001.SZ'],
# period='l2transactioncount',
# count=10
# )
# print("Level2 Data:", l2_data)
总结:
您可以随时尝试获取数据,但能否获取到 1 年前的 tick 数据和 7 天的订单流数据,主要取决于您的数据源权限和服务器配置。建议在非交易时间进行大量数据的下载。