把历史数据补为一个CSV文件.
quotesT= datetime.datetime.fromtimestamp(ks[s][i][“datetime”]/1e9)
OSError: [Errno 22] Invalid argument
就是上面这个错误.但多运行几次就会对一次.而且如果SYMBOL代码多,这个错误就会多一些.有何方法处理吗
Traceback (most recent call last):
File “C:\Users\CarreyXu\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\tqsdk\demo\DDE era Single backfill.py”, line 71, in <module>
quotesT= datetime.datetime.fromtimestamp(ks[s][i][“datetime”]/1e9)
OSError: [Errno 22] Invalid argument
>>>
RESTART: C:\Users\CarreyXu\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\tqsdk\demo\DDE era Single backfill.py
Traceback (most recent call last):
File “C:\Users\CarreyXu\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\tqsdk\demo\DDE era Single backfill.py”, line 71, in <module>
quotesT= datetime.datetime.fromtimestamp(ks[s][i][“datetime”]/1e9)
OSError: [Errno 22] Invalid argument
>>>
RESTART: C:\Users\CarreyXu\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\tqsdk\demo\DDE era Single backfill.py
Traceback (most recent call last):
File “C:\Users\CarreyXu\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\tqsdk\demo\DDE era Single backfill.py”, line 71, in <module>
quotesT= datetime.datetime.fromtimestamp(ks[s][i][“datetime”]/1e9)
OSError: [Errno 22] Invalid argument
import datetime import csv #!/usr/bin/env python # -*- coding: utf-8 -*- from tqsdk import TqApi, TqSim import datetime api = TqApi(TqSim()) SYMS = { 'R1': 'KQ.m@SHFE.ag', 'R5': 'KQ.m@SHFE.ni', 'R6': 'KQ.m@DCE.j', 'R7': 'KQ.m@DCE.pp', 'R8': 'CZCE.AP001', 'R9': 'CZCE.TA001', 'R11': 'KQ.m@SHFE.ru', 'R12': 'KQ.m@DCE.eg', 'R13': 'CZCE.MA001', 'R14': 'KQ.m@CZCE.CF', 'R15': 'KQ.m@CZCE.CJ', 'R17': 'DCE.i2001', 'R18': 'DCE.y2001', 'R19': 'DCE.p2001', 'R21': 'KQ.m@DCE.jd', 'R23': 'KQ.m@CZCE.SR', 'R27': 'KQ.m@CZCE.OI', 'R28': 'DCE.jm2001', } def get_key (dict, value): return [k for k, v in dict.items() if v == value] i=-8000 ks = {} first_time = True for s in SYMS: ks[s] = api.get_kline_serial( SYMS[s],60,8199) while not all([ks[s].is_ready() for s in ks]): api.wait_update() if api.is_changing(ks[s][i], 'close'): while i<=-1: for s in SYMS: quotesC=ks[s][i]["close"] quotesO=ks[s][i]["open"] quotesH=ks[s][i]["high"] quotesL=ks[s][i]["low"] quotesV=ks[s][i]["volume"] quotesT= datetime.datetime.fromtimestamp(ks[s][i]["datetime"]/1e9) with open("C:\\Docu Dontdel\\ChinaFut.csv","a",newline='') as csvfile: writer = csv.writer(csvfile, dialect='excel') writer.writerow([str(get_key (SYMS, SYMS[s])).replace(' ', '')[2:-2].upper(),str(quotesT).replace(' ', '')[0:-8],str(quotesT).replace(' ', '')[10:],quotesO,quotesH,quotesL,quotesC,quotesV]) csvfile.close()
不知道你解决问题没有,我刚开始使用tqsdk,也遇到了这个问题,这里很明显是数据格式不对的问题,tq返回的是pandas的float64,而datetime对象不能直接使用这个,你需要先手动转换成python对象,再除以1000000000变成python中的标准tiemstamp