VeighNa量化社区
你的开源社区量化交易平台
shunshunuuu's Avatar
Member
离线
12 帖子
声望: 0
from vnpy.trader.constant import (Exchange, Interval)
import pandas as pd 
from datetime import datetime, timedelta, timezone

# 中国时区是+8,对应参数hours=8
# 日本时区是+9,hours=9
utc_8 = timezone(timedelta(hours=8))

# 读取需要入库的csv文件,该文件是用gbk编码
imported_data = pd.read_csv('C:/cta_data/2020年1分钟数据(含主连)/a2001.csv',encoding='gbk')

# 将csv文件中 `市场代码`的 SC 替换成 Exchange.SHFE SHFE
imported_data['市场代码'] = Exchange.DCE

# 增加一列数据 `inteval`,且该列数据的所有值都是 Interval.MINUTE
imported_data['interval'] = Interval.MINUTE

# 明确需要是float数据类型的列
float_columns = ['开', '高', '低', '收', '成交量', '持仓量']
for col in float_columns:
    imported_data[col] = imported_data[col].astype('float')

datetime_format = '%Y%m%d %H:%M:%S'
imported_data['时间'] = pd.to_datetime(imported_data['时间'],format=datetime_format)
# imported_data['时间'] = imported_data['时间'].dt.strftime('%Y%m%d %H:%M:%S')  # 使用sqlite数据入库
# imported_data['时间'] = imported_data['时间'].replace(tzinfo=utc_8)

imported_data.columns = ['exchange','symbol','datetime','open','high','low','close','volume','成交额','open_interest','interval']

imported_data['symbol'] = 'a2001'

# imported_data.to_csv('C:/cta_data/tobe_into_library/a2001.csv',encoding='gbk',index=False)

from vnpy.trader.database import get_database
from vnpy.trader.object import (BarData,TickData)
database_manager = get_database()
# from vnpy.trader.database.database import Driver

def move_df_to_sqlite(imported_data:pd.DataFrame):
    bars = []
    start = None
    count = 0
    for row in imported_data.itertuples():
        datetimes = row.datetime.replace(tzinfo=utc_8)
        bar = BarData(
            symbol=row.symbol,
            exchange=row.exchange,
            datetime=datetimes,
            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)
        count += 1
        if not start:
            start = bar.datetime
    end = bar.datetime

    database_manager.save_bar_data(bars=bars)
    print(f"Insert Bar: {count} from {start} - {end}")

move_df_to_sqlite(imported_data)

报错是:
(base) PS C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\strategies> & C:/veighna_studio/python.exe c:/veighna_studio/Lib/site-packages/vnpy_ctastrategy/strategies/into_library.py
Traceback (most recent call last):
File "C:\veighna_studio\lib\site-packages\peewee.py", line 3237, in execute_sql
cursor.execute(sql, params or ())
sqlite3.InterfaceError: Error binding parameter 2 - probably unsupported type.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "c:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\strategies\into_library.py", line 72, in <module>
move_df_to_sqlite(imported_data)
File "c:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\strategies\into_library.py", line 69, in move_df_to_sqlite
database_manager.save_bar_data(bars=bars)
File "C:\veighna_studio\lib\site-packages\vnpy_sqlite\sqlite_database.py", line 176, in save_bar_data

求大佬指点一二

在使用sqlite导入时候出现了这个包找不到的问题,请问是不是被替换成其他包了啊
No module named 'vnpy.trader.database.initialize'; 'vnpy.trader.database' is not a package

xiaohe wrote:

请问参差不齐具体指的是?
就是节假日的前夕没有夜盘,所以不知道它的开始时间,当时是我想错了,只需要控制下午三点结束时间就可以了,谢谢大佬的回复

description

description
真的很苦恼,自己手动改成load_bar就又报别的错

MTF wrote:

必须用分钟合成日线了,否则你可以在on_init中强行直接访问数据库读取数据,但这个很容易出错

合成日线,遇到节假日,分钟数是参差不齐的,这可怎么合成啊

xiaohe wrote:

如果下载了日线数据,回测界面的interval选的是Interval.DAILY,on_bar里会直接推日线数据
如果下载了分钟线数据,回测界面的interval选的是Interval.MINUTE, on_bar里会直接推分钟线数据。因为bg没有合成日线逻辑,所以要收到日线推送的话,需要自己对bg进行个性化修改

那可不可以同时加载并使用下载好的日线和分钟线呢,回测的时候貌似只能选其中一个

在vnpy客户端的数据库已经下好了日线和分钟线数据,vnpy是否可以分别加载和使用日线和分钟线数据呢,还是必须使用分钟线合成日线?? 困扰我好久了,求大佬解答

MTF wrote:

发出委托之后,要下一跟K线才会撮合,你这里在buy之后立即就打印当前仓位,当然是0了
是这样的

回测模式下

description

description

description

可是不是没有no_ui吗,那也就没有run.py了啊

chwei2ch wrote:

鋕桦 wrote:

chwei2ch wrote:

杨大鑫 wrote:

大佬,现在最新版的vnpy目录下一直没找到no_ui这个目录啊

在examples目录下的no_ui
那样是不是要手动安装,而不能用vnstudio安装?

可以用vnstudio安装,然后直接运行那个run.py就可以了

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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