VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 21
声望: 0

导入代码和报错结果如下

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}')

description

description

Member
avatar
加入于:
帖子: 1474
声望: 105

首先定义个中国时区:

from zoneinfo import ZoneInfo
CHINA_TZ = ZoneInfo("Asia/Shanghai")

然后:

datetime=row.datetime

这行改为:

datetime=row.datetime.replace(tzinfo=CHINA_TZ)

Member
avatar
加入于:
帖子: 21
声望: 0

MTF wrote:

首先定义个中国时区:

from zoneinfo import ZoneInfo
CHINA_TZ = ZoneInfo("Asia/Shanghai")

然后:

datetime=row.datetime

这行改为:

datetime=row.datetime.replace(tzinfo=CHINA_TZ)
感谢,终于导入数据了

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】