-
Notifications
You must be signed in to change notification settings - Fork 54
/
关于Quicklib是否适合做高频的问题.txt
23 lines (13 loc) · 1.8 KB
/
关于Quicklib是否适合做高频的问题.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
很多人问我,quicklib适合做高频吗?
这让我无法一句话回答,因为不同的朋友所指的高频的概念是不同的。
首先高频需要满足2个基本条件:1.托管 2.付费行情
如果这2个条件做不到,就不能算是高频。
这2个条件是做高频的必要条件,而不是满足这2个条件就是高频了。
当满足这2个条件后,我们再讨论高频的问题。
高频有几种类型,但因为大多数方式都是下单后立刻撤单,所以需要逻辑代码执行路径要尽可能短,所以高频通常是直接用C++开发,直接使用C++开发,而不需要和其他语言交互,使得逻辑代码的执行路径较短,所以用C++做开发是高频理想的选择,因为逻辑代码执行路径的长短是影响高频收益能力的主要因素。
对采用指标计算的策略(量化)而言,比如普通的MACD,MA这些指标计算,本质上市对时间序列的处理,对Python而言,硬件针对Python做了优化,经过测试比直接用C++计算还快10%左右。由于对基于时间序列的指标计算,代码逻辑长短不是主要因素,所以采用Python+C++结合的方式,反而是一对黄金组合,底层使用C++,而基于时间序列部分采用Python,矩阵处理的计算使用Python库,效率反而更好,或二者效率差异微乎其微。Quicklib就是Python和C++结合的模式,并采用行情驱动、消息驱动,使得算法是0延时,将二种语言的优点无缝结合在一起。
其实一味讨论性能没有意义,以2016年主流CPU配置(1000-2000元),每秒可以进行20万次以上的普通指标计算,快是多快慢是多慢本身就没有意义,不如直接加几百块买更好的CPU来的实在,而不要花几个月时间陷入无限过度优化的工作中,你优化的这段时间,新的CPU产品推出,可能新一代CPU硬件性能提升已经超过了你优化的程度。与其那样,还不如什么都不做,等几个月用相同的钱买更快的CPU。
所以过度追求性能是没有意义的。
决定性能最主要因素是架构和硬件。也可以采用GPU加速的方式,采用几千元的NVIDIA CUDA加速计算,可以使得计算提升到140倍以上,当然代码也存在兼容性问题,普通云主机无法采用GPU加速。需要买有GPU加速的服务。
对普通策略是没必要采用GPU加速的,因为CPU计算能力远远足够。
当然对非线性交易系统(神经网络、深度学习、隐马尔可夫链等、随机森林等)的复杂训练和计算,采用GPU加速是一种更好的选择。