导入代码和报错结果如下
from ast import List
from asyncio.windows_events import NULL
from datetime import datetime
from typing import List
from vnpy.trader.constant import (Exchange, Interval)
import pandas as pd
import numpy as np
from vnpy.trader.database import get_database
from vnpy.trader.object import (BarData,TickData)
import csv
imported_data = pd.read_csv('D:/rb2310_1hr_2023_03_01_2023_05_01111222.csv')
imported_data.drop('datetime_nano',axis=1,inplace=True)
imported_data.drop('SHFE.rb2310.close_oi',axis=1,inplace=True)
imported_data.insert(loc=0, column='市场代码', value=Exchange.SHFE)
imported_data.insert(loc=1, column='合约代码', value='rb2310')
imported_data['interval'] = Interval.HOUR
datetime_format = '%Y%m%d %H:%M:%S'
imported_data['datetime'] = pd.to_datetime(imported_data['datetime'],format=datetime_format)
float_columns = ['SHFE.rb2310.open', 'SHFE.rb2310.high', 'SHFE.rb2310.low', 'SHFE.rb2310.close', 'SHFE.rb2310.volume', 'SHFE.rb2310.open_oi']
for col in float_columns:
imported_data[col] = imported_data[col].astype('float')
imported_data.columns = ['exchange','symbol','datetime','open','high','low','close','volume','open_interest','interval']
print(imported_data)
bars=[]
start = None
count = 0
for row in imported_data.itertuples():
bar = BarData(
symbol=row.symbol,
exchange=row.exchange,
datetime=row.datetime,
interval=row.interval,
volume=row.volume,
open_price=row.open,
high_price=row.high,
low_price=row.low,
close_price=row.close,
open_interest=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
database = get_database()
database.save_bar_data(bars)
print(f'Insert Bar: {count} from {start} - {end}')