近年来,Python语言凭借其在数据分析领域的优势得以快速发展,众多软件厂商也相继推出了支持Python的量化交易平台。本书是介绍Python编程及其在量化交易领域的实践技巧的图书,旨在帮助读者掌握基本的Python编程技能,并顺利应用于期货量化交易实践。
本书内容分为两篇。篇是Python基础,通过13章内容介绍了Python编程的基础知识,如语法规则、数据类型、函数、类、装饰器、异常处理、进程和线程等;第二篇是期货量化交易,通过8章内容介绍了Python在期货量化交易中的应用,并基于天勤量化交易平台讲解开发实践,涉及pandas模块、TqSdk的接口、函数、量化策略的框架、图形化编程及时间序列相关的知识等。
本书适合对期货量化交易感兴趣的普通投资者和投资机构专业人员阅读,读者可以具备一定的?Python基础,也可以通过本书从头学习Python基础知识,再进一步延伸到期货量化交易的学习。
第 一篇 Python基础
第 1章 语法基础 3
1.1 自然语言 3
1.2 计算机语言 4
1.3 安装Python 5
1.4 编辑器(IDE) 6
1.5 基本的输入/输出 6
1.6 代码注释 7
1.7 标识符 8
1.8 表达式 8
1.9 运算符 9
1.9.1 数值运算符 9
1.9.2 比较运算符 9
1.9.3 逻辑运算符 10
1.9.4 关系运算符 10
1.9.5 运算符优先级 11
1.10 Python的关键字 12
1.11 语句的执行流程 13
1.12 小结 15
第 2章 常用数据类型 16
2.1 常用内置常量 16
2.2 整型 17
2.3 浮点型 17
2.4 字符串类型 17
2.5 结构数据类型 19
2.5.1 列表 19
2.5.2 元组 19
2.5.3 字典 20
2.6 小结 21
第3章 函数式编程 22
3.1 函数的定义和调用 22
3.2 函数的参数传递 24
3.2.1 无默认值参数 24
3.2.2 有默认值参数 24
3.2.3 可变参数 25
3.2.4 以函数作为参数 28
3.3 变量的作用域 29
3.4 匿名函数lambda 31
3.5 Python常用内置函数 32
3.6 注解 32
3.7 小结 34
第4章 常用数据类型的运算 35
4.1 获取序列数据元素 35
4.1.1 索引和分片运算符 35
4.1.2 index() 36
4.2 属性引用 36
4.3 增量运算符 36
4.4 字符串的运算 37
4.4.1 获取字符串中的元素 37
4.4.2 级联和重复 38
4.4.3 字符串的常用方法 38
4.4.4 格式化字符串 41
4.4.5 正则表达式 44
4.5 列表的运算 45
4.5.1 获取列表的元素 45
4.5.2 级联和重复 45
4.5.3 列表常用的方法 46
4.5.4 列表的推导(内涵) 48
4.6 元组的运算 50
4.7 字典的运算 50
4.7.1 以“键”取“值” 50
4.7.2 字典常用的方法 51
4.8 nan值 54
4.9 小结 55
第5章 循环 56
5.1 可迭代对象 56
5.2 迭代器 57
5.3 生成器 59
5.4 协程 63
5.5 其他迭代函数 69
5.5.1 map() 69
5.5.2 zip() 70
5.5.3 enumerate() 71
5.6 小结 72
第6章 面向对象编程 73
6.1 类的特性 73
6.2 类的定义 75
6.3 类的一般定义 76
6.3.1 属性和__init__() 76
6.3.2 方法 77
6.3.3 实例化类 77
6.3.4 特殊属性和特殊方法 80
6.4 类的继承 81
6.5 MRO列表 85
6.6 可变映射类型 85
6.7 小结 88
第7章 装饰器和functools 89
7.1 函数的闭包 89
7.2 装饰器函数 90
7.3 装饰器类 94
7.4 内置装饰器类 96
7.5 functools.partial() 96
7.6 小结 97
第8章 错误和异常处理 99
8.1 try语句 99
8.2 raise语句 104
8.3 自定义异常类 105
8.4 小结 105
第9章 模块、包和文件 107
9.1 模块 107
9.1.1 赋值 109
9.1.2 浅拷贝 110
9.1.3 深拷贝 112
9.2 包 112
9.3 安装第三方模块库 113
9.4 文件处理 113
9.4.1 open() 113
9.4.2 mode的主要值及含义 114
9.4.3 操作标记 116
9.4.4 其他常用的文件方法 116
9.4.5 创建文件 117
9.5 json文件 118
9.6 小结 119
第 10章 时间日期处理 121
10.1 time模块 121
10.2 datetime模块 125
10.2.1 date类 125
10.2.2 time类 127
10.2.3 datetime类 127
10.2.4 timedelta类 130
10.3 小结 131
第 11章 多进程multiprocess模块 132
11.1 Process类 133
11.2 Lock类 137
11.3 Event类 139
11.4 Queue类 142
11.5 Pipe类 145
11.6 Pool类 148
11.7 获取进程的返回值 151
11.8 Manager类 152
11.9 小结 153
第 12章 多线程threading模块 155
12.1 Thread类 155
12.2 Lock类 160
12.3 Rlock类 161
12.4 BoundedSemaphore类 162
12.5 Condition类 163
12.6 Event类 165
12.7 queue模块 166
12.8 concurrent.futures模块 169
12.9 小结 172
第 13章 asyncio模块库 173
13.1 asyncio异步协程的定义 173
13.1.1 原生协程 173
13.1.2 asyncio异步协程 177
13.2 创建和设置事件循环 179
13.3 运行和停止循环 180
13.4 创建Future和Task 182
13.4.1 创建Future 182
13.4.2 Task对象的方法 183
13.5 并发执行的方法 184
13.6 队列集 190
13.7 async for 192
13.8 小结 194
第二篇 期货量化交易
第 14章 天勤量化(TqSdk) 197
14.1 简介 197
14.1.1 系统架构 197
14.1.2 功能要点 198
14.1.3 安装和升级TqSdk 199
14.1.4 数据流 200
14.1.5 注册信易账户 200
14.2 TqSdk的接口 201
14.2.1 品种和交易所代码 201
14.2.2 不错委托指令 202
14.2.3 TqApi 203
14.3 小结 218
第 15章 pandas模块 219
15.1 一维数据结构Series 219
15.2 二维数据结构DataFrame 221
15.3 文件读写 237
15.4 小结 237
第 16章 TqSdk的使用 238
16.1 获取盘口行情 238
16.2 获取K线数据 239
16.3 获取tick数据 241
16.4 下单和撤单 241
16.5 获取委托单信息 243
16.6 获取成交单信息 244
16.7 获取持仓信息 246
16.8 获取账户资金信息 247
16.9 筛选合约 247
16.10 生成图形化界面 249
16.10.1 在主图中画指标线 249
16.10.2 在副图中画指标线 250
16.10.3 在主图中画文字标注 251
16.10.4 在主图中画特殊符和
线段 252
16.10.5 在副图中画K线 254
16.10.6 在副图中画价差K线 254
16.11 复盘 256
16.12 回测 256
16.13 多账户 257
16.14 使用目标持仓TargetPosTask 258
16.15 异步任务 260
16.15.1 使用协程任务 260
16.15.2 使用多线程 261
16.15.3 使用多进程 262
16.16 小结 263
第 17章 TqSdk部分函数解读 264
17.1 DIFF协议 264
17.1.1 数据传输 264
17.1.2 数据访问 266
17.2 业务函数 267
17.3 insert_order() 269
17.4 create_task() 270
17.5 TqChan 271
17.6 register_update_notify() 273
17.7 wait_update() 275
17.8 目标持仓工具TargetPosTask 279
17.9 小结 281
第 18章 量化策略框架 282
18.1 分时行情突破策略 282
18.2 双均线策略 283
18.3 定时清仓 284
18.4 套利下单 284
18.5 开平仓函数 286
18.6 追踪止损+分批止盈 292
18.7 无人值守定时任务 295
18.8 期货、期权无风险套利 297
18.9 多线程和异步协程框架 299
18.10 本地保存成交记录 302
18.10.1 保存为json文件 302
18.10.2 保存为CSV文件 303
18.11 小结 304
第 19章 用GUI库开发界面程序 305
19.1 QApplication类 305
19.2 部件QWidget 306
19.2.1 常用部件 306
19.2.2 常用布局 307
19.3 信号-槽 307
19.4 登录窗口 307
19.5 下单板 310
19.6 信号线程 312
19.7 一个简单的半自动化下单
软件 313
19.8 打包成.exe格式的可执行
文件 329
19.9 小结 329
第 20章 技术指标绘图 330
20.1 PyQtGraph简介 330
20.2 技术指标绘制 334
20.2.1 K线和成交量绘制类 334
20.2.2 技术指标计算类 338
20.2.3 x轴时间显示 340
20.2.4 指标窗口类 341
20.2.5 图形显示 347
20.3 小结 351
第 21章 定量分析 352
21.1 技术分析的内核:相关性检验 352
21.1.1 方差和标准差 353
21.1.2 协方差和相关系数 353
21.1.3 自协方差、自相关系数和
偏自相关系数 354
21.1.4 平稳过程 355
21.2 价格序列相关性检验 355
21.2.1 多品种的相关性检验 356
21.2.2 单品种的自相关检验 357
21.3 小结 362
祝学礼,拥有多年期货分析经验,熟悉各类技术分析理论,擅长用 Python 实现各类交易策略,并用Python开发交易软件。