Python量化交易从入门到实战pdf下载pdf下载

Python量化交易从入门到实战百度网盘pdf下载

作者:
简介:本篇主要提供Python量化交易从入门到实战pdf下载
出版社:清华大学出版社
出版时间:2021-02
pdf下载价格:9.00¥


预览


内容介绍

内容简介

本书共分为四个部分。第一部分是Python语言基础,主要介绍Python的基础编程、数据结构、结构化编程、函数以及模块和包等内容,掌握这一部分可以算是Python基本入门。第二部分是Python编程进阶,包括面向对象的编程、面向数据的分析与可视化以及数据持久化等内容,掌握了这一部分可以进行Python的专业编程实践。第三部分是使用PyQt进行界面开发。PyQt是一种常用而强大的图形用户界面(GUI)设计工具,使用它可以设计出美观、易用的用户界面。掌握这一部分,可以在大型项目团队中完成比较核心的工作。第四部分是vn.py量化交易平台,为读者提供高水平实践机会,在巩固专业程序员水平的同时,也在一个Python的重要应用领域中进行深入的探索。

作者简介

张少娴,1993年毕业于原南京邮电学院计算机系计算机通信专业,获工学学士学位。2003年于南京邮电大学获计算机应用技术专业硕士学位。参加了国家自然科学基金面上项目、973项目、江苏省教育厅高校自然科学研究计划课题共5项,已在国内外学术期刊和会议上以第一作者和通讯作者发表论文10余篇,出版《Web应用开发技术与案例教程》、《数据库原理》等教材。

目录

目录



第一部分Python语言基础

第1章准备工作/31.1为何选择Python/3

1.1.1非专业软件开发人员/3

1.1.2专业软件开发人员/3

1.2下载安装/4

1.3测试安装是否成功/6

1.3.1使用Python解释器/6

1.3.2使用IDLE/7

第2章初识Python编程/8

2.1Python简单编程/8

2.1.1简单计算/9

2.1.2使用变量/10

2.1.3print()函数/11

2.2特殊数据类型/12

2.2.1其他数值类型/12

2.2.2布尔(bool)类型/14

2.2.3空值(None)/14

2.3字符串/15

2.3.1字符串定义/15

2.3.2字符串的一般操作/16

2.3.3字符串的索引和切片/17

2.3.4字符串的修改/19

2.3.5键盘输入/20

2.3.6将值转换为字符串/21

2.3.7字符串的方法/21

2.3.8格式化输出/24

2.4习题/26

第3章数据结构/28

3.1列表/28

3.1.1列表的索引和切片/28

3.1.2列表的修改/29

3.1.3列表排序/32

3.1.4堆栈和队列/33

3.2元组/34

3.3字典/36

3.4集合/38

3.5Python集成开发环境/40

3.5.1集成开发环境介绍/40

3.5.2PyCharm的安装与使用/41

3.6习题/44

第4章结构化编程/47

4.1条件表达式/47

4.1.1比较运算符/48

4.1.2比较序列和其他类型/50

4.1.3逻辑运算符/50

4.2if语句/52

4.3while语句/56

4.4for语句/57

4.4.1循环处理序列中的元素/57

4.4.2range()函数/58

4.4.3序列上的循环技巧/60

4.5循环控制/62

4.5.1循环中的else子句/62

4.5.2break语句/62

4.5.3continue语句/63

4.6习题/64

第5章函数/68

5.1定义函数/68

5.2返回值/69

5.2.1return语句/70

5.2.2多分支return/70

5.2.3返回值类型/70

5.3参数的传递方式/72

5.4参数类型/73

5.4.1位置参数/73

5.4.2默认值参数/74

5.4.3关键字参数/75

5.4.4元组参数的封装与拆封/76

5.4.5字典参数的封装与拆封/78

5.5变量的作用域/79

5.5.1局部变量/79

5.5.2全局变量/80

5.5.3nonlocal/82

5.6与函数有关的其他内容/83

5.6.1pass语句/83

5.6.2文档字符串/83

5.6.3函数注解/84

5.6.4编码风格/85

5.7错误和异常/85

5.7.1语法错误/86

5.7.2异常/86

5.7.3异常处理/87

5.7.4定义清理行为/89

5.8习题/91

第6章模块和包/92

6.1模块/92

6.1.1导入模块/93

6.1.2执行模块/94

6.1.3模块的搜索路径/95

6.1.4编译的Python文件/96

6.2包/96

6.2.1包的概念/96

6.2.2包的一般导入/97

6.2.3包的导入/98

6.2.4包内引用/99

6.3标准库/99

6.3.1系统模块/100

6.3.2操作系统功能/100

6.3.3数学运算/101

6.3.4日期和时间/102

6.3.5多线程/105

6.4第三方包/109

6.5使用Anaconda/112

6.5.1Python基础环境的问题/112

6.5.2Anaconda的下载安装/112

6.5.3管理虚拟环境/114

6.6习题/116

第二部分Python编程进阶

第7章面向对象编程/1197.1创建和使用类/119

7.1.1类的创建/120

7.1.2创建并使用实例/121

7.1.3属性的默认值/122

7.2私有属性和私有方法/123

7.3类属性和类方法/124

7.3.1类属性/124

7.3.2析构函数/125

7.3.3类方法/127

7.3.4静态方法/127

7.4属性再研究/129

7.4.1属性的增加与删除/129

7.4.2@property装饰器/130

7.5继承/131

7.5.1简单的继承/131

7.5.2重写父类的方法/132

7.5.3重写_ _init_ _方法/132

7.5.4为子类增加新的属性和方法/133

7.5.5多重继承/134

7.5.6抽象类和抽象方法/135

7.6导入类/136

7.6.1导入单个类/137

7.6.2在模块中存储多个类/137

7.6.3组织项目代码/138

7.7习题/138

第8章数据分析与可视化/140

8.1数据分析概述/140

8.2NumPy/141

8.2.1创建NumPy数组/142

8.2.2NumPy特殊数组/142

8.2.3NumPy序列数组/143

8.2.4NumPy数组索引/144

8.2.5NumPy数组运算/144

8.2.6NumPy数组复制/145

8.2.7NumPy矩阵/145

8.3Pandas/146

8.3.1一维数组Series/146

8.3.2二维数组DataFrame/147

8.4数据可视化概述/157

8.5matplotlib/158

8.5.1绘制简单的折线图/158

8.5.2修改标签文字和线条粗细/159

8.5.3校正图表/160

8.6习题/162

第9章数据持久化/164

9.1一般文件操作/164

9.1.1文件的概念/165

9.1.2文件的打开与关闭/165

9.1.3从文件读/167

9.1.4写文件/169

9.1.5文件指针/169

9.1.6预定义清理行为/171

9.2CSV文件/171

9.2.1DataFrame与CSV/171

9.2.2读CSV文件/173

9.2.3写CSV文件/173

9.3JSON文件/174

9.4SQL数据库操作/177

9.4.1SQLite介绍/177

9.4.2操作SQLite数据库/178

9.5peewee/181

9.6习题/186

第三部分使用PyQt进行界面开发

第10章PyQt基础/19110.1PyQt介绍/191

10.1.1PyQt5/191

10.1.2其他Python图形界面包/192

10.2安装PyQt5/193

第11章PyQt5界面编程/194

11.1PyQt5基本功能/194

11.1.1最简单的PyQt5程序/194

11.1.2PyQt5的坐标体系/195

11.1.3关闭窗口/197

11.1.4自己解决问题/199

11.2布局管理/200

11.2.1绝对定位/200

11.2.2盒布局BoxLayout/201

11.2.3网格布局 QGridLayout/203

11.3菜单栏、工具栏和状态栏/204

11.3.1状态栏/204

11.3.2菜单栏/205

11.3.3子菜单/207

11.3.4勾选菜单/208

11.3.5右键菜单/209

11.3.6工具栏/210

11.4事件处理/211

11.4.1信号与槽介绍/211

11.4.2信号与槽的简单示例/212

11.4.3事件发送者/213

11.4.4内置信号与内置槽/213

11.4.5自定义信号/216

11.4.6事件对象/218

11.5标准对话框/219

11.5.1输入对话框/220

11.5.2文件对话框/221

11.5.3颜色对话框/224

11.5.4字体对话框/226

11.6习题/228

第12章PyQt5控件/229

12.1按钮QPushButton/230

12.2复选框QCheckBox/231

12.3列表框QListWidget/233

12.4行编辑QLineEdit/235

12.5下拉式列表框 QComboBox/236

12.6日历控件 QCalendarWidget/238

12.7定时器与进度条QProgressBar/240

12.7.1QTimer和QBasicTimer定时器/240

12.7.2进度条QProgressBar/241

12.8树状列表QTreeWidget/242

12.9表格QTableWidget/246

12.10分割器QSplitter/248

12.11习题/250

第13章Qt Designer的使用/251

13.1本章教学目标/252

13.2Qt Designer基础/254

13.2.1安装PyQt5tools/254

13.2.2配置PyCharm开发环境/254

13.2.3Qt Designer初步接触/256

13.2.4Qt Designer的编程机制/258

13.3控件及属性/261

13.3.1Qt Designer的界面布局/261

13.3.2修改控件的属性/262

13.4Qt Designer中的信号与槽/263

13.4.1直接连接信号与槽/263

13.4.2手工编程法实现信号与槽的连接/265

13.5菜单/266

13.6工作区设计/267

13.6.1创建主Tab Widget/267

13.6.2设计股票列表界面/268

13.7打开子窗口/269

13.8习题/271

第14章PyQt5绘图/272

14.1图片显示/272

14.2基本绘图类/274

14.3图形视图架构/275

14.4PyQtGraph基础/281

14.4.1PyQtGraph介绍/282

14.4.2PyQtGraph的安装与测试/282

14.5PyQtGraph折线图/284

14.6PyQtGraph自定义绘图/288

14.6.1K线图绘制类/288

14.6.2K线图表类/290

14.6.3嵌入到普吸金/294

14.6.4增加十字线显示/295

14.7习题/297

第四部分vn.py量化交易平台

第15章vn.py的使用/30115.1量化交易基础/301

15.1.1量化交易概念/301

15.1.2量化交易平台分类/302

15.1.3宽客/304

15.2vn.py的安装与运行/304

15.2.1源码下载与安装/304

15.2.2vn.py的启动/305

15.3VN Trader/306

15.4CTA回测/309

15.5CTA策略/311

第16章VN Trader分析/314

16.1程序主函数/314

16.2主引擎/315

16.2.1vn.py体系结构/316

16.2.2初始化函数/316

16.2.3初始化功能引擎/318

16.2.4增加功能引擎/318

16.2.5增加底层接口/318

16.2.6增加上层应用/319

16.3主界面/319

16.3.1创建应用程序/320

16.3.2主窗口的初始化/320

16.4窗口组件/321

16.4.1单元格类/321

16.4.2监控组件类/323

16.4.3初始化悬浮窗口/325

16.5菜单/326

16.5.1底层接口加入菜单/327

16.5.2上层应用加入菜单/328

16.6习题/331

第17章数据库操作/332

17.1vn.py支持的数据库/332

17.2数据库管理器/333

17.2.1数据库管理器基类/334

17.2.2SQL数据库管理器/334

17.2.3peewee模板类/335

17.2.4数据库管理器的初始化/336

17.3数据管理/338

17.3.1数据管理应用类/339

17.3.2数据管理窗体类/339

17.3.3下载数据/340

17.3.4导入数据/340

17.4使用数据/341

17.5习题/344

第18章CTA回测/345

18.1事件引擎/345

18.1.1事件引擎的作用/345

18.1.2事件引擎类/346

18.2回测线程/350

18.2.1类结构/350

18.2.2执行流程/351

18.2.3存在问题/352

18.3回测执行/352

18.3.1“开始回测”按钮的槽函数/352

18.3.2回测操作/354

18.3.3回测结束事件处理/355

18.4习题/357

参考文献/358


查看全部↓

前言/序言

前  言



作为vn.py的作者,非常高兴能够看到本书的出版。最近十年,量化研究、大数据分析、机器学习等前沿技术越来越多地在金融和投资行业中得到实践应用,而要使用这类技术不可避免地都要先具备编程能力,就像学习代数要先掌握加减乘除。

我本人是量化交易员出身,早年刚开始工作的时候主要使用一些商业量化软件平台。尽管能基本满足工作需求,但也时常苦恼于某个想要研究的复杂策略无法回测,或者某个想要使用的执行算法无法实现。好在后来接触到了Python这一功能强大又易学易用的编程语言,在工作中也慢慢摸索掌握了交易API对接、UI界面开发、事件驱动算法等和量化交易相关的Python应用技术。后来秉承Python社区“鼓励分享,回馈社区”的开源精神,逐渐把自己积累的项目代码开源分享出来(主要在Github)上,也就是现在的vn.py项目。

尽管量化交易在中国已经有了快10年的历史,但目前整个金融市场对量化交易方面的需求依旧在飞速增长: 期权期货的做市商业务、银行间市场开放API接口、股票引入单次T+0制度等,都是目前全新的量化交易技术应用领域。

对于想要开始入门尝试学习Python量化交易的读者来说,学习本书是一个非常好的起点。从Python的语言基础开始,一步步掌握量化相关模块的使用方法,再到PyQt的图形界面开发,最后详细讲解vn.py的项目架构和使用方法。

最后,对于所有围绕编程语言的学习,我有一个建议,就是不要偷懒,把所有代码都手敲一遍(不要复制、粘贴),自己运行一遍,能够帮助您更快地掌握编程语言的知识体系。


陈晓优(vn.py作者,网名: 用Python的交易员)2020年12月Python是一门简单易学且功能强大的编程语言。它拥有高效的数据结构,能够用简单而高效的方式进行面向对象编程。Python优雅的语法和动态类型,再结合它的解释性,使其在大多数平台的许多领域成为编写脚本或开发应用程序的理想语言。使用Python很容易实现常用的金融算法和数学计算,使其在大数据的挖掘和处理、量化金融以及财务数据分析等领域有着得天独厚的优势。

Python广受欢迎的一个重要原因是它的易学性,但再易学的编程语言也要方法适当才能达到事半功倍的效果。学习曲线是一条表示“在一定时间内获得技能或知识”的曲线,又称练习曲线(practice curves),反映了学习进程中努力与学习效果的关系。按照不同的学习方法,会得到不同的学习曲线。学习曲线可能很复杂,可能多种多样,抽象后最有代表性的有3种,如图1中的曲线(a)、(b)和(c)所示。

图1学习曲线

学习曲线(a)是所谓的“一步一个脚印”,很多人认为学习就应该是这样,其实不然。很多情况下,学习曲线是偏(b)或偏(c)的形式。(b)表示初期见效慢,而一旦过了瓶颈期,就会厚积薄发,努力终究会有回报。(c)表示初期见效快,快速掌握编程技巧,并尽快用它解决实际问题,后期的学习可以边实践边进行。(b)和(c)只是方法不同,可以根据学习目标选择。按照本书的内容学习,可以达到曲线(c)的学习效果。顺便说一下,这3个图都是用Python的matplotlib包绘制的。

如果您是计算机专业人士,已经有多种编程语言的学习经历,您会发现本书非常符合学习习惯。如果您还是计算机专业的在校学生,本书在帮助您快速打下Python编程基础之后,用一个大型项目,让您直接升级为编程高手,在有限的课时中达到最大的学习效果。

如果您是非专业软件开发人员,学习编程是为了辅助本领域的研究工作,不需要达到顶级专业软件开发人员的水平。本书可以帮助您用最短的时间,取得最接近于顶级的效果。您不再需要学习软件开发的专业课程,甚至连Python本身都不需要全部学习,只需要学习与自己任务相关的部分,就可以完成绝大多数编程任务,如曲线(c)所示,期望用专业软件开发人员1/5甚至1/10的时间,达到60%到80%的效果。如果您是经济领域的专业人士,本书涉及的数据分析方面的知识,已经足够您应付工作中主要的数据分析工作,还能让您的程序带有漂亮的界面。如果您是金融领域的专业人士,或者您只是量化交易爱好者,使用本书,在学习Python编程的同时,还能接触到先进的量化交易技术。如果您还是经济或金融专业的学生,掌握本书内容对您今后就业会有极大帮助。

足球队的教练通常都有球员经历而不是仅仅当过足球评论员。本书作者在多种平台,使用多种编程语言,有长期从事编程工作的经验,愿意将此书作为团队知识的凝练与升华。

本书选用vn.py作为教学实践平台。vn.py是著名国产开源软件,在金融量化投资领域占据重要地位,大量从事金融和经济领域专业应用开发的读者,对此系统会感到亲切并有直接帮助。按照vn.py官网的介绍: “vn.py是一套基于Python的开源量化交易系统开发框架,全功能量化交易平台,整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,用于快速构建交易员所需的量化交易应用。”vn.py的编程水平很高,软件规模也是专业级的。作者对其进行深入分析,并有多方面优化的经验。本书不希望用一个专业程序员看起来很不像样的示例系统作为“大型项目”,vn.py符合专业化、高水平的要求。

本书内容一脉相承。第一部分以最浅显的方法介绍Python语言基础,即使是没有任何编程基础的读者都可以轻松掌握,本书完全可以作为Python编程的入门书籍使用。但本书的目的决不仅仅是入门,从第二部分开始是Python编程进阶,带领读者循序渐进地进入Python的专业编程实践。第三部分介绍PyQt界面开发,第四部分介绍vn.py量化交易平台,第四部分与前三部分是有机结合而不是割裂的。例如Python的数据分析和可视化工具有很多种,本书选择的NumPy、Pandas、matplotlib和PyQtGraph本身就是其中最常用的,也都在vn.py中确实得到了应用。虽然本书第四部分只是vn.py代码分析的基础,但vn.py编程涉及的所有技术,在前三部分都有介绍。从另一方面来说,有些读者,特别是编程的初学者,在学习新知识时,往往会困惑所学的知识是否有用。通过第四部分的验证,读者可以看到,本书的每个知识点,在实际编程中都是非常有用的。从编程初学者到专业程序员是一个成长的过程,第四部分的另一个作用是总结教学代码与实际系统的差别,培养真正程序员的编程习惯,而不是让读者自行摸索,帮助读者顺利完成这个成长与蜕变。

本书包含了大量真正的编程技巧,有vn.py这样的大型专业量化交易系统做支撑,Python量化交易的登堂入室,有此一本书足矣。但一本书毕竟篇幅有限,只能选择最通用的技术。为了兑现“有此一本书足矣”的承诺,把一些很通用、很重要的内容放到附配资源中,让读者花一本比较薄的书的钱,买到一本非常“厚”的书。本书的附配资源包含以下内容:

●附加的教学内容,会随着本书的使用以及技术的发展不断扩充和更新。

●本书的所有源代码。

●教学课件和部分习题的参考答案。

●vn.py代码更全面、深入的分析,vn.py行情接口的扩充,vn.py行情显示的扩充等,内容超过300页。

●版本与本书内容相匹配,包含了部分注释的vn.py源代码。

全部附配资源可以与清华大学出版社联系获取,仅与学习有关的资源也可以加入QQ群881645236下载。

在编写过程中,南京邮电大学的李玲娟教授、陈志教授仔细阅读了本书,提出了不少建设性的意见与建议;南京审计大学金审学院的刘力军等老师对本书的编写提出过很好的建议;感谢南京毕鹞信息科技有限公司的高屹老师跟我们一起深入分析vn.py量化交易平台的代码;感谢南京审计大学金审学院和南京邮电大学计算机学院对本书的大力支持!


张少娴2020年12月于南京


查看全部↓