发布于veighna社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2024-03-26
 

本周一发布了VeighNa的3.9.1版本,本次更新的主要内容是i18n国际化功能支持,感谢社区用户Andy Geach的PR贡献!Andy Geach是一位来自英国Costwolds的软件工程师,主要工作方向是量化投资和开源软件,感兴趣的话推荐访问他的Github个人主页

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

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

 

i18n国际化功能

 

i18n是“internationalization(国际化)”的缩写,其中的数字18代表字母“i”和“n”之间的18个字母,i18n的目标是让程序能够适应多种语言和地区而无需重写代码。

Python中原生提供了对于i18n的支持,主要的工具库包括:

  • gettext模块:Python标准库中的内置模块,用于为不同语言的文字内容提供翻译函数;
  • pygettext工具:位于Python环境的Tools\i18n目录下,用于从代码中自动提取源代码中的可翻译字符串,并初始化待翻译的【.pot文件】;
  • msgfmt工具:同样位于Tools\i18n目录下,用于将翻译好的【.po文件】编译成二进制的【.mo文件】,保证Python程序运行时的快速加载。

本次3.9.1更新中完成了对于VeighNa核心框架部分的英文翻译,相关功能代码和翻译内容位于vnpy.trader.locale模块下。在以英文为系统语言的环境中运行启动VeighNa时,就会自动显示为英文UI界面,如下图所示:

description

使用中文系统语言的用户想要测试的话,可以通过在命令行中手动设置LANG环境变量来实现。这里以cmd为例,启动命令行工具后运行:

set LANG=en

然后在该命令行中使用脚本(如examples\veighna_trader\run.py)启动,即可看到英文UI界面。

同时上图中左下角日志区域的中文输出,来源于目前尚未实现i18n英文翻译的vnpy_ctp交易接口模块。由于全部翻译的工作量相当巨大,且VeighNa有不少模块仅针对国内金融市场,后续计划根据社区用户的需求反馈(Issue、PR等)来安排进一步的翻译工作。

有兴趣参与翻译工作的同学欢迎发起PR,具体流程可以参考这里的文档

 

CHANGELOG

 

新增

  1. 增加i18n国际化支持,以及对应的英文翻译

  2. 增加CFD和SWAP品种类型枚举值

  3. vnpy_ib增加COMEX、Eurex交易所支持

  4. vnpy_ib增加CFD品种支持

调整

  1. vnpy_rqdata完善对于周五夜盘数据查询的支持

  2. vnpy_ib订阅行情和委托下单时,检查代码字符串是否包含空格

  3. vnpy_ib解析合约对象时,增加对于ConId是否包含非数字字符的检查

  4. vnpy_ib查询历史K线数据,支持更长时间段跨度(不再限制半年)

  5. vnpy_da更新API版本到1.18.2.0

  6. vnpy_da移除历史数据查询功能

  7. vnpy_tora调整期权接口的委托号生成规则,支持上限10万数量委托

  8. vnpy_xtp调整账户冻结资金的计算逻辑

  9. vnpy_optionmaster增加对IB的股票期权品种支持

  10. vnpy_optionmaster定价模型改为计算理论希腊值

  11. vnpy_optionmaster调整对象希腊值为理论模式

  12. vnpy_optionmaster调整中值隐波动的计算方法

  13. vnpy_spreadtrading使用线程池实现策略初始化的异步执行

  14. vnpy_postgresql支持自动重用已经打开的数据库连接

  15. vnpy_ctptest更新API版本至6.7.2

  16. 接口封装升级更新pybind11到2.11.1版本:vnpy_ctptest、vnpy_sopttest

  17. vnpy_ctp更新API版本到6.7.2

  18. 调整extract_vt_symbol函数,兼容代码中带有"."的情况,如HHI.HK-HKD-FUT.HKFE

  19. 更新vnpy框架的核心依赖模块到2024年较新的版本

修复

  1. 修复vnpy_portfoliostrategy调用stop_strategy没有撤销活动委托的问题

  2. 修复vnpy_xtp的API封装中queryTickersPriceInfo底层调用错误

  3. 修复RpcClient中_last_received_ping变量的类型问题