您的位置: 零点财经>股票问答>量化投资常见问题解答> 搞金融的同学三小时快速入门python「从零入门量化交易系列」

搞金融的同学三小时快速入门python「从零入门量化交易系列」

2018-06-12 21:49:41  来源:量化投资常见问题解答  本篇文章有字,看完大约需要27分钟的时间

搞金融的同学三小时快速入门python「从零入门量化交易系列」

时间:2018-06-12 21:49:41  来源:量化投资常见问题解答

学会这个方法,抓10倍大牛股的概率提升10倍>>

三小时快速入门pytho

【本文比较长,有4000多字和大量配图,并且需要实际操作,建议在电脑端打开】

前面,我们讲了为什么要做量化交易什么是量化交易,以及量化交易的解决方案。作为一个屌丝,这里我们选择开源(Bu Yao QIan)的解决方案:VN.PY来开始我们的量化交易旅程。然而要想使用VN.PY你得懂一点Python,不用太多,一点就好。

在之前和很多搞金融的同学交流的时候,很多人都是因为觉得要花上几个月学编程,所以打消了对量化的兴趣。

其实是姿势不对,我们不是必须把编程学的很溜才能搞量化,我们只要“会一点点”就可以了,这才是快速入门量化的正确方法。

所以,今天给大家带来一个3小时快速入门Python的教程

在这里声明,这篇文章目的是为了让没有编程经验的同学,能够快速入门,所以内容是最小知识集(真的不用懂太多)。按照本文边看边做,3个小时内肯定能够学会Python的基础编程。

有Coding基础的同学,本文可以略过。请出门右转到京东购买《Python金融大数据分析》,学习进阶内容。

一、Python是什么?

Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合网页编程的JavaScript语言等等,Python就是其中一种。

Python的优势,一是容易上手,二是完成同一个工作,编写的代码量小。比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行

废话不多说,我们进入学习环节。

二、Python和Anaconda的安装和使用

要学习Python,你得先安装Python和对应的编辑器。这里有人已经帮我们做好了打包的软件,anaconda。只要装上这个,Python和对应的编辑器就都有了,还附带了很多进行科学计算的package,可谓是金融分析利器。

如果从国外官网下载会比较慢,这里推荐到清华镜像地址下载,你可以百度“anaconda 清华镜像”找到下载地址,或者在公众号后台回复“清华镜像”获得下载地址。

这里以Windows为例。为了便于后面安装VN.PY,我们下载4.0的32位版本,如下图:

Python和Anaconda的安装和使用

安装完毕后,点击开始菜单在Anaconda里面找到,Jupyter NoteBook,点击打开后就能开始Python编程了。

我们可以进入桌面文件夹,建立自己的第一个Notebook文件,这样比较好找一点。

建立NoteBook

建立NoteBook后,就能看到我们的编程界面了:

编程界面

到这里我们的工具就准备好了。

三、编程语言要学习的内容

一种编程语言的学习,入门的基本包括几个方面:

1、基本的类型,拿汽车来打比方,你可以理解为构成汽车的各个部件

2、各种容器,可以理解为能装很多东西的部件,就像汽车的后备箱

3、控制逻辑,可以理解为汽车的方向盘,用来控制程序的运行

4、函数,可以理解为把一连串经常要用的指令进行组合,这样我们不需要每次都重新写,只需要调用一个函数就可以了。

5、面向对象,可以理解为函数已经满足不了需求,通过对象可以把更多东西组合在一起,方便我们调用和他人理解。

四、Python的基本类型

Python的基本类型其实不多,也就是整数(int)、浮点数(float)、布尔值(bool)、字符串(str)这几种。Python是一种强类型语言,所以我们要注意对象的类型,可以使用type()函数来显示对象的类型。使用Jupyter NoteBook进行编程,显示如下:

Python的基本类型

基本类型是我们在Python中用来表述数据最小的颗粒度.

五、Python的容器

容器是用来记录数据的,Python中的常用容器有列表、集合、元组、字典。

1.列表

列表(list)是一种有序的容器,可以对元素进行增、删、改操作,例如:

Python的容器

2.集合

集合(set)是一种无序的而且元素不重复的容器。对上面的列表用set()做一个转化,会发现,之前重复的Lily没有了。

集合

3.元组

元组(tuple)和list非常类似,但是tuple一旦初始化就不能修改。因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

元组

4.字典

字典(dict)在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

字典

大家可能对这些容器没有什么概念,但当你要存一个股票的N天收盘价时,你就会用到列表;当你要存股票名字和代码的对应关系的时候,你就会用到字典。容器就是我们用来装金融数据的篮子。

六、Python的控制逻辑

Python是通过缩进排版来组织代码逻辑的,通过Tab键或者空格代表缩进。

有相同所及的代码属于同一代码块,如果使用if、while、for、def或者class等关键字开始的代码行,要以冒号结束,并且其后所有代码缩进相同的量,直到这个代码片段结束。

1.条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。

比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:如果if判断是true ,则执行if下缩进的语句;如果if判断是False,就不执行if的内容,而去else下缩进的语句;此外可以用elif来加入多类别判断:

Python的控制逻辑

2.与、或、非

在Python中 逻辑运算符与、或、非是用and、or和not来代表的,这一点比较接近英文

与、或、非

3.for循环

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。for循环是我们编程常用的控制形式,他的流程如下图:

for循环

代码实例:

代码实例

4.while循环

While循环是很重要的特别是很多回测框架,底层一定是有一个while循环来不断拿数据,然后送到回测代码中进行回测。

while循环是当条件为真时,就不断执行,直到条件为假为止,中间可以用 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环;

while循环

5.列表推导式

在我们看别人的量化代码时,有时候作者为了一些难以名状的目的,会使用列表推导式来写代码,把几行代码集合成一行,这会让很多新手摸不着头脑。在这里给大家举例讲解:

列表推导式

看到这样的代码,大家不要慌,认证的看几遍,一般都能看懂的。就是把循环、判断和赋值写在了一行里面。

七、函数

函数是我们为了避免编写重复代码,而采用的一种把某个代码片段复用的方式。

1 内置函数

Python为我们提供了很多的内置函数,比较常用的是求数组中的最大、最小值:

内置函数

2 自定义函数

对于系统中没有提供的功能,我们自己自定义函数来实现:

自定义函数

3 lambda函数

针对一些比较简单的函数,没必要完整定义一个函数,这个时候我们可以用Lambda匿名函数直接定义,更加简洁:

八、面相对象

面向对象编程(Object Orient Programming,OOP),是把某些特征抽象出来,形成一个类。每个类一般包含的是:属性和操作属性的方法(或者叫函数)。thoPython中的类定义方式与其他语言差别不大,最大的特点是每个类方法的第一个参数都是以self开始,后面是其他参数。

Python中并没有访问控制,没有类似Java,C++中privatepublic的关键字来表明方法的类别,而是通过特定的属性和方法命名规则来达到这个效果。protect、private系统保留定义的规则如下:

1.任何以单下划线开头的名字都代表protect,比如self._5minBar、self._marketPoint;

2.任何以双下划线开头的名字都代表private,比如self.__init

3.任何以双下划线开头和结尾的名字,都代表系统保留,比如:__len__();

3.继承和多态

封装、继承和多态是面对象编程的三大特点。

怎么理解封装、继承和多态呢?

1)以买房为例,开发商们把各种配置、面积等特征浓缩成一个叫做“三室两厅”的通用类。这个过程就叫封装

2)某个开发商在“三室两厅”的基础上,增加了“南北通透”这个特征,产生了“南北通透三室两厅”这个类。这个过程就叫继承

3)当我们定义了多种“三室两厅”的子类,比如“临江大户型三室两厅”,“地铁上盖实用三室两厅”。当我们要做一个“看电视”的方法时,我们在“三室两厅”这个基础类别中定义好,然后在各种子类中进行实现。

多态在这个时候就会体现出它的好处,当我们确认它是“三室两厅”类型,我们不用管它具体哪一种“三室两厅”,我们都可以通过“看电视”这个方法来进行调用。而系统会识别这个房子具体是哪种“三室两厅”,然后调用自类中实现的方法。这就是多态的好处,调用放只管调用,不用管细节

九、如何进行简单的程序调试

写完一段代码后,我们都需要对代码进行检查和调试,而调试的方法,最简单的分为两种,print和打断点。

1.print

当我们希望对某段代码进行检查时,我们可以把中间关键变量的值用print方法打印出来,比如说,在作CTA交易时我们会把交易的时间、头寸规模、标的都打印出来,进行检查。上面,在类的方法中,加入print语句,就是最简单的调试方法。

2.打断点

当我们碰到一些比较复杂的问题时,调试会非常棘手,用print已经很难完成,这个时候就需要用刀IDE的断点调试功能。让程序以单步的方式运行,检查可能存在问题的变量是否是正常数值,从而发现问题。目前对断点调试支持最好的室pycharm这个IDE。

1)我们需要在想检查的地方打上断点,然后点击Debug按钮

2)程序运行到我们打断点的地方会停住

3)我们可以查看在这个状态下各个变量的值是否正确

看在这个状态下各个变量的值是否正确

你能看到这里,说明是真的希望成为一名宽客。而且相信你对Python已经有了一定的认识。如果是没有经验的同学,一定要对照文章的代码,自己敲一遍,也花不了几十分钟,但这能让你能更有底气的说:“我会Python”(你已经有了一百行的代码量^_^)。本文就到这里,下篇开始正式进入量化交易系统部分,敬请期待。

阅读了该文章的用户还阅读了

热门关键词

相关阅读

为您推荐

移动平均线
股票知识
MACD
老丁说股
热点题材
KDJ指标
读懂上市公司
成交量
股票技术指标
股票大盘
分时图
股市名家
概念股
缠中说禅
强势股
波段操作
股票盘口
短线炒股
股票趋势
涨停板
股票投资
长线炒股
股票问答
股票术语
财务分析
炒股软件
上证早知道
经济学术语
期货
股票黑马
股票震荡市场
理财
炒股知识
散户炒股
外汇
炒股战术
港股
基金
黄金






















































































































































































































































































































































































































































































































































































































































相关栏目推荐

栏目导航

友情链接

网站首页
股票问答
股票术语
网站地图

copyright 2016-2024 零点财经保留所有权 免责声明:网站部分内容转载至网络,如有侵权请告知删除 友链,商务链接,投稿,广告请联系qq:253161086

零点财经保留所有权

免责声明:网站部分内容转载至网络,如有侵权请告知删除