这个问题应该是个bug,望修复一下。
vnpy3.7版本使用dolphindb录制1分钟k线数据的报错代码如下所示:
Traceback (most recent call last): File "C:\veighna_studio\lib\site-packages\vnpy_datarecorder\ui\widget.py", line 157, in process_exception_event raise exc_info[1].with_traceback(exc_info[2]) File "C:\veighna_studio\lib\site-packages\vnpy_datarecorder\engine.py", line 117, in run self.database.save_bar_data(data, stream=True) File "C:\veighna_studio\lib\site-packages\vnpy_dolphindb\dolphindb_database.py", line 94, in save_bar_data overview_table = self.session.loadTable(tableName="baroverview", dbPath=self.db_path) File "C:\veighna_studio\lib\site-packages\dolphindb\session.py", line 758, in loadTable return Table(data=tbName, s=self, isMaterialized=True) File "C:\veighna_studio\lib\site-packages\dolphindb\table.py", line 157, in __init__ self._init_schema() File "C:\veighna_studio\lib\site-packages\dolphindb\table.py", line 339, in _init_schema schema = self.__session.run("schema(%s)" % self.__tableName) # type: dict File "C:\veighna_studio\lib\site-packages\dolphindb\session.py", line 453, in run return self.cpp.run(script, *args, **kwargs) RuntimeError: <Exception> in run: Received invalid header: _
1.如下图所示,使用ctp录制数据,盘前7:37这根k线是校验数据吗?我一般是8:45启动客户端,应该这是8:45之后收到的。 2.早盘8:59这个k线是集合竞价产生的1分钟k线吗? 一般集合竞价这根1分钟k线如何处置呢? 是直接抛弃还是合并进9点钟的1分钟k线里面?
bill-wong wrote:
MTF wrote:
bill-wong wrote:
我大概找到原因了,但不知道对不对,请大佬们指教:
我观察了下今天收到的数据,前10秒每个品种在每个时间戳都收到了4条重复的tick data,那么在入库的时候,用DbTickData.insert_many(c).on_conflict_replace().execute()批量存储的时候,如果c中有完全重复的数据,就会导致异常,无法执行操作。
- 数据库的去重主键,基于symbol、exchange、interval、datetime四个字段,如果完全重复就会去重覆盖
- 如果插入失败,正常也会抛出异常信息,而不会直接卡住了
目前用的就是默认SQLite吗?
是的,您说得对,今天又卡住了,不是重复数据问题。我用的是sqlite。目前不知道是什么原因了。
尝试换个高性能数据库试试,例如:dolphinDB,MongoDB。
如图所示,vnpy3.7使用市价单开仓总是被撤销,使用限价单就可以开仓,郑商所和大商所好像支持市价单,原因是?
支持,帮顶上去
哈哈哈,不错不错,总能带给我们一些不错的玩儿法,让我们在学习的道路上更加有趣。
为什么不在停止单的基础上来修改了?增加执行价格,设定价、市场价或者极限价呢? 这样会不会简单一点。
C:\Users\Administrator\Desktop\vnpy-3.7.0>python run.py
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\vnpy-3.7.0\run.py", line 101, in <module>
main()
File "C:\Users\Administrator\Desktop\vnpy-3.7.0\run.py", line 76, in main
main_engine.add_app(CtaStrategyApp)
File "C:\Users\Administrator\Desktop\vnpy-3.7.0\vnpy\trader\engine.py", line 102, in add_app
engine: BaseEngine = self.add_engine(app.engine_class)
File "C:\Users\Administrator\Desktop\vnpy-3.7.0\vnpy\trader\engine.py", line 73, in add_engine
engine: BaseEngine = engine_class(self, self.event_engine)
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\engine.py", line 97, in __init__
self.database: BaseDatabase = get_database()
File "C:\Users\Administrator\Desktop\vnpy-3.7.0\vnpy\trader\database.py", line 158, in get_database
database = module.Database()
File "C:\veighna_studio\lib\site-packages\vnpy_dolphindb\dolphindb_database.py", line 47, in __init__
self.session.run(CREATE_DATABASE_SCRIPT)
File "C:\veighna_studio\lib\site-packages\dolphindb\session.py", line 453, in run
return self.cpp.run(script, *args, **kwargs)
RuntimeError: <Exception> in run: Server response: 'db = database(dataPath, VALUE, 2000.01M .. 2030.12M, , "TSDB") => Usage: database(directory, [partitionType], [partitionScheme], [locations], [engine='OLAP'], [atomic='TRANS']).engine must be 'OLAP'.' script: '
dataPath = "dfs://vnpy"
db = database(dataPath, VALUE, 2000.01M..2030.12M, engine=`TSDB)