不想错过精彩课程?一键“订阅”,轻松学习!

大家好,欢迎来到金十交易学院《智能量化交易》课程。
摘要:在第一章和第二章中,我们学习了量化交易基础知识和发明者量化工具的使用方法,本章我们就来具体实现交易策略。工欲善其事,必先利其器。要实现交易策略,必须先掌握一门编程语言。这一节先来介绍在量化交易中主流的编程语言,以及每个编程语言自身的特点。
一、什么是编程语言
学习编程语言之前,首先要搞清楚“编程语言”这个概念。编程语言就是人和计算机都能看懂的语言,它是一种被标准化的交流代码,编程语言的目的是使用人类语言去控制计算机,告诉计算机我们要做的事情。计算机可以根据编程语言执行指令,我们也可以编写代码,向计算机发出指令。
就像小时候父母教我们开口说话,也教我们如何理解别人讲话的意思。经过长时间的熏陶和自我学习,我们竟然在不知不觉中学会了说话,也能听懂其他小朋友说话的意思。语言有很多种,包括中文、英文、法文等等,比如:
l 中文:世界你好
l 英文:Hello World
l 法文:Bonjour tout le monde
如果用编程语言,在电脑屏幕上显示"世界你好",就是这样的:
l C语言:puts("世界你好");
l Java语言:System.out.println("世界你好");
l Python语言:print("世界你好")
可以看到计算机语言拥有自己特定的规则,而且语言还有很多中,而这些语言规则就是我们今天需要为大家讲解的编程语言分类,在每一种分类中我们只需要记住最基础常用的规则,就能够利用这些编程语言和电脑沟通,让电脑按照我们的指令运行相应的策略。
二、编程语言分类
为了便于大家参考对比,挑选适合自己的量化交易编程语言,我们将最常用的六种编程语言做一个归类说明,它们分别是Python、Matlab/R、C++、Java/C#、EasyLanguage以及可视化语言(如下图)。

我们从功能范围、运行速度、可扩展性、学习难度分别为它们评分。分值在1-5之间,比如在功能范围上得了5分,就意味着功能强大,1分就意味着功能较少。(如上图)可视化语言和EasyLanguage语言简单易学,非常合新手;Python功能强大扩展能力强,适合开发比较复杂的交易策略;C++交易速度更快,更适合高频交易者。
但是对于每个编程语言的评测,主要是针对量化交易领域中的应用,并且带有个人的主观成分。也欢迎在之后的评论区拍砖,或提出你的观点讨论。接下来,我们就开始一个个地介绍这些编程语言。
1、可视化语言
可视化编程由来已久,并不是新鲜事物。这种“所见即所得”的编程思想,搭载着各种控件模块,仅仅以拖拽的方式,就可以构建代码逻辑,完成交易策略设计,过程很像搭积木一样。

如上图,同样的程序,在发明者量化交易平台可视化编程中只需要几行代码就搞定。这极大的降低了编程门槛,尤其针对那些完全不懂编程的交易者,这是非常棒的操作体验。
由于该可视化语言实现策略底层是转为C++的,所以对程序运行速度的影响不大。但是功能和可扩展性较弱,不能开发过于复杂、过于精细化的交易策略。
2、EasyLanguage

所谓的EasyLanguage语言,指的是部分商业化量化交易软件独有的编程语言。尽管这些语言也有部分面向对象特性,但在应用中主要还是采用脚本形式。在语法上面,也非常接近我们的自然语言,对于量化交易初学者来说,使用EasyLanguage作为入门是个比较好的选择。比如:发明者量化交易平台中的麦语言。
这种脚本语言在它特定的软件中做策略回测和实盘是没有问题的,但是在扩展方面,往往是有限的,比如策略开发者不能调用外部API。而且在运行速度上,这种脚本语言都是在它自己的虚拟机上运行,性能优化不如Java/C#,速度较慢。
3、Python
如下图,在Stackoverflow上,最近几年主流的编程语言访问量基本没有太大的变动,只有Python是一路呈上升趋势。Python可用于网站开发、机器学习、深度学习、数据分析等,因其灵活性和开放性已经成为了最通用的语言。量化投资领域也是如此,目前国内的量化平台,多以Python为主。

Python的基本数据结构列表和字典,功能非常强大,基本上能够满足数据表示的需求。如果需要更加快捷、功能更全面的数据结构,推荐适用NumPy和SciPy,这两个库基本上称为Python科学计算的标准库了。
对金融工程而言,更有针对性的库是Pandas,具有Series和DataFrame两个数据结构,非常适合于处理时间序列。
在速度方面,Python处于中游的位置,比C++慢一些,比EasyLanguage语言快一些,主要因为Python是一种动态语言,在纯Python语言运行时速度一般般。但是可以用Cython把部分功能静态优化,就能接近C++的速度。
作为胶水语言,在扩展性能方面,Python是当之无愧的第一名,除了可以广泛的对接其他语言外,而且扩展API的设计非常易用。就学习难度方面,Python语法简单,代码可读性高,容易入门。
4、Matlab/R
接着是Matlab和R语言,这两种语言主要定位于数据分析,语言作者在语法上为科学运算做了很多设计,其特点是天生支持量化交易运算。但是应用范围比较有限,一般多用于数据分析和策略回测。对于交易系统和策略算法开发,其易用性和稳定性较差些。
另外,它们的运行速度和扩展能力也相对较差,因为Matlab和R语言是在独有的语言虚拟机上运行。从性能上看,它们的虚拟机要比Java和C#差很多。但由于它们的语法更接近于数学表达公式,学起来也相对容易一些。
5、C++
C++是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计和设计模式等。用C++语言可以实现所有你想实现的功能,但是这么强大的语言有个最大的缺点就是学习难度非常高,比如模板、指针、内存泄露等等。
目前,C++仍然是大容量,高频率交易的首选编程语言,原因很简单,因为C++语言特点更容易接近计算机底层,是开发处理大量数据的高性能回测和执行系统的最有效工具。
5、Java/C#
Java/C#都是在虚拟机上运行的静态语言,与C++相比,没有数组越界、没有coredump、抛出的异常能精准的定位到出错代码的位置、自带垃圾自动回收机制、不用担心内存泄露等等。所以在语法的学习难度上,它们也比C++更加容易。在运行速度方面,由于它们的虚拟机都自带运行时编译的JIT功能,所以速度仅次于C++。
但是在功能方面,无法实现像C++那样,对交易系统底层进行优化。在扩展性能方面,相对于C++会弱一些,因为它们的扩展是需要经过C这个桥梁的,而这两种语言本身就是在虚拟机上运行,所以在扩展功能模块的时候,就需要多穿越一层墙才能实现。

下节预告:相信有了以上关于编程语言的介绍,你心里一定知道该怎么选择了吧,那么接下来几个章节,我们将按照编程语言的分类,有针对性的学习量化交易策略开发。
课后习题:
1、Python语言作为量化交易都有哪些优势?
2、试着用发明者的麦语言写几个常用的API?
最后给大家一个温馨小提示:在课程和直播页面,点击“订阅”按钮,就可以及时接收提醒,不错过课程和直播的精彩内容!
金十交易学院,8点准时更新

