3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 平台的分钟级别回测模式下,您使用 ContextInfo.get_bar_timetag(index) 获取到的其实并不是“错误时间”,而是一个 13位的毫秒级时间戳(例如 1512748800000)。如果您直接打印或使用这个数值,它看起来并不像标准的时间格式。
要获取正确且可读的当前 K 线时间,您需要结合 QMT 提供的内置时间转换函数 timetag_to_datetime(),将毫秒时间戳转换为标准的日期时间字符串。
请在您的 handlebar 函数中使用以下代码结构:
#coding:gbk
def init(ContextInfo):
# 设置回测的股票池和时间等
ContextInfo.set_universe(['000001.SZ'])
def handlebar(ContextInfo):
# 1. 获取当前 K 线的索引
index = ContextInfo.barpos
# 2. 获取当前 K 线对应的毫秒级时间戳
realtimetag = ContextInfo.get_bar_timetag(index)
# 3. 将毫秒时间戳转换为可读的日期时间格式(例如:YYYY-MM-DD HH:MM:SS)
current_time = timetag_to_datetime(realtimetag, '%Y-%m-%d %H:%M:%S')
# 打印输出查看正确的时间
print(f"当前K线索引: {index}, 对应时间: {current_time}")
ContextInfo.get_bar_timetag(index)
number(毫秒级时间戳)。timetag_to_datetime(timetag, format)
timetag:毫秒时间戳(即上一步获取的 realtimetag)。format:格式字符串,如 '%Y-%m-%d %H:%M:%S' 或 '%Y%m%d %H:%M:%S'。str(格式化后的时间字符串)。handlebar 会在每一根分钟 K 线上触发一次,转换后的时间即为该分钟 K 线的具体时间。'%H%M%S',然后转换为整数进行比较:int_time = int(timetag_to_datetime(realtimetag, '%H%M%S'))
if int_time >= 145500:
print("临近尾盘")