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