大家好,这个问题困扰了几天了,请教大家,多谢回复哦:
最新VNPY的2.14版本&Windows环境,想测试一下.csv文件导入到SQLite数据库中的功能,用VN.Trader图形化界面的,.csv文件数据导入模块可以正常实现数据导入和CTA策略回测。
但是同样的.csv文件(格式都已经参照了VNPY的标准格式),用PY脚本想手动操作导入测试,报错信息如下:(database.db也尝试删除过)
PS C:\Users\Administrator\Desktop\vnpy-master> python Move_data_sql.py #(运行脚本)
Traceback (most recent call last):
File "Move_data_sql.py", line 95, in <module>
move_df_to_sqlite(imported_data)
File "Move_data_sql.py", line 70, in move_df_to_sqlite
sql_manager.save_bar_data(bars)
File "C:\Users\Administrator\Desktop\vnpy-master\vnpy\trader\database\database_sql.py", line 385, in save_bar_data
ds = [self.class_bar.from_bar(i) for i in datas]
File "C:\Users\Administrator\Desktop\vnpy-master\vnpy\trader\database\database_sql.py", line 385, in <listcomp>
ds = [self.class_bar.from_bar(i) for i in datas]
File "C:\Users\Administrator\Desktop\vnpy-master\vnpy\trader\database\database_sql.py", line 98, in from_bar
dt = bar.datetime.astimezone(DB_TZ)
File "pandas_libs\tslibs\timestamps.pyx", line 860, in pandas._libs.tslibs.timestamps.Timestamp.tz_convert
TypeError: Cannot convert tz-naive Timestamp, use tz_localize to localize #(报错信息:好像关于时区的)
脚本部分代码如下:
imported_data = pd.read_csv('C:/Users/Administrator/Desktop/vnpy-master/USDJPY_D1.csv')
datetime_format = '%Y%m%d %H:%M:%S'
imported_data['datetime'] = pd.to_datetime(imported_data['datetime'],format=datetime_format)
imported_data['exchange']=Exchange.OTC
imported_data['symbol']='USDJPY'
imported_data['interval']=Interval.DAILY
move_df_to_sqlite(imported_data) #(调用函数)
def move_df_to_sqlite(data_df:pd.DataFrame): #(数据导入函数)
bars = []
start = None
count = 0
for row in data_df.itertuples():
bar = BarData(
symbol=row.symbol,
exchange=row.exchange,
datetime=row.datetime,
interval=row.interval,
volume=float(row.volume),
open_price=float(row.open),
high_price=float(row.high),
low_price=float(row.low),
close_price=float(row.close),
open_interest=float(row.open_interest),
gateway_name="DB",
)
bars.append(bar)
# do some statistics
count += 1
if not start:
start = bar.datetime
end = bar.datetime
# insert into database
sql_manager.save_bar_data(bars)
print(f'插入{count} 根bar 从 {start} 到 {end}')
,csv文件格式如下:
datetime,open,high,low,close,volume,open_interest
2019-08-02 21:00:00,107.327,107.562,106.502,106.563,0.0,0.0
这个问题蛮卡的,一直没有有效解决,希望得到陈老师,VNPY团队,各位群友老师的指导,感谢大家的回复!