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

参考https://github.com/vnpy/vnpy/tree/master/examples/portfolio_backtesting回测自己写的策略,发现使用示例中默认时间段是没有问题的

    start=datetime(2019, 1, 1),
    end=datetime(2020, 4, 30),

但是修改时间段为如下(仅仅是开始时间增加了一天)就会报出异常,请问是什么原因呢?

    start=datetime(2019, 1, 2),
    end=datetime(2020, 4, 30),

2022-08-26 23:49:47.388408 开始加载历史数据

InterfaceError Traceback (most recent call last)
File C:\veighna_studio\lib\site-packages\peewee.py:3160, in Database.execute_sql(self, sql, params, commit)
3159 try:
-> 3160 cursor.execute(sql, params or ())
3161 except Exception:

File C:\veighna_studio\lib\site-packages\pymysql\cursors.py:148, in Cursor.execute(self, query, args)
146 query = self.mogrify(query, args)
--> 148 result = self._query(query)
149 self._executed = query

File C:\veighna_studio\lib\site-packages\pymysql\cursors.py:310, in Cursor._query(self, q)
309 self._clear_result()
--> 310 conn.query(q)
311 self._do_get_result()

File C:\veighna_studio\lib\site-packages\pymysql\connections.py:547, in Connection.query(self, sql, unbuffered)
546 sql = sql.encode(self.encoding, "surrogateescape")
--> 547 self._execute_command(COMMAND.COM_QUERY, sql)
548 self._affected_rows = self._read_query_result(unbuffered=unbuffered)

File C:\veighna_studio\lib\site-packages\pymysql\connections.py:793, in Connection._execute_command(self, command, sql)
792 if not self._sock:
--> 793 raise err.InterfaceError(0, "")
795 # If the last query was unbuffered, make sure it finishes before
796 # sending new commands

InterfaceError: (0, '')

During handling of the above exception, another exception occurred:

InterfaceError Traceback (most recent call last)
Input In [81], in <cell line: 2>()
1 #%%
----> 2 engine.load_data()
3 engine.run_backtesting()
4 df = engine.calculate_result()

File C:\veighna_studio\lib\site-packages\vnpy_portfoliostrategy\backtesting.py:157, in BacktestingEngine.load_data(self)
154 while start < self.end:
155 end = min(end, self.end) # Make sure end time stays within set range
--> 157 data: List[BarData] = load_bar_data(
158 vt_symbol,
159 self.interval,
160 start,
161 end
162 )
164 for bar in data:
165 self.dts.add(bar.datetime)

File C:\veighna_studio\lib\site-packages\vnpy_portfoliostrategy\backtesting.py:912, in load_bar_data(vt_symbol, interval, start, end)
908 symbol, exchange = extract_vt_symbol(vt_symbol)
910 database: BaseDatabase = get_database()
--> 912 return database.load_bar_data(
913 symbol, exchange, interval, start, end
914 )

File C:\veighna_studio\lib\site-packages\vnpy_mysql\mysql_database.py:301, in MysqlDatabase.load_bar_data(self, symbol, exchange, interval, start, end)
290 s: ModelSelect = (
291 DbBarData.select().where(
292 (DbBarData.symbol == symbol)
(...)
297 ).order_by(DbBarData.datetime)
298 )
300 bars: List[BarData] = []
--> 301 for db_bar in s:
302 bar: BarData = BarData(
303 symbol=db_bar.symbol,
304 exchange=Exchange(db_bar.exchange),
(...)
314 gateway_name="DB"
315 )
316 bars.append(bar)

File C:\veighna_studio\lib\site-packages\peewee.py:6943, in BaseModelSelect.iter(self)
6941 def iter(self):
6942 if not self._cursor_wrapper:
-> 6943 self.execute()
6944 return iter(self._cursor_wrapper)

File C:\veighna_studio\lib\site-packages\peewee.py:1911, in database_required.<locals>.inner(self, database, args, **kwargs)
1908 if not database:
1909 raise InterfaceError('Query must be bound to a database in order '
1910 'to call "%s".' % method.name)
-> 1911 return method(self, database,
args, **kwargs)

File C:\veighna_studio\lib\site-packages\peewee.py:1982, in BaseQuery.execute(self, database)
1980 @database_required
1981 def execute(self, database):
-> 1982 return self._execute(database)

File C:\veighna_studio\lib\site-packages\peewee.py:2155, in SelectBase._execute(self, database)
2153 def _execute(self, database):
2154 if self._cursor_wrapper is None:
-> 2155 cursor = database.execute(self)
2156 self._cursor_wrapper = self._get_cursor_wrapper(cursor)
2157 return self._cursor_wrapper

File C:\veighna_studio\lib\site-packages\peewee.py:3173, in Database.execute(self, query, commit, context_options)
3171 ctx = self.get_sql_context(
context_options)
3172 sql, params = ctx.sql(query).query()
-> 3173 return self.execute_sql(sql, params, commit=commit)

File C:\veighna_studio\lib\site-packages\peewee.py:3157, in Database.execute_sql(self, sql, params, commit)
3154 else:
3155 commit = not sql[:6].lower().startswith('select')
-> 3157 with exception_wrapper:
3158 cursor = self.cursor(commit)
3159 try:

File C:\veighna_studio\lib\site-packages\peewee.py:2933, in ExceptionWrapper.exit(self, exc_type, exc_value, traceback)
2931 new_type = self.exceptions[exc_type.name]
2932 exc_args = exc_value.args
-> 2933 reraise(new_type, new_type(exc_value, *exc_args), traceback)

File C:\veighna_studio\lib\site-packages\peewee.py:191, in reraise(tp, value, tb)
189 def reraise(tp, value, tb=None):
190 if value.traceback is not tb:
--> 191 raise value.with_traceback(tb)
192 raise value

File C:\veighna_studio\lib\site-packages\peewee.py:3160, in Database.execute_sql(self, sql, params, commit)
3158 cursor = self.cursor(commit)
3159 try:
-> 3160 cursor.execute(sql, params or ())
3161 except Exception:
3162 if self.autorollback and not self.in_transaction():

File C:\veighna_studio\lib\site-packages\pymysql\cursors.py:148, in Cursor.execute(self, query, args)
144 pass
146 query = self.mogrify(query, args)
--> 148 result = self._query(query)
149 self._executed = query
150 return result

File C:\veighna_studio\lib\site-packages\pymysql\cursors.py:310, in Cursor._query(self, q)
308 self._last_executed = q
309 self._clear_result()
--> 310 conn.query(q)
311 self._do_get_result()
312 return self.rowcount

File C:\veighna_studio\lib\site-packages\pymysql\connections.py:547, in Connection.query(self, sql, unbuffered)
545 if isinstance(sql, str):
546 sql = sql.encode(self.encoding, "surrogateescape")
--> 547 self._execute_command(COMMAND.COM_QUERY, sql)
548 self._affected_rows = self._read_query_result(unbuffered=unbuffered)
549 return self._affected_rows

File C:\veighna_studio\lib\site-packages\pymysql\connections.py:793, in Connection._execute_command(self, command, sql)
788 """
789 :raise InterfaceError: If the connection is closed.
790 :raise ValueError: If no username was specified.
791 """
792 if not self._sock:
--> 793 raise err.InterfaceError(0, "")
795 # If the last query was unbuffered, make sure it finishes before
796 # sending new commands
797 if self._result is not None:

InterfaceError: (0, '')

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

补充说明:上述异常是在vnstation的投研模块中运行结果,把代码放在本地pycharm中运行就不会有异常了。。。

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

沪公网安备 31011502017034号

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