VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 5361
声望: 325

发布于VeighNa社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2024-12-29
 
今年【社区活动尊享卡】的受欢迎程度大幅超出我们的预期,为了保证每场社区活动的交流质量,尊享卡已经变更为仅对部分专业交易员用户定向提供。同时当前的999优惠价格(12次活动)将于2024年12月31日结束25年将会上涨到1099的价格。有需要的同学请扫描二维码添加小助手咨询:

description

本周发布了VeighNa的3.9.4版本,也是3.0大版本的最后一次发布。本次更新的主要内容是升级支持了TDengine时序数据库的3.0新版本,以及VeighNa Docker容器镜像功能的再度升级,整合了VeighNa Station投研一体化终端,提供和VeighNa Studio更加一致的用户体验。

对于已经安装了VeighNa Studio的用户,可以使用快速更新功能完成自动升级。对于没有安装的用户,请下载VeighNa Studio-3.9.4,体验一键安装的量化交易Python发行版,下载链接:

https://download.vnpy.com/veighna_studio-3.9.4.exe

 

TDengine时序数据库支持升级

 

作为知名国产开源时序数据库的TDengine,其对于金融时序数据的存储性能充分得到了量化行业用户的认可,但之前TDengine 2.0版本中相对复杂的安装流程(WSL安装配置、FQDN服务器地址验证、服务自动启动等),难住了许多对于Linux命令操作不那么熟悉的VeighNa社区同学。

本次3.9.4版本更新中升级实现了对于TDengine 3.0版本的适配,在保持原有高性能的同时,大幅降低了在Windows系统上使用VeighNa平台对接TDengine的安装配置难度,强烈推荐已经遇到默认SQLite数据库性能瓶颈的同学们上手体验

 

Docker服务端

对于大多数VeighNa用户,推荐使用TDengine 3.0版本的Docker容器镜像来安装配置时序数据库的服务端程序。对于Linux命令操作熟悉的同学,也可以参考这篇文档中的说明在WSL或者Linux服务器上直接安装,本文中就不做详细介绍。

首先需要确保Windows系统中已经安装好了Docker Desktop软件,可以在Docker官网的该页面找到下载链接:

https://www.docker.com/products/docker-desktop/

点击页面中部蓝色按钮的【Download Docker Desktop】,在弹出的下拉框中选择【Download for Windows - AMD64】,下载完成后运行安装程序,基本一路傻瓜安装即可。

安装完成后启动Docker Desktop程序,点击窗口右上角的齿轮按钮进入全局配置页面,如下图所示:

description

勾选【General】下的【Start Docker Desktop when you sign in to your computer】后,点击右下角的【Apply & restart】按钮,将Docker Desktop设置为随操作系统启动(配合后面的容器自动重启参数,实现TDengine的后台服务式运行)。

完成后可以关闭Docker Desktop窗口,此时软件不会退出,而是最小化到系统右下角的托盘栏中。随后打开PowerShell或者其他命令行工具(文中使用的是Windows Terminal中运行的PowerShell),运行命令:

docker

如果能看到如下图所示输出,则说明Docker运行正常:

description

下一步是使用命令拉取TDengine容器镜像:

docker pull tdengine/tdengine:latest

运行命令后,看到所有进度条都走完,则说明拉取成功:

description

拉取完成后,通过下述命令来启动数据库服务容器:

docker run -d `
  -v C:/my_tdengine/data:/var/lib/taos `
  -v C:/my_tdengine/log:/var/log/taos `
  -p 6030:6030 `
  -p 6041:6041 `
  -p 6043:6043 `
  -p 6044-6049:6044-6049 `
  -p 6044-6045:6044-6045/udp `
  -p 6060:6060 `
  --restart=always `
  tdengine/tdengine

以上PowerShell多行命令的每行结尾使用了反引号(键盘Tab上方按键)作为换行符,将上述命令复制到PowerShell窗口中运行,等待几秒后容器启动成功会输出一段较长的随机字符串(容器编号)。

启动容器后,可以通过下述命令来查看当前容器的运行状态:

docker ps

正常运行状态下,输出的信息如下图所示:

description

命令中的具体参数(以-或者--开头)说明如下:

-v:用于挂载Windows系统下的指定文件夹到容器中,为容器中运行的TDengine程序提供数据存储输出,可以根据自己的需求修改:

  • /var/lib/taos,对应的是TDengine的数据存储路径;

  • /var/log/taos,对应的是TDengine的日志输出路径。

-p:用于将Windows系统的端口映射绑定到容器中对应的端口,为外部程序提供数据库访问,这些端口参数建议保持不变:

  • 6030,主要用于应用程序(如VeighNa)连接TDengine;
  • 6041,提供数据库管理终端(如DBeaver)连接TDengine;
  • 其他端口提供更加进阶的功能,这里可以忽略。

--restart:用于设置容器的重启策略,always代表每次Docker Desktop启动后都立即启动TDengine容器,结合之前设置的Docker Desktop开机自动启动即可实现时序数据库的后台服务式运行。

 

Windows客户端

完成Docker服务端安装后,下一步需要安装Windows客户端程序:

https://www.taosdata.com/assets-download/3.0/TDengine-client-3.3.4.8-Windows-x64.exe

下载完成后运行程序直接安装即可,至此我们就完成了TDengine 3.0版本的安装流程。

在VeighNa中对接TDengine,需要通过vnpy_taos模块(VeighNa Station更新3.9.4版本时会自动安装),该模块又依赖于刚安装完成的TDengine客户端程序。

然后在VeighNa Trader菜单栏的全局配置中(或者vt_setting.json文件里)填入以下内容:

  • database.name: "taos"
  • database.database: "vnpy"
  • database.host: "127.0.0.1"
  • database.port: 6030
  • database.user: "root"
  • database.password: "taosdata"

重启后,即可体验VeighNa Trader连接TDengine时序数据库的高能性能数据读写。

 

VeighNa Docke容器镜像升级

 

本次3.9.4更新中对VeighNa Docker容器镜像的功能再次进行了升级,整合了广受欢迎的VeighNa Station投研一体化终端,为Linux和Mac系统用户提供和VeighNa Studio高度一致的体验。

安装好Docker后,在终端(如bash中)运行下述命令:

docker run \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /mnt/c/veighna/home:/home \
veighna/veighna:3.9.4 \
python3 -m veighna_station

即可启动VeighNa Station,同时【交易】页面下的【交易接口】和【功能模块】也都对Docker容器环境进行了适配,如下图所示:

description

上述命令中的"-v /mnt/c/veighna/home:/home",用于将宿主机中的"/mnt/c/veighna/home"文件夹,挂载到Docker容器中的"/home"路径,作为VeighNa运行时的数据存储和日志输出,实际使用时可以根据自己的需求进行调整。

 

CHANGELOG

 

新增

  1. vnpy_tora增加登录时终端动态密钥支持
  2. vnpy_taos升级支持TDengine的3.0版本

调整

  1. vnpy_xt行情接口增加实时行情中的涨跌停价字段
  2. vnpy_taos移除不必要的时区转换提高性能
  3. vnpy_dolphindb优化写入大量数据时候的内存占用
  4. vnpy_portfoliostrategy简化回测引擎的calculate_pnl每日盈亏计算函数
  5. vnpy_tap/vnpy_tts升级pybind11封装工具库的版本,支持Python 3.12编译
  6. EmailEngine发送邮件失败后,捕捉异常并输出日志

修复

  1. vnpy_optionmaster移除不必要的价格缓存代码
  2. vnpy_dolphindb修复保存overview的时区不正确问题

 

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

安装了一天的TDengine,都链接不了数据库。 安装在C盘的VNPY不行,删除了装D盘, 安装流程就是连接不上。
File "D:\my_vnpy\veighna_studio\lib\runpy.py", line 196, in _run_module_as_main
2025-03-30 21:34:08 return _run_code(code, main_globals, None,
File "D:\my_vnpy\veighna_studio\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "build\bdist.win-amd64\egg\veighna_station\trader.py", line 39, in <module>
2025-03-30 21:34:08 File "build\bdist.win-amd64\egg\veighna_station\trader.py", line 30, in run_trader
File "D:\my_vnpy\veighna_studio\lib\site-packages\vnpy\trader\engine.py", line 103, in add_app
engine: BaseEngine = self.add_engine(app.engine_class)
File "D:\my_vnpy\veighna_studio\lib\site-packages\vnpy\trader\engine.py", line 74, in add_engine
engine: BaseEngine = engine_class(self, self.event_engine)
File "D:\my_vnpy\veighna_studio\lib\site-packages\vnpy_ctastrategy\engine.py", line 97, in init
self.database: BaseDatabase = get_database()
File "D:\my_vnpy\veighna_studio\lib\site-packages\vnpy\trader\database.py", line 159, in get_database
database = module.Database()
File "D:\my_vnpy\veighna_studio\lib\site-packages\vnpy_taos\taos_database.py", line 36, in init
self.conn: taos.TaosConnection = taos.connect(
File "D:\my_vnpy\veighna_studio\lib\site-packages\taos__init.py", line 65, in connect
return TaosConnection(*args, **kwargs)
File "D:\my_vnpy\veighna_studio\lib\site-packages\taos\connection.py", line 25, in
init__
self._conn = self._chandle.connect(self._host, self._user, self._password, self._database, self._port)
File "D:\my_vnpy\veighna_studio\lib\site-packages\taos\cinterface.py", line 2013, in connect
return taos_connect(host, user, password, db, port)
File "D:\my_vnpy\veighna_studio\lib\site-packages\taos\cinterface.py", line 249, in taos_connect
raise ConnectionError(errstr, errno)
taos.error.ConnectionError: [0x000b]: Unable to establish connection

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

安装这个配置, 其中host也换过127.0.0.1
"database.timezone": "Asia/Shanghai",
"database.name": "taos",
"database.database": "vnpy",
"database.host": "localhost",
"database.port": 6030,
"database.user": "root",
"database.password": "taosdata"

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

早上连接成功了。 原因是因为GreatWall,导致docker pull tdengine/tdengine:latest产生错误
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
只能找镜像文件,网上其中一个只有700多Mb,现在替换成3.3.6.0 这个版本900多MB, 同时tag更名成tdengine/tdengine:latest 。
正在摸索这个数据库,不知道后续会有什么问题,

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

您好,按教程来,下载查询出来的时间比本来的时间少8个小时,比如9:30变成了1:30,这个应该怎么办呀

Member
avatar
加入于:
帖子: 5361
声望: 325

检查一下你的本机时区和你填写的全局配置中的database.timezone是否有差别

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

沪公网安备 31011502017034号

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