《Python量化炒期货入门与实战技巧》是一本2020年出版的图书,由中国铁道出版社出版。本书首先讲解了Python量化炒股快速入门,即量化炒股的定义、特点、优势、不足和主要内容,Python语言的开发环境,以及量化炒股的注意事项。其次讲解量化炒股开发语言Python,即讲解Python语言的基本语法、选择结构、循环结构、常用数据结构、函数及应用和面向对象程序设计。接着讲解量化炒股中的3个常用包,即Numpy、Pandas和Matplotlib包。然后讲解如何利用Python编写量化炒股策略、量化炒股的获取数据函数、财务因子量化选股、数据信息获取、量化择时的技术指标函数、量化炒股的统计数据图、量化炒股策略的回测、量化炒股策略的因子分析。最后讲解Python量化炒股策略实战案例。
本书首先讲解快速入门Python量化炒期货;然后讲解量化炒期货开发语言Python;接着讲解量化炒期货中的三个常用包,即Numpy、Pandas和Matplotlib包;再讲解如何利用Python编写量化炒期货策略、获取数据函数、获取统计数据函数等;*后讲解Python量化炒期货策略实战案例。 本书在讲解过程中既考虑读者的学习习惯,又通过具体实例讲解Python量化炒期货实际交易过程中的热点问题、关键问题及各种难题。 本书适用于各种不同的投资者,如期民、中小散户、职业操盘手和专业金融评论人士,更适用于那些有志于在这个充满风险、充满寂寞的征程上默默前行的征战者和屡败屡战、愈挫愈奋并*终战胜失败、战胜自我的勇者。
王征 多年行业投资经验,具备期货投资分析师,券投资分析师,注册国家投资分析师等资格,曾就职于某大型券商担任行业研究员。可为个人投资者及机构提供分析、投资咨询,交易指导,理财培训等多方位的专业服务。擅长综合分析,动态决策,定点出击。
任职期间多次在和讯、中国黄金网、青岛新闻网业内专业媒体发表股票、大宗商品的市场研究报告。 半岛都市报《今理财》、青岛早报《财经》股票、大宗商品投资专栏撰稿人。
李晓波 从事金融衍生品市场交易及管理近20年,有着丰富的经验和体会,对国内外期货、贵金属、外汇、邮币卡及股市等主流交易方式有着深刻的了解,擅长期货、股票、黄金、白银、邮币卡、外汇的培训指导,经常活跃在各大金融讲坛,深为投资者喜爱。可为个人投资者及机构提供分析、投资咨询,交易指导,理财培训等多方位的专业服务。
1.1 初识量化炒期货 / 2
1.1.1 什么是量化炒期货 / 2
1.1.2 为什么要学习量化炒期货 / 3
1.2 量化炒期货的特点 / 4
1.2.1 严格的纪律性 / 5
1.2.2 完备的系统性 / 5
1.2.3 妥善运用套利的思想 / 5
1.2.4 靠概率取胜 / 6
1.3 量化炒期货的内容 / 6
1.3.1 期货交易品种的选择 / 6
1.3.2 交易时机的选择 / 8
1.3.3 算法交易 / 8
1.3.4 各种套利交易 / 10
1.4 量化炒期货与人工炒期货的对比 / 12
1.5 量化炒期货的注意事项 / 12
1.6 量化炒期货的开发语言——Python / 13
1.6.1 为什么使用Python开发量化炒期货 / 13
1.6.2 Python的下载与安装 / 14
1.6.3 Python的环境变量配置 / 19
1.6.4 编写Python程序 / 23
1.7 量化炒期货的潜在风险及应对策略 / 26
第2章 Python 的基本语法 / 29
2.1 Python 的基本数据类型 / 30
2.1.1 数值类型 / 30
2.1.2 字符串类型 / 32
2.2 Python 的变量与赋值 / 36
2.2.1 变量命名规则 / 36
2.2.2 变量的赋值 / 37
2.3 Python 的运算符 / 38
2.3.1 算术运算符的应用 / 39
2.3.2 赋值运算符的应用 / 41
2.3.3 位运算符的应用 / 42
2.4 常见的数值函数和字符串函数 / 43
2.4.1 数学函数的应用 / 43
2.4.2 随机数函数的应用 / 45
2.4.3 三角函数的应用 / 47
2.4.4 字符串函数的应用 / 49
2.5 Python 的语法规则 / 53
2.5.1 大小写敏感性 / 54
2.5.2 代码缩进 / 54
2.5.3 代码注释 / 55
2.5.4 空行 / 55
2.5.5 同一行显示多条语句 / 56
第3章 Python 的判断结构 / 57
3.1 if......else 语句 / 58
3.1.1 If 语句的一般格式 / 58
3.1.2 If 语句的注意事项 / 58
3.1.3 实例:任意输入两个职工的工资,显示高的工资信息 / 58
3.1.4 实例:奇偶数判断 / 59
3.2 多个if......else 语句 / 60
3.2.1 实例:登录系统 / 61
3.2.2 实例:奖金发放系统 / 62
3.3 关系运算符 / 64
3.3.1 关系运算符及意义 / 64
3.3.2 实例:成绩评语系统 / 64
3.3.3 实例:分解正整数 / 66
3.4 逻辑运算符 / 67
3.4.1 逻辑运算符及意义 / 67
3.4.2 实例:判断输入的年份是闰年还是平年 / 68
3.4.3 实例:剪刀、石头、布游戏 / 69
3.4.4 实例:每周学习计划 / 70
3.4.5 实例:水仙花数 / 71
3.5 嵌套if 语句 / 72
3.5.1 嵌套if 语句的一般格式 / 73
3.5.2 实例:判断一个数是否是3 或7 的倍数 / 73
3.5.3 实例:随机产生数并显示数和小数 / 74
3.5.4 实例:火车站安检系统 / 75
第4章 Python 的循环结构 / 79
4.1 while 循环 / 80
4.1.1 while 循环的一般格式 / 80
4.1.2 实例:计算1 2 3 …… 200 的和 / 80
4.1.3 实例:利用while 循环显示100 内的自然数 / 81
4.1.4 实例:随机产生20 个数,并显示小的数 / 81
4.1.5 实例:求s=a aa aaa ... aa...a 的值 / 83
4.1.6 实例:统计字符个数 / 84
4.1.7 实例:猴子吃桃问题 / 85
4.2 while 循环中使用else 语句 / 87
4.2.1 while 循环中使用else 语句的一般格式 / 87
4.2.2 实例:阶乘求和 / 87
4.2.3 实例:计算100 之内奇数的和 / 88
4.3 无限循环 / 89
4.4 for 循环 / 90
4.4.1 for 循环的一般格式 / 90
4.4.2 实例:遍历显示学生的姓名 / 90
4.4.3 实例:遍历显示字符串中的字符 / 91
4.5 在for 循环中使用range() 函数 / 92
4.5.1 range() 函数 / 92
4.5.2 实例:显示100 之内的3 的倍数 / 93
4.5.3 实例:小球反弹的高度 / 93
4.5.4 实例:任意输入两个数,求这两个数的公约数 / 94
4.6 循环嵌套 / 95
4.6.1 实例:9×9 乘法表 / 95
4.6.2 实例:绘制※ 的菱形 / 96
4.6.3 实例:查找完数 / 97
4.6.4 实例:弗洛伊德三角形 / 98
4.6.5 实例:杨辉三角 / 99
4.7 break 语句 / 101
4.8 continue 语句 / 102
4.9 pass 语句 / 103
第5章 Python 的特征数据类型 / 105
5.1 列表及应用 / 106
5.1.1 创建列表 / 106
5.1.2 显示列表中的数据信息 / 106
5.1.3 修改列表中的数据信息 / 107
5.1.4 删除列表中的数据信息 / 108
5.1.5 列表函数的应用 / 109
5.1.6 列表方法的应用 / 110
5.1.7 实例:多个随机数的排序 / 112
5.2 元组及应用 / 113
5.2.1 创建元组 / 113
5.2.2 显示元组中的数据信息 / 114
5.2.3 连接元组 / 115
5.2.4 删除整个元组 / 116
5.2.5 元组函数的应用 / 116
5.2.6 实例:利用嵌套元组显示用户名和密码 / 118
5.3 字典及应用 / 118
5.3.1 创建字典 / 119
5.3.2 显示字典中的值和键 / 119
5.3.3 修改字典 / 120
5.3.4 字典函数的应用 / 121
5.3.5 实例:用户注册 / 122
5.3.6 实例:用户登录 / 124
5.4 集合及应用 / 128
5.4.1 创建集合 / 128
5.4.2 集合的两个基本功能 / 128
5.4.3 集合的运算符 / 129
5.4.4 实例:无重复的随机数排序 / 131
第6章 Python 的函数及应用 / 133
6.1 函数的定义与调用 / 134
6.1.1 函数的定义 / 134
6.1.2 函数的调用 / 135
6.2 参数传递 / 136
6.2.1 不可更改对象 / 136
6.2.2 可更改对象 / 137
6.3 函数的参数类型 / 138
6.3.1 必需参数 / 138
6.3.2 关键字参数 / 139
6.3.3 默认参数 / 140
6.3.4 不定长参数 / 141
6.4 匿名函数的应用 / 142
6.5 递归函数的应用 / 143
6.6 变量作用域及类型 / 145
6.6.1 变量作用域 / 145
6.6.2 全局变量和局部变量 / 147
6.6.3 global 和nonlocal 关键字 / 148
第7章 Python 的面向对象程序设计 / 151
7.1 面向对象 / 152
7.1.1 面向对象概念 / 152
7.1.2 类定义与类对象 / 153
7.1.3 类的继承 / 155
7.1.4 类的多继承 / 158
7.2 Python 的模块 / 159
7.2.1 自定义模块 / 160
7.2.2 自定义模块的调用 / 161
7.2.3 import 语句 / 162
7.2.4 标准模块 / 164
7.3 Python 的包 / 165
第8章 Python 的日期时间处理 / 169
8.1 Python 处理日期时间的time 模块 / 170
8.1.1 time 模块表示时间的两种格式 / 170
8.1.2 时间戳 / 170
8.1.3 包括9 个元素的元组 / 172
8.1.4 时间的格式化 / 174
8.1.5 time 模块中的其他常用方法 / 176
8.2 Python 处理日期时间的datetime 模块 / 178
8.2.1 date 对象 / 178
8.2.2 time 对象 / 182
8.2.3 datetime 对象 / 182
8.2.4 timedelta 对象 / 184
8.3 Python 处理日期的calendar 模块 / 186
8.3.1 calendar() 方法 / 186
8.3.2 month() 方法 / 187
8.3.3 monthcalendar () 方法 / 187
8.3.4 其他常用方法 / 188
第9章 Python 量化炒期货常用的Numpy 包 / 191
9.1 初识Numpy 包及量化炒期货平台 / 192
9.1.1 初识Numpy 包 / 192
9.1.2 量化炒期货平台 / 192
9.2 ndarray 数组对象 / 194
9.2.1 创建Numpy 数组 / 194
9.2.2 zeros 数组、ones 数组和empty 数组 / 197
9.2.3 利用arange 函数或linspace 函数创建Numpy 序列数组 / 198
9.2.4 利用下标索引显示Numpy 数组中的数据 / 199
9.2.5 Numpy 数组运算 / 200
9.3 使用矩阵matrix 创建Numpy 矩阵 / 201
9.4 Numpy 的线性代数 / 202
9.4.1 Numpy 数组的点积 / 202
9.4.2 两个向量的点积 / 203
9.4.3 Numpy 数组的向量内积 / 204
9.4.4 矩阵的行列式 / 205
9.4.5 矩阵的逆 / 206
9.5 Numpy 的文件操作 / 207
9.5.1 Numpy 的二进制文件操作 / 208
9.5.2 Numpy 的文本文件操作 / 209
第10章 Python 量化炒期货常用的Pandas 包 / 211
10.1 Pandas 的数据结构 / 212
10.2 一维数组系列 / 212
10.2.1 利用ndarray 创建系列 / 212
10.2.2 利用字典创建系列 / 213
10.2.3 直接创建系列 / 214
10.2.4 访问系列中的值 / 215
10.3 二维数组DataFrame / 216
10.3.1 创建二维数组DataFrame / 216
10.3.2 创建带有时间索引的DataFrame / 217
10.3.3 利用DataFrame 显示所有期货数据 / 218
10.3.4 利用DataFrame 显示某个期货合约的报价信息 / 219
10.3.5 期货数据信息的行选择 / 223
10.3.6 期货数据信息的列选择 / 224
10.3.7 利用标签选择期货数据信息 / 226
10.3.8 利用条件选择期货数据信息 / 228
10.3.9 函数的应用 / 231
10.4 三维数组Panel / 234
第11章 Python 量化炒期货常用的Matplotlib 包 / 237
11.1 Matplotlib 包的特点 / 238
11.2 figure() 函数及应用 / 238
11.2.1 figure() 函数的各参数意义 / 238
11.2.2 figure() 函数的实例 / 239
11.3 plot() 函数及应用 / 240
11.3.1 plot() 函数的各参数意义 / 240
11.3.2 利用plot() 函数绘制图形 / 241
11.3.3 利用plot() 函数显示期货合约的收盘价图形 / 242
11.3.4 利用dataframe 的plot() 函数显示期货合约的图形 / 243
11.4 subplot() 函数及应用 / 244
11.4.1 subplot() 的各参数意义 / 244
11.4.2 利用subplot() 函数绘制多个图形 / 245
11.4.3 利用subplot() 函数绘制期货合约的收盘价和成交量图形 / 246
11.5 add_axes() 函数及应用 / 247
11.5.1 add_axes() 函数的应用 / 247
11.5.2 利用add_axes() 函数绘制期货合约的收盘价图形 / 248
11.6 legend() 函数及应用 / 250
11.6.1 利用legend() 函数为绘制图形添加图题 / 250
11.6.2 利用legend() 函数为期货合约图形添加图题 / 252
11.7 grid () 函数及应用 / 253
11.7.1 利用grid () 函数为绘制图形添加网格线 / 253
11.7.2 利用grid () 函数为绘制期货合约图形添加网格线 / 254
第12章 利用Python 编写量化炒期货策略 / 255
12.1 Python 量化炒期货策略的基本组成 / 256
12.1.1 初始化函数(initialize) / 257
12.1.2 开盘前运行函数(before_market_open) / 259
12.1.3 开盘时运行函数(market_open) / 259
12.1.4 收盘后运行函数(after_market_close) / 261
12.1.5 获取期货合约到期日函数(get_CCFX_end_date) / 261
12.1.6 期货自动移仓换月函数(position_auto_switch) / 261
12.2 Python 量化炒期货策略的设置函数 / 264
12.2.1 设置基准函数set_benchmark() / 264
12.2.2 设置佣金函数set_order_cost() / 265
12.2.3 设置滑点函数set_slippage() / 266
12.2.4 设置动态复权( 真实价格) 模式use_real_price / 267
12.2.5 设置是否开启盘口撮合模式match_with_order_book / 267
12.2.6 设置期货保证金比例futures_margin_rate / 267
12.3 Python 量化炒期货策略的下单函数 / 268
12.3.1 期货按手数下单函数order() / 268
12.3.2 期货目标手数下单函数order_target() / 269
12.3.3 期货按保证金下单函数order_value() / 270
12.3.4 期货目标保证金下单函数order_target_value() / 270
12.3.5 期货保证金预警is_dangerous / 271
12.3.6 获取未完成订单函数get_open_orders() / 271
12.3.7 撤单函数cancel_order() / 271
12.3.8 获取订单信息函数get_orders() / 272
12.3.9 获取成交信息函数get_trades() / 272
12.3.10 账户出入金函数inout_cash() / 273
12.4 Python 量化炒期货策略的常用对象 / 273
12.4.1 订单对象Order / 273
12.4.2 全局对象g / 274
12.4.3 一次交易对象Trade / 275
12.4.4 分时图盘面对象tick / 275
12.4.5 回测对象Context / 276
12.4.6 持有标的信息对象Position / 277
12.4.7 子账户信息对象SubPortfolio / 278
12.4.8 账户信息对象Portfolio / 279
12.5 Python 量化炒期货策略的日志log / 280
12.5.1 设定log 级别 / 280
12.5.2 log.info / 280
12.6 Python 量化炒期货策略的定时函数 / 281
12.6.1 定时函数的定义及分类 / 281
12.6.2 定时函数各项参数的意义 / 281
12.6.3 定时函数的注意事项 / 282
第13章 Python 量化炒期货的获取数据函数 / 285
13.1 期货信息 / 286
13.1.1 期货主力连续合约和指数合约 / 286
13.1.2 中金所的主力连续合约代码和指数合约代码 / 286
13.1.3 上期所的主力连续合约代码和指数合约代码 / 287
13.1.4 郑商所的主力连续合约代码和指数合约代码 / 288
13.1.5 大商所的主力连续合约代码和指数合约代码 / 289
13.1.6 上海国际能源交易中心的主力连续合约代码和指数合约代码 / 290
13.1.7 获取主力合约对应的具体合约函数get_dominant_future() / 290
13.1.8 期货可交易合约列表函数get_future_contracts() / 292
13.2 获取期货概况信息 / 293
13.2.1 获取单只期货合约数据函数get_security_info() / 293
13.2.2 获取所有期货数据函数get_all_securities() / 294
13.2.3 利用get_extras() 函数获取期货结算价 / 295
13.2.4 利用get_extras() 函数获取期货持仓量 / 297
13.3 获取期货行情数据 / 297
13.3.1 获取期货历史行情数据 / 297
13.3.2 获取期货当前单位时间的行情数据 / 299
第14章 Python 量化炒期货的获取统计数据函数 / 303
14.1 获取期货龙虎榜数据 / 304
14.1.1 期货龙虎榜数据表 / 304
14.1.2 query 的基本查询方式 / 305
14.1.3 显示期货龙虎榜数据表中的数据信息 / 305
14.1.4 利用条件过滤显示期货龙虎榜数据表中的数据信息 / 307
14.1.5 排序显示期货龙虎榜数据表中的数据信息 / 309
14.1.6 只显示部分期货龙虎榜数据信息 / 310
14.2 获取期货仓单数据 / 311
14.2.1 期货仓单数据表 / 311
14.2.2 显示期货仓单数据表中的数据信息 / 312
14.2.3 利用条件过滤显示期货仓单数据表中的数据信息 / 313
14.2.4 排序显示期货仓单数据表中的数据信息 / 314
14.2.5 只显示部分期货仓单数据信息 / 316
14.3 获取外盘期货日行情数据 / 316
14.3.1 外盘期货日行情数据表 / 317
14.3.2 外盘期货代码及对应的名称 / 317
14.3.3 显示外盘期货日行情数据信息 / 318
第15章 Python 量化炒期货的技术指标函数 / 321
15.1 技术指标概述 / 322
15.2 趋向指标函数 / 323
15.2.1 MACD 指标函数 / 323
15.2.2 EMV 指标函数 / 325
15.2.3 UOS 指标函数 / 327
15.2.4 GDX 指标函数 / 328
15.2.5 DMI 指标函数 / 329
15.2.6 JS 指标函数 / 331
15.2.7 MA 指标函数 / 332
15.2.8 EXPMA 指标函数 / 334
15.2.9 VMA 指标函数 / 335
15.3 反趋向指标函数 / 336
15.3.1 KD 指标函数 / 336
15.3.2 MFI 指标函数 / 337
15.3.3 RSI 指标函数 / 339
15.3.4 OSC 指标函数 / 340
15.3.5 WR 指标函数 / 341
15.3.6 CCI 指标函数 / 342
15.4 压力支撑指标函数 / 343
15.4.1 BOLL 指标函数 / 344
15.4.2 MIKE 指标函数 / 345
15.4.3 XS 指标函数 / 346
15.5 量价指标函数 / 347
15.5.1 OBV 指标函数 / 347
15.5.2 VOL 指标函数 / 348
15.5.3 MASS 指标函数 / 350
15.5.4 VR 指标函数 / 351
第16章 Python 量化炒期货的统计数据图 / 353
16.1 初识Seaborn / 354
16.2 单个期货合约的收益统计图 / 354
16.2.1 查看单个期货合约的收盘价信息 / 354
16.2.2 利用pct_change() 函数计算收益率情况 / 355
16.2.3 利用dropna() 函数处理空值 / 356
16.2.4 利用distplot() 函数绘制收益统计图 / 357
16.2.5 显示焦炭主力合约(J9999.XDCE)近一年来的收益统计图 / 360
16.3 期货合约的相关性分析图 / 360
16.3.1 利用jointplot() 函数绘制两个期货合约的相关性分析图 / 361
16.3.2 利用Pairplot() 函数绘制多个期货合约的相关性分析图 / 364
第17章 Python 量化炒期货策略的回测 / 371
17.1 量化炒期货策略回测的流程 / 372
17.2 利用Python 编写量化炒期货策略并回测 / 373
17.2.1 量化炒期货策略的编辑界面 / 373
17.2.2 量化炒期货策略的初始化函数 / 376
17.2.3 量化炒期货策略的单位时间调用函数 / 377
17.2.4 量化炒期货策略的回测参数设置 / 378
17.2.5 量化炒期货策略的回测详情 / 380
17.3 量化炒期货策略的风险指标 / 383
17.3.1 阿尔法(Alpha) / 384
17.3.2 贝塔(Beta) / 384
17.3.3 夏普比率(Sharpe Ratio) / 386
17.3.4 索提诺比率(Sortino Ratio) / 386
17.3.5 信息比率(Information Ratio) / 387
17.3.6 波动率(Volatility) / 388
17.3.7 基准波动率(Benchmark Volatility) / 389
17.3.8 回撤(Max Drawdown) / 390
第18章 Python 量化炒期货策略实战案例 / 391
18.1 均线量化炒期货策略 / 392
18.1.1 均线量化炒期货策略的初始化函数 / 392
18.1.2 均线量化炒期货策略的单位时间调用函数 / 393
18.1.3 均线量化炒期货策略的回测 / 394
18.2 多均线量化炒期货策略 / 395
18.2.1 多均线量化炒期货策略的初始化函数 / 395
18.2.2 多均线量化炒期货策略的单位时间调用函数 / 396
18.2.3 多均线量化炒期货策略的回测 / 398
18.3 随机指标量化炒期货策略 / 398
18.3.1 随机指标量化炒期货策略的初始化函数 / 399
18.3.2 随机指标量化炒期货策略的单位时间调用函数 / 399
18.3.3 随机指标量化炒期货策略的回测 / 400
18.4 布林通道线指标量化炒期货策略 / 401
18.4.1 布林通道线指标量化炒期货策略的初始化函数 / 401
18.4.2 布林通道线指标量化炒期货策略的单位时间调用函数 / 402
18.4.3 布林通道线指标量化炒期货策略的回测 / 404
18.5 中证500 合约套利策略 / 404
18.5.1 中证500 合约套利策略的初始化函数 / 405
18.5.2 获取中证500 合约到期日函数 / 406
18.5.3 中证500 合约套利策略的开盘前运行函数 / 406
18.5.4 中证500 合约套利策略的开盘时运行函数 / 407
18.5.5 中证500 合约套利策略的收盘后运行函数 / 408
18.5.6 中证500 合约套利策略的回测 / 409
18.6 股指期货的Dual_Thrust 策略 / 409
18.6.1 Dual_Thrust 策略的概述 / 410
18.6.2 Dual_Thrust 策略的初始化函数 / 410
18.6.3 Dual_Thrust 策略的set_info() 函数 / 411
18.6.4 Dual_Thrust 策略的dual_thrust () 函数 / 411
18.6.5 Dual_Thrust 策略的get_stock_index_futrue_code () 函数 / 412
18.6.6 Dual_Thrust 策略的get_CCFX_end_date () 函数 / 413
18.6.7 Dual_Thrust 策略的trade() 函数 /
本文提供的各种信息及资料仅供参考,不构成任何邀约、投资建议或承诺,请谨慎对待。