找到原因了。
经分析发现mysql文件中的 start, end 两个字段被修改导致。
所以进行注释,问题解决。
E:\veighna_studio\Lib\site-packages\vnpy_mysql\mysql_database.py
def load_bar_data(
self,
symbol: str,
exchange: Exchange,
interval: Interval,
start: datetime,
end: datetime
) -> List[BarData]:
""""""
# start: datetime = start.replace(hour=0, minute=0, second=0)
# end: datetime = end.replace(hour=23, minute=59, second=59)
配置的是mysql, 米筐的数据源
在使用vnpy 3.4.0进行策略回测时发现一个问题,后使用系统自带的示例策略 KingKeltnerStrategy 也可以再现。
一,问题描述 在进行回测时 2022-10-12 的数据会重复执行,其他日期则不会。
2022-10-12的数据回测完成后,会再回测一次。5分钟bar的输出日志如下 :
二, 回测设置如下
1, 在示例策略 KingKeltnerStrategy中
增加最后一行bar输出: print('\n\n', bar.datetime, ' 分钟线bar为: ' , str(bar))
2,设置回测参数如下
3,运行回测后,就会出现开头 5分钟bar的输出日志 所描述的问题。
请帮忙分析解决,谢谢!
xiaohe wrote:
log.console:console指的是终端,如Windows系统上的cmd和Powershell,以及Linux上的Terminal。当设置为True时,通过终端运行脚本来启动VN Trader,日志信息会输出在终端中;如果通过VN Station来直接启动VN Trader,则无console输出。
那么你是用什么启动VN Trader的呢?
你好,我用的是windows vnstation的 UI启动,不用终端启动,请参考。
等于true。
日志文件始终为空
因为需要调试和分析回测数据, 回测时把 log.level 设定为10, 单日志文件 vt_20201027.log 还是为空。
请问如何解决,非常感谢!
在centos安装vnpy,执行bash install.sh 时报错,请问如何解决,谢谢
wget https://pip.vnpy.com/colletion/ta-lib-0.4.0-src.tar.gz
--2020-10-12 13:23:57-- https://pip.vnpy.com/colletion/ta-lib-0.4.0-src.tar.gz
正在解析主机 pip.vnpy.com (pip.vnpy.com)... 125.37.206.219
正在连接 pip.vnpy.com (pip.vnpy.com)|125.37.206.219|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2020-10-12 13:23:58 错误 404:Not Found。
我是计划在centos 服务器上运行多进程或遗传算法优化,都是命令操作的,有没有解决办法呢?
jupter可用通过命令操作吗
谢谢~
以命令方式执行多进程优化的时候,报以下错误,请问如何解决:
2020-10-09 16:52:59.924560 开始加载历史数据
2020-10-09 16:53:00.023296 加载进度:########## [100%]
2020-10-09 16:53:00.023296 历史数据加载完成,数据量:41761
2020-10-09 16:53:00.322496 开始加载历史数据
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "D:\vnstudio\lib\multiprocessing\spawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "D:\vnstudio\lib\multiprocessing\spawn.py", line 114, in _main
prepare(preparation_data)
File "D:\vnstudio\lib\multiprocessing\spawn.py", line 225, in prepare
_fixup_main_from_path(data['init_main_from_path'])
File "D:\vnstudio\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path
run_name="mp_main")
File "D:\vnstudio\lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "D:\vnstudio\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "D:\vnstudio\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\Pycharm\vnpy-master\vnpy\app\cta_strategy\backtesting\backtesting_demo_multiprocess.py", line 53, in <module>
engine.run_optimization(setting)
File "D:\Pycharm\vnpy-master\vnpy\app\cta_strategy\backtesting.py", line 578, in run_optimization
pool = ctx.Pool(multiprocessing.cpu_count())
File "D:\vnstudio\lib\multiprocessing\context.py", line 119, in Pool
context=self.get_context())
File "D:\vnstudio\lib\multiprocessing\pool.py", line 177, in init
self._repopulate_pool()
File "D:\vnstudio\lib\multiprocessing\pool.py", line 238, in _repopulate_pool
self._wrap_exception)
File "D:\vnstudio\lib\multiprocessing\pool.py", line 257, in _repopulate_pool_static
w.start()
File "D:\vnstudio\lib\multiprocessing\process.py", line 112, in start
self._popen = self._Popen(self)
File "D:\vnstudio\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "D:\vnstudio\lib\multiprocessing\popen_spawn_win32.py", line 33, in init
prep_data = spawn.get_preparation_data(process_obj._name)
File "D:\vnstudio\lib\multiprocessing\spawn.py", line 143, in get_preparation_data
_check_not_importing_main()
File "D:\vnstudio\lib\multiprocessing\spawn.py", line 136, in _check_not_importing_main
is not going to be frozen to produce an executable.''')
RuntimeError:
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.
This probably means that you are not using fork to start your
child processes and you have forgotten to use the proper idiom
in the main module:
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
楼主的问题太重要了,我也是在分析如何动态调整仓位,楼主的说明对我很管用。
动态调整仓位(比如按照资金余额的百分比)很重要,这应该是通过系统实现而非手工调整。
另外,除了交易部分支持动态调整仓位外, 回测部分应该也需要加上,否则无法进行有效的基于动态仓位回测。
建议vnpy在后续的版本中, 在回测和实盘功能部分,增加基于资金余额的的动态调整仓位功能,谢谢大家~
guan wrote:
用Python的交易员 wrote:
这个是EXCEL RTD模块用的端口被别的程序占用了,更换一个好了
请问在哪里更换RTD的端口
已经解决,修改文件
d:\vnstudio\lib\site-packages\vnpy\app\excel_rtd\engine.py
REP_ADDRESS = "tcp://*:9001"
修改后为:
REP_ADDRESS = "tcp://*:9007"
Traceback (most recent call last):
File "d:\vnstudio\lib\site-packages\vnstation\cli.py", line 92, in run_trader
main_engine.add_app(app)
File "d:\vnstudio\lib\site-packages\vnpy\trader\engine.py", line 96, in add_app
engine = self.add_engine(app.engine_class)
File "d:\vnstudio\lib\site-packages\vnpy\trader\engine.py", line 71, in add_engine
engine = engine_class(self, self.event_engine)
File "d:\vnstudio\lib\site-packages\vnpy\app\excel_rtd\engine.py", line 32, in init
self.server.start(REP_ADDRESS, PUB_ADDRESS)
File "d:\vnstudio\lib\site-packages\vnpy\rpc__init.py", line 108, in start
self.socket_rep.bind(rep_address)
File "zmq\backend\cython\socket.pyx", line 550, in zmq.backend.cython.socket.Socket.bind
File "zmq\backend\cython\checkrc.pxd", line 26, in zmq.backend.cython.checkrc._check_rc
zmq.error.ZMQError: Permission denied
启动时出现同样的问题,杀掉python.exe 没有用 ,请帮忙解决下,谢谢