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

发布于vn.py社区公众号【vnpy-community】
 
原文作者:用Python的交易员 | 发布时间:2022-01-27
 
记得去年在写2021年计划的时候,提到过Python之父Guido加盟微软,未来Python性能方面的优化值得期待。

然后居然在2021年5月的Python语言峰会上,Guido就做了一场《Making CPython Faster》的分享,并宣布已经投入了名为"Shannon Plan"(“香农计划”)的Python性能优化计划,期望在未来分4个阶段把Python的速度提高5倍。感兴趣的同学推荐阅读【Python猫】公众号的这篇《与 Python 之父聊天:更快的Python!》

description

除此外,由Sam Gross发起的nogil项目已经在Python 3.9的基础上成功证明了移除GIL的可行性(支持多核运行的同时在单核性能基准上没有显著降低)。关于nogil项目的一些情况,同样推荐【Python猫】公众号的《Python 官方研讨会:彻底移除 GIL 真的可行么?》

这样的情况下,即使还没有Python官方JIT(Just-In-Time Complier)的消息,【5倍性能提升】以及【多核CPU支持】这两点改进也十分值得期待了。

对于vn.py项目来说,2022年的重点工作就是全新3.0版本的开发,虽然很多细节内容还在逐渐摸索,但是整体的方向已经基本定下。

 

向上兼容性的保证

 

在之前2019年的1.0 -> 2.0的升级中,由于函数接口和数据结构的变化,给许多老用户的升级带来了不小的麻烦。

description

本次2.0 -> 3.0的升级中,将会尽可能保证向上兼容性。具体来说,对比2.0大版本中收尾的2.9.0:

  • 底层数据结构名称兼容,如:

    • TickData
    • OrderRequest
  • 数据结构字段和类型兼容,如:

    • TickData.last_price,float类型
    • OrderRequest.direction,Enum类型(Direction枚举值)
  • 事件引擎和核心引擎的方法函数兼容,如:

    • EventEngine.register,注册事件处理函数
    • MainEngine.send_order,委托下单
  • 标准插件基类的方法函数兼容,如:

    • BaseGateway.on_tick,推送行情数据
    • BaseDatabase.load_bar_data,读取K线数据
  • 策略应用模块的策略模板兼容,如:

    • CtaStrategy模块下的CtaTemplate
    • SpreadTrading模块下的SpreadStrategyTemplate

总体上的目标,就是使用2.9.0开发运行交易策略的用户,可以平滑的过度到3.0上,不用再重写大量已有的代码(毕竟再也不想有类似Python 2 -> 3的迁移经历了)。

 

升级到Python 3.10

 

在3.9和3.10之间摇摆了几周,考虑到未来几年的技术迭代需求以及性能速度优势,还是决定选择3.10版本的Python来作为新的官方主力支持版本(之前三年使用的是3.7)。

description

截止目前(2022年1月26日),许多量化交易中常用的工具库也都已经发布了3.10版本的支持,包括NumPy、Pandas、Plotly、PyZMQ等。

本次主力支持版本升级后,列举两个比较值得期待的改进尝试方向:

  • 多进程共享内存支持(3.8新增)

    • multiprocessing.shared_memory
    • 执行各种多进程任务时,减少重复数据的内存开销
  • 结构化模式匹配(3.10新增)

    • match和case关键字(类似C++的switch/case)
    • 策略中实现复杂状态控制时,代码可以更加简洁清晰

 

类型提示全面覆盖

 

从3.5版本开始,Python引入了类型提示功能(type hinting),允许对变量、参数、函数返回值添加类型信息,类似下面的语法:

  def get_order(self, vt_orderid: str) -> Optional[OrderData]:      
        """基于委托号查询委托信息"""      
        return self.orders.get(vt_orderid, None)

尽管还是无法像静态语言(C++/Java)一样进行编译期检查,但有了类型提示后,结合上VS Code等编辑器的智能补全功能,写Python代码时的工作效率明显更上一层楼。

2.9.0版本已经初步达成了核心组件的类型提示覆盖,在3.0中会进一步把这个范围扩展到所有插件模块,让vn.py的代码可读性变得更加清晰。

最后:2022,Enjoy Trading!!!

 

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

微信公众号为什么被注销了

Super Moderator
avatar
加入于:
帖子: 529
声望: 43

被人恶意举报了,可以关注临时的公众号 Veighna量化 ,或者在社区论坛的全实战进阶里观看课程视频。

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

郭易燔 wrote:

被人恶意举报了,可以关注临时的公众号 Veighna量化 ,或者在社区论坛的全实战进阶里观看课程视频。

现在谁是vnpy的竞争对手啊

Member
avatar
加入于:
帖子: 15
声望: 23

预计3.0版什么时候推出呀?期待。

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

我说怎么我都置顶关注好久了,突然被注销了。那个cn的真恶心
郭易燔 wrote:

被人恶意举报了,可以关注临时的公众号 Veighna量化 ,或者在社区论坛的全实战进阶里观看课程视频。

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

就是啊, 感觉那个cn的,根本就跟这里就是不一样的两个事物, 强行抢名字, 还一本正经以名字本是它的为前提发文。

阳光海岸 wrote:

我说怎么我都置顶关注好久了,突然被注销了。那个cn的真恶心
郭易燔 wrote:

被人恶意举报了,可以关注临时的公众号 Veighna量化 ,或者在社区论坛的全实战进阶里观看课程视频。

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

沪公网安备 31011502017034号

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