找回密码
 立即注册

量化界社区(量化交易专业社区)

资讯热线
0898-888888
查看: 4800|回复: 1

VNPY 量化交易上的性能对比分析

[复制链接]

1048

主题

1057

帖子

3694

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3694
QQ
发表于 2017-11-14 23:32:40 | 显示全部楼层 |阅读模式
上一篇《承载科技金融人的梦想,追求量化速度效率的极致

今天夜盘SIMNOW服务器无法交易,以为是策略死锁了,用老策略程序运行起来,依然无法交易。
看到CTP群里反映无法平仓了,才知道可能是今天SIMNOW服务器除了问题。

记得实盘一定要改成期货公司的IP地址。

据说CTP提供了最新的稳定,对新手更加友好了,不过还是建议使用Quicklib已经封装好的库,因为很多生态工具已经完成了,例如资金曲线分时图工具和历史行情采集和回播工具
安心使用python的相关库做策略开发,例如pandas的dataframe是非常好的 选择。

讲一个笑话:
高考结束了,小明平时成绩很好发挥也不错,完全可以达到重点本科分数线。
但小明在填报志愿的时候,出了一个可笑的逻辑,因为小明觉得考大学本科可能比较难学,想省点脑子,所以最后报考了大专(不用那么消耗脑子嘛,更何况报考的这所大专学校有一门选修课“网页设计”非常不错)。
选VNPY的逻辑如同小明的逻辑, python较为容易学习嘛,python初学者一看,原来python也可以搞底层(大专学校的选修课“网页设计(python搞底层)”成了加分项?是不是有点违背选python的初衷呢?,难道本科大学就没有网页设计(C++搞底层)这门课程吗?)啊,其实搞底层C++(大学本科)就好了啊。

在这个行业,相信大家不止一个人也不止一次的说过类似的话:"一个成熟的系统不会是由一门语言去包打天下的”。

python不适合开发大项目,C++可以开发大项目。你拿PYTHON做什么大型交易系统嘛。

VNPY更 是把python缺点美化成了优点。关于python的性能问题,可以参考下面3篇文章

《刚才测试了一下 Node.js 与 python 的计算性能,震惊了,node.js居然比python快了70多倍。。比php快了16倍,c语言也比node.js慢了一点点》
https://www.v2ex.com/t/113887?p=1

《循环测试:C性能是PYTHON的 62倍,VNPY你拿PYTHON做什么事件驱动?》
http://www.iteye.com/topic/699462

《 Python 比 C++ 慢 22 倍》
https://www.juhe.cn/news/index/id/843

当然简单的说python比C++慢22倍,比node.js慢70倍,比C慢62倍并不公平,


事实上,当python作为胶水调用一些库进行计算的时候,甚至比C++做计算还要快10%左右,得益于CPU基于硬件对PYTHON调用的类库(例如numpy)做了硬件上的优化

if else
while
1+1=2 这类都很慢,20~70倍性能差异。
只有numpy pandas这类直接拥有api的调用性能和c区别不大

当然如果python只是作为胶水,如果只是粘合各种C++开发的类库,那么性能差异并不明显,就好像用胶水补车胎,只要胶水都抹均匀了,强度取决于贴上去的那块橡胶。
不可能像VNPY那样全部用胶水糊弄一下。

用python搞什么底层嘛?对于一些基本的语句,例如for语句,python性能不到C++ 的1/10;VNPY利用python做事件驱动,性能非常之差,而且无法避免GIL全局锁,更重要的是,你逼着PYTHON程序员搞底层啊。既然那么费脑子为什么不直接选择C++?
对刚学习python的初学者来说,一看VN.py可以搞底层,觉得非常棒,“哇,python还可以搞底层”。但他并不知道付出的代价是什么。

用python搞底层是比较讨好而已,但只搞python的人,并不知道性能为何物。

有几个做底层的资深程序员,用过VN.PY后都和我述说,VN.PY根本不适合生产环境。

python的优势不在于做底层,而是做数据分析和调用各种类库。

选择一门语言不在于他的缺点,而在于它的优点
选择是因为优点,但也要规避缺点

我们看看2017年4月份左右VN.PY作者为攻击比自己性能更好QUICKLIB说出了6个谎言
https://zhuanlan.zhihu.com/p/27243838

和VNPY比起来,为什么有其它的程序化交易框架架构可以做到了底层C++驱动的性能,不仅可以实现绕过GIL全局锁,甚至在底层还可以实现C++无锁队列,并在python应用层调用较为简单,性能更好很多。

这不是PYTHON本身的问题,而是VNPY的python框架架构的问题!

Quicklib秉承的是底层用C++驱动,采用C++封装好方法,并提供给python调用,采用异步IO,  通过底层驱动,用较短的代码路径迅速进入数据高效处理环节。
http://www.quicklib.cn

Quicklib作者开发的酷操盘手CTP期货跟单软件
http://www.kucps.com

转帖请注明来自量化界
http://www.lhjie.net/forum.php?m ... age=1&extra=#pid183


程序化交易、高频套利、python量化交易、CTA一辈子
回复

使用道具 举报

1048

主题

1057

帖子

3694

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3694
QQ
 楼主| 发表于 2017-11-21 19:18:45 | 显示全部楼层
程序化交易、高频套利、python量化交易、CTA一辈子
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表