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

使用的功能菜单,数据管理,数据导入

Member
avatar
加入于:
帖子: 337
声望: 27

rockya7096091feb14e64 wrote:

使用的功能菜单,数据管理,数据导入
图里的列名是datetime,你写成了datatime。

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

汗颜汗颜,谢谢!

Member
avatar
加入于:
帖子: 31
声望: 2

description
description
description
以上代码运行,出现下面问题,小白实在是找不到那儿错误。请教大家
description

Member
avatar
加入于:
帖子: 337
声望: 27

linhertz wrote:

description
description
description
以上代码运行,出现下面问题,小白实在是找不到那儿错误。请教大家
description

请在save_bar_data(bars, collection_name)函数里去掉collection_name参数。

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

学习了 👍
感谢楼主 / 抱拳

Member
avatar
加入于:
帖子: 5
声望: 2

这个目前时不时不适用了

Member
加入于:
帖子: 3
声望: 0

description

description
请教各位大佬,报错AttributeError: 'str' object has no attribute 'value',找了两个小时不知道问题出在哪,从表面上看,DataFrame没啥问题啊

Member
avatar
加入于:
帖子: 716
声望: 62

BarData会自动调用自己的post_init函数,然后会去调用exchange.value,但是你传进去的exchange是个字符串类型的,没有value所以报错,
你前面from vnpy.trader.constant import Exchange,然后传入时用Exchange(row.exchange)试一下

Member
加入于:
帖子: 3
声望: 0

郭易燔 wrote:

BarData会自动调用自己的post_init函数,然后会去调用exchange.value,但是你传进去的exchange是个字符串类型的,没有value所以报错,
你前面from vnpy.trader.constant import Exchange,然后传入时用Exchange(row.exchange)试一下
看到您的回复瞬间找到问题了,我直接用了insert字符串了,后来发现Exchage是有value的,非常感谢

Member
加入于:
帖子: 3
声望: 0

Eden wrote:

xiaohe wrote:

请问你的vn_trader版本是?还有你本地的datetime格式是?
是2.1.8的,不过这个问题解决了,换下时间格式就好了,谢谢。

最后怎么解决的兄弟,我也遇到了一样的问题,捣鼓半天了

Member
avatar
加入于:
帖子: 11
声望: 2

veighna 3.2.0版本,下面代码,亲测好用

from vnpy.trader.constant import (Exchange, Interval)
import pandas as pd
from vnpy.trader.database import get_database
from vnpy.trader.object import (BarData,TickData)
from datetime import datetime
from pytz import timezone

tz = timezone( "Asia/Shanghai")

def move_df_to_sqlitedb(imported_data:pd.DataFrame,collection_name:str):
bars = []
start = None
count = 0
for row in imported_data.itertuples():
bar = BarData(
symbol=row.symbol,
exchange=row.exchange,
datetime=tz.localize(datetime.fromisoformat(row.datetime)),

          #datetime=row.datetime.replace(tzinfo=utc_8),
          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_manager.save_bar_data(bars)
print(f"Insert Bar: {count} from {start} - {end}")


database_manager = get_database()

imported_data = pd.read_csv(r'D:\JP\15_程序\Msly\a1905.csv',encoding='gbk')
imported_data.drop('turnover',axis=1,inplace=True)
float_columns = ['open', 'high', 'low', 'close', 'volume', 'open_interest']
for col in float_columns:
imported_data[col] = imported_data[col].astype('float')

imported_data['exchange'] = Exchange.DCE
imported_data['interval'] = Interval.MINUTE
imported_data['symbol'] ='a1905'
move_df_to_sqlitedb(imported_data,'a1905')

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

沪公网安备 31011502017034号

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