近年來,Python語言憑借其在數(shù)據(jù)分析領(lǐng)域的優(yōu)勢得以快速發(fā)展,眾多軟件廠商也相繼推出了支持Python的量化交易平臺。本書是介紹Python編程及其在量化交易領(lǐng)域的實踐技巧的圖書,旨在幫助讀者掌握基本的Python編程技能,并順利應(yīng)用于期貨量化交易實踐。
本書內(nèi)容分為兩篇。第一篇是Python基礎(chǔ),通過13章內(nèi)容介紹了Python編程的基礎(chǔ)知識,如語法規(guī)則、數(shù)據(jù)類型、函數(shù)、類、裝飾器、異常處理、進程和線程等;第二篇是期貨量化交易,通過8章內(nèi)容介紹了Python在期貨量化交易中的應(yīng)用,并基于天勤量化交易平臺講解開發(fā)實踐,涉及pandas模塊、TqSdk的接口、函數(shù)、量化策略的框架、圖形化編程及時間序列相關(guān)的知識等。
本書適合對期貨量化交易感興趣的普通投資者和投資機構(gòu)專業(yè)人員閱讀,讀者可以具備一定的?Python基礎(chǔ),也可以通過本書從頭學(xué)習(xí)Python基礎(chǔ)知識,再進一步延伸到期貨量化交易的學(xué)習(xí)。
1.Python語法+編程實踐
本書由淺入深地介紹Python語言,讀者可以從頭學(xué)習(xí)Python的語法知識和編程技巧,結(jié)合相關(guān)代碼示例掌握Python編程技術(shù)。
2.案例實戰(zhàn)+源碼提供
作者結(jié)合從業(yè)經(jīng)驗提供了豐富的期貨分析案例,將Python編程融入其中,適合業(yè)界人士參考,也適合讀者參考書中的思路和方法進行探索實踐。
祝學(xué)禮,擁有多年期貨分析經(jīng)驗,熟悉各類技術(shù)分析理論,擅長用 Python 實現(xiàn)各類交易策略,并用Python開發(fā)交易軟件。
第 一篇 Python基礎(chǔ)
第 1章 語法基礎(chǔ) 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 數(shù)值運算符 9
1.9.2 比較運算符 9
1.9.3 邏輯運算符 10
1.9.4 關(guān)系運算符 10
1.9.5 運算符優(yōu)先級 11
1.10 Python的關(guān)鍵字 12
1.11 語句的執(zhí)行流程 13
1.12 小結(jié) 15
第 2章 常用數(shù)據(jù)類型 16
2.1 常用內(nèi)置常量 16
2.2 整型 17
2.3 浮點型 17
2.4 字符串類型 17
2.5 結(jié)構(gòu)數(shù)據(jù)類型 19
2.5.1 列表 19
2.5.2 元組 19
2.5.3 字典 20
2.6 小結(jié) 21
第3章 函數(shù)式編程 22
3.1 函數(shù)的定義和調(diào)用 22
3.2 函數(shù)的參數(shù)傳遞 24
3.2.1 無默認值參數(shù) 24
3.2.2 有默認值參數(shù) 24
3.2.3 可變參數(shù) 25
3.2.4 以函數(shù)作為參數(shù) 28
3.3 變量的作用域 29
3.4 匿名函數(shù)lambda 31
3.5 Python常用內(nèi)置函數(shù) 32
3.6 注解 32
3.7 小結(jié) 34
第4章 常用數(shù)據(jù)類型的運算 35
4.1 獲取序列數(shù)據(jù)元素 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 級聯(lián)和重復(fù) 38
4.4.3 字符串的常用方法 38
4.4.4 格式化字符串 41
4.4.5 正則表達式 44
4.5 列表的運算 45
4.5.1 獲取列表的元素 45
4.5.2 級聯(lián)和重復(fù) 45
4.5.3 列表常用的方法 46
4.5.4 列表的推導(dǎo)(內(nèi)涵) 48
4.6 元組的運算 50
4.7 字典的運算 50
4.7.1 以“鍵”取“值” 50
4.7.2 字典常用的方法 51
4.8 nan值 54
4.9 小結(jié) 55
第5章 循環(huán) 56
5.1 可迭代對象 56
5.2 迭代器 57
5.3 生成器 59
5.4 協(xié)程 63
5.5 其他迭代函數(shù) 69
5.5.1 map() 69
5.5.2 zip() 70
5.5.3 enumerate() 71
5.6 小結(jié) 72
第6章 面向?qū)ο缶幊獭?3
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 小結(jié) 88
第7章 裝飾器和functools 89
7.1 函數(shù)的閉包 89
7.2 裝飾器函數(shù) 90
7.3 裝飾器類 94
7.4 內(nèi)置裝飾器類 96
7.5 functools.partial() 96
7.6 小結(jié) 97
第8章 錯誤和異常處理 99
8.1 try語句 99
8.2 raise語句 104
8.3 自定義異常類 105
8.4 小結(jié) 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 創(chuàng)建文件 117
9.5 json文件 118
9.6 小結(jié) 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 小結(jié) 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 小結(jié) 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 小結(jié) 172
第 13章 asyncio模塊庫 173
13.1 asyncio異步協(xié)程的定義 173
13.1.1 原生協(xié)程 173
13.1.2 asyncio異步協(xié)程 177
13.2 創(chuàng)建和設(shè)置事件循環(huán) 179
13.3 運行和停止循環(huán) 180
13.4 創(chuàng)建Future和Task 182
13.4.1 創(chuàng)建Future 182
13.4.2 Task對象的方法 183
13.5 并發(fā)執(zhí)行的方法 184
13.6 隊列集 190
13.7 async for 192
13.8 小結(jié) 194
第二篇 期貨量化交易
第 14章 天勤量化(TqSdk) 197
14.1 簡介 197
14.1.1 系統(tǒng)架構(gòu) 197
14.1.2 功能要點 198
14.1.3 安裝和升級TqSdk 199
14.1.4 數(shù)據(jù)流 200
14.1.5 注冊信易賬戶 200
14.2 TqSdk的接口 201
14.2.1 品種和交易所代碼 201
14.2.2 高級委托指令 202
14.2.3 TqApi 203
14.3 小結(jié) 218
第 15章 pandas模塊 219
15.1 一維數(shù)據(jù)結(jié)構(gòu)Series 219
15.2 二維數(shù)據(jù)結(jié)構(gòu)DataFrame 221
15.3 文件讀寫 237
15.4 小結(jié) 237
第 16章 TqSdk的使用 238
16.1 獲取盤口行情 238
16.2 獲取K線數(shù)據(jù) 239
16.3 獲取tick數(shù)據(jù) 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 復(fù)盤 256
16.12 回測 256
16.13 多賬戶 257
16.14 使用目標持倉TargetPosTask 258
16.15 異步任務(wù) 260
16.15.1 使用協(xié)程任務(wù) 260
16.15.2 使用多線程 261
16.15.3 使用多進程 262
16.16 小結(jié) 263
第 17章 TqSdk部分函數(shù)解讀 264
17.1 DIFF協(xié)議 264
17.1.1 數(shù)據(jù)傳輸 264
17.1.2 數(shù)據(jù)訪問 266
17.2 業(yè)務(wù)函數(shù) 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 小結(jié) 281
第 18章 量化策略框架 282
18.1 分時行情突破策略 282
18.2 雙均線策略 283
18.3 定時清倉 284
18.4 套利下單 284
18.5 開平倉函數(shù) 286
18.6 追蹤止損+分批止盈 292
18.7 無人值守定時任務(wù) 295
18.8 期貨、期權(quán)無風(fēng)險套利 297
18.9 多線程和異步協(xié)程框架 299
18.10 本地保存成交記錄 302
18.10.1 保存為json文件 302
18.10.2 保存為CSV文件 303
18.11 小結(jié) 304
第 19章 用GUI庫開發(fā)界面程序 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格式的可執(zhí)行
文件 329
19.9 小結(jié) 329
第 20章 技術(shù)指標繪圖 330
20.1 PyQtGraph簡介 330
20.2 技術(shù)指標繪制 334
20.2.1 K線和成交量繪制類 334
20.2.2 技術(shù)指標計算類 338
20.2.3 x軸時間顯示 340
20.2.4 指標窗口類 341
20.2.5 圖形顯示 347
20.3 小結(jié) 351
第 21章 定量分析 352
21.1 技術(shù)分析的內(nèi)核:相關(guān)性檢驗 352
21.1.1 方差和標準差 353
21.1.2 協(xié)方差和相關(guān)系數(shù) 353
21.1.3 自協(xié)方差、自相關(guān)系數(shù)和
偏自相關(guān)系數(shù) 354
21.1.4 平穩(wěn)過程 355
21.2 價格序列相關(guān)性檢驗 355
21.2.1 多品種的相關(guān)性檢驗 356
21.2.2 單品種的自相關(guān)檢驗 357
21.3 小結(jié) 362