我只能说我表达能力有限,看代码和输出的结果吧,最后有一列 datetime_dt 是用 time_to_datetime转换的,看看是不是你设想中的数据
lookis 已回答的问题 2020年8月26日
from datetime import date import pandas as pd from tqsdk import TqApi, TqBacktest, TqKq from tqsdk.tafunc import time_to_datetime pd.options.display.float_format = '{:20.0f}'.format SYMBOL = 'SHFE.rb2010' api = TqApi( backtest=TqBacktest(start_dt=date(2020, 8, 10), end_dt=date(2020, 8, 20))) klines = api.get_kline_serial(SYMBOL, duration_seconds=60 * 5, data_length=10) klines['datetime_dt'] = klines['datetime'].apply(time_to_datetime) print(klines) api.close()
在使用天勤量化之前,默认您已经知晓并同意以下免责条款,如果不同意请立即停止使用:https://www.shinnytech.com/blog/disclaimer/ datetime id open high low close volume open_oi close_oi symbol duration datetime_dt 0 1596780600000000000 12188 3836 3839 3833 3835 13977 1149495 1148265 SHFE.rb2010 300 2020-08-07 14:10:00 1 1596780900000000000 12189 3835 3840 3835 3837 12770 1148265 1147665 SHFE.rb2010 300 2020-08-07 14:15:00 2 1596781200000000000 12190 3837 3837 3833 3834 5832 1147665 1147704 SHFE.rb2010 300 2020-08-07 14:20:00 3 1596781500000000000 12191 3834 3836 3830 3834 8532 1147704 1148467 SHFE.rb2010 300 2020-08-07 14:25:00 4 1596781800000000000 12192 3834 3837 3833 3834 4680 1148467 1147365 SHFE.rb2010 300 2020-08-07 14:30:00 5 1596782100000000000 12193 3834 3837 3833 3835 6611 1147365 1145200 SHFE.rb2010 300 2020-08-07 14:35:00 6 1596782400000000000 12194 3835 3841 3835 3837 11648 1145200 1143732 SHFE.rb2010 300 2020-08-07 14:40:00 7 1596782700000000000 12195 3837 3838 3834 3834 7980 1143732 1143844 SHFE.rb2010 300 2020-08-07 14:45:00 8 1596783000000000000 12196 3834 3837 3831 3831 11881 1143844 1141372 SHFE.rb2010 300 2020-08-07 14:50:00 9 1596783300000000000 12197 3831 3835 3831 3832 17305 1141372 1137326 SHFE.rb2010 300 2020-08-07 14:55:00
lookis 编辑答案 2020年8月26日
直接用time_to_datetime试试吧,有惊喜,python打印出来的科学计数法精度有限,麻烦你不要再拷贝出来用网页转换了,精度在你从屏幕拷贝出来的时候就损失掉了,这也是我上一个回答里说你精度损失的意思
你可以看看那个数值,只保留了6位小数,但后面其实应该有18个小数位,所以从第七位开始你都看不到了,这个完全是显示的问题,内存里的数值是正确的,在显示的时候被截断了,所以你看到的数字是一样的,那是因为更多的小数部分被print打印出来的时候舍弃掉了
ringo 发表新评论 2020年8月27日
我不是官方啊……我也只是一个用户……
日kline的datetime不具有参考意义,其实是包含这个交易日的夜盘到第二天白盘的数据的
嗯,经过核实,基本确定是数值显示的问题,datetime 列数值小数点后并不是只有6位,从第7位就被四舍五入了,所以小周期 K 线就会看到相同的 datetime 值,其实 datetime 值就是当下 k 线的开盘时间;
另外,有一点很重要,比如从日线级别看螺纹钢 8.25 的 datetime 信息,得到的值会是 8.25-00:00:00,但因为螺纹钢是有夜盘的,这个值应该是前一交易日的晚9点即 8.24-21:00:00;感谢官方的回复;