近年來(lái),Python語(yǔ)言憑借其在數(shù)據(jù)分析領(lǐng)域的優(yōu)勢(shì)得以快速發(fā)展,眾多軟件廠商也相繼推出了支持Python的量化交易平臺(tái)。本書(shū)是介紹Python編程及其在量化交易領(lǐng)域的實(shí)踐技巧的圖書(shū),旨在幫助讀者掌握基本的Python編程技能,并順利應(yīng)用于期貨量化交易實(shí)踐。
本書(shū)內(nèi)容分為兩篇。第一篇是Python基礎(chǔ),通過(guò)13章內(nèi)容介紹了Python編程的基礎(chǔ)知識(shí),如語(yǔ)法規(guī)則、數(shù)據(jù)類(lèi)型、函數(shù)、類(lèi)、裝飾器、異常處理、進(jìn)程和線(xiàn)程等;第二篇是期貨量化交易,通過(guò)8章內(nèi)容介紹了Python在期貨量化交易中的應(yīng)用,并基于天勤量化交易平臺(tái)講解開(kāi)發(fā)實(shí)踐,涉及pandas模塊、TqSdk的接口、函數(shù)、量化策略的框架、圖形化編程及時(shí)間序列相關(guān)的知識(shí)等。
本書(shū)適合對(duì)期貨量化交易感興趣的普通投資者和投資機(jī)構(gòu)專(zhuān)業(yè)人員閱讀,讀者可以具備一定的?Python基礎(chǔ),也可以通過(guò)本書(shū)從頭學(xué)習(xí)Python基礎(chǔ)知識(shí),再進(jìn)一步延伸到期貨量化交易的學(xué)習(xí)。
1.Python語(yǔ)法+編程實(shí)踐
本書(shū)由淺入深地介紹Python語(yǔ)言,讀者可以從頭學(xué)習(xí)Python的語(yǔ)法知識(shí)和編程技巧,結(jié)合相關(guān)代碼示例掌握Python編程技術(shù)。
2.案例實(shí)戰(zhàn)+源碼提供
作者結(jié)合從業(yè)經(jīng)驗(yàn)提供了豐富的期貨分析案例,將Python編程融入其中,適合業(yè)界人士參考,也適合讀者參考書(shū)中的思路和方法進(jìn)行探索實(shí)踐。
祝學(xué)禮,擁有多年期貨分析經(jīng)驗(yàn),熟悉各類(lèi)技術(shù)分析理論,擅長(zhǎng)用 Python 實(shí)現(xiàn)各類(lèi)交易策略,并用Python開(kāi)發(fā)交易軟件。
第 一篇 Python基礎(chǔ)
第 1章 語(yǔ)法基礎(chǔ) 3
1.1 自然語(yǔ)言 3
1.2 計(jì)算機(jī)語(yǔ)言 4
1.3 安裝Python 5
1.4 編輯器(IDE) 6
1.5 基本的輸入/輸出 6
1.6 代碼注釋 7
1.7 標(biāo)識(shí)符 8
1.8 表達(dá)式 8
1.9 運(yùn)算符 9
1.9.1 數(shù)值運(yùn)算符 9
1.9.2 比較運(yùn)算符 9
1.9.3 邏輯運(yùn)算符 10
1.9.4 關(guān)系運(yùn)算符 10
1.9.5 運(yùn)算符優(yōu)先級(jí) 11
1.10 Python的關(guān)鍵字 12
1.11 語(yǔ)句的執(zhí)行流程 13
1.12 小結(jié) 15
第 2章 常用數(shù)據(jù)類(lèi)型 16
2.1 常用內(nèi)置常量 16
2.2 整型 17
2.3 浮點(diǎn)型 17
2.4 字符串類(lèi)型 17
2.5 結(jié)構(gòu)數(shù)據(jù)類(lèi)型 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 無(wú)默認(rèn)值參數(shù) 24
3.2.2 有默認(rèn)值參數(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ù)類(lèi)型的運(yùn)算 35
4.1 獲取序列數(shù)據(jù)元素 35
4.1.1 索引和分片運(yùn)算符 35
4.1.2 index() 36
4.2 屬性引用 36
4.3 增量運(yùn)算符 36
4.4 字符串的運(yùn)算 37
4.4.1 獲取字符串中的元素 37
4.4.2 級(jí)聯(lián)和重復(fù) 38
4.4.3 字符串的常用方法 38
4.4.4 格式化字符串 41
4.4.5 正則表達(dá)式 44
4.5 列表的運(yùn)算 45
4.5.1 獲取列表的元素 45
4.5.2 級(jí)聯(lián)和重復(fù) 45
4.5.3 列表常用的方法 46
4.5.4 列表的推導(dǎo)(內(nèi)涵) 48
4.6 元組的運(yùn)算 50
4.7 字典的運(yùn)算 50
4.7.1 以“鍵”取“值” 50
4.7.2 字典常用的方法 51
4.8 nan值 54
4.9 小結(jié) 55
第5章 循環(huán) 56
5.1 可迭代對(duì)象 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 類(lèi)的特性 73
6.2 類(lèi)的定義 75
6.3 類(lèi)的一般定義 76
6.3.1 屬性和__init__() 76
6.3.2 方法 77
6.3.3 實(shí)例化類(lèi) 77
6.3.4 特殊屬性和特殊方法 80
6.4 類(lèi)的繼承 81
6.5 MRO列表 85
6.6 可變映射類(lèi)型 85
6.7 小結(jié) 88
第7章 裝飾器和functools 89
7.1 函數(shù)的閉包 89
7.2 裝飾器函數(shù) 90
7.3 裝飾器類(lèi) 94
7.4 內(nèi)置裝飾器類(lèi) 96
7.5 functools.partial() 96
7.6 小結(jié) 97
第8章 錯(cuò)誤和異常處理 99
8.1 try語(yǔ)句 99
8.2 raise語(yǔ)句 104
8.3 自定義異常類(lèi) 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 安裝第三方模塊庫(kù) 113
9.4 文件處理 113
9.4.1 open() 113
9.4.2 mode的主要值及含義 114
9.4.3 操作標(biāo)記 116
9.4.4 其他常用的文件方法 116
9.4.5 創(chuàng)建文件 117
9.5 json文件 118
9.6 小結(jié) 119
第 10章 時(shí)間日期處理 121
10.1 time模塊 121
10.2 datetime模塊 125
10.2.1 date類(lèi) 125
10.2.2 time類(lèi) 127
10.2.3 datetime類(lèi) 127
10.2.4 timedelta類(lèi) 130
10.3 小結(jié) 131
第 11章 多進(jìn)程multiprocess模塊 132
11.1 Process類(lèi) 133
11.2 Lock類(lèi) 137
11.3 Event類(lèi) 139
11.4 Queue類(lèi) 142
11.5 Pipe類(lèi) 145
11.6 Pool類(lèi) 148
11.7 獲取進(jìn)程的返回值 151
11.8 Manager類(lèi) 152
11.9 小結(jié) 153
第 12章 多線(xiàn)程threading模塊 155
12.1 Thread類(lèi) 155
12.2 Lock類(lèi) 160
12.3 Rlock類(lèi) 161
12.4 BoundedSemaphore類(lèi) 162
12.5 Condition類(lèi) 163
12.6 Event類(lèi) 165
12.7 queue模塊 166
12.8 concurrent.futures模塊 169
12.9 小結(jié) 172
第 13章 asyncio模塊庫(kù) 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 運(yùn)行和停止循環(huán) 180
13.4 創(chuàng)建Future和Task 182
13.4.1 創(chuàng)建Future 182
13.4.2 Task對(duì)象的方法 183
13.5 并發(fā)執(zhí)行的方法 184
13.6 隊(duì)列集 190
13.7 async for 192
13.8 小結(jié) 194
第二篇 期貨量化交易
第 14章 天勤量化(TqSdk) 197
14.1 簡(jiǎn)介 197
14.1.1 系統(tǒng)架構(gòu) 197
14.1.2 功能要點(diǎn) 198
14.1.3 安裝和升級(jí)TqSdk 199
14.1.4 數(shù)據(jù)流 200
14.1.5 注冊(cè)信易賬戶(hù) 200
14.2 TqSdk的接口 201
14.2.1 品種和交易所代碼 201
14.2.2 高級(jí)委托指令 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 文件讀寫(xiě) 237
15.4 小結(jié) 237
第 16章 TqSdk的使用 238
16.1 獲取盤(pán)口行情 238
16.2 獲取K線(xiàn)數(shù)據(jù) 239
16.3 獲取tick數(shù)據(jù) 241
16.4 下單和撤單 241
16.5 獲取委托單信息 243
16.6 獲取成交單信息 244
16.7 獲取持倉(cāng)信息 246
16.8 獲取賬戶(hù)資金信息 247
16.9 篩選合約 247
16.10 生成圖形化界面 249
16.10.1 在主圖中畫(huà)指標(biāo)線(xiàn) 249
16.10.2 在副圖中畫(huà)指標(biāo)線(xiàn) 250
16.10.3 在主圖中畫(huà)文字標(biāo)注 251
16.10.4 在主圖中畫(huà)特殊符和
線(xiàn)段 252
16.10.5 在副圖中畫(huà)K線(xiàn) 254
16.10.6 在副圖中畫(huà)價(jià)差K線(xiàn) 254
16.11 復(fù)盤(pán) 256
16.12 回測(cè) 256
16.13 多賬戶(hù) 257
16.14 使用目標(biāo)持倉(cāng)TargetPosTask 258
16.15 異步任務(wù) 260
16.15.1 使用協(xié)程任務(wù) 260
16.15.2 使用多線(xiàn)程 261
16.15.3 使用多進(jìn)程 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ù)訪(fǎng)問(wèn) 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 目標(biāo)持倉(cāng)工具TargetPosTask 279
17.9 小結(jié) 281
第 18章 量化策略框架 282
18.1 分時(shí)行情突破策略 282
18.2 雙均線(xiàn)策略 283
18.3 定時(shí)清倉(cāng) 284
18.4 套利下單 284
18.5 開(kāi)平倉(cāng)函數(shù) 286
18.6 追蹤止損+分批止盈 292
18.7 無(wú)人值守定時(shí)任務(wù) 295
18.8 期貨、期權(quán)無(wú)風(fēng)險(xiǎn)套利 297
18.9 多線(xiàn)程和異步協(xié)程框架 299
18.10 本地保存成交記錄 302
18.10.1 保存為json文件 302
18.10.2 保存為CSV文件 303
18.11 小結(jié) 304
第 19章 用GUI庫(kù)開(kāi)發(fā)界面程序 305
19.1 QApplication類(lèi) 305
19.2 部件QWidget 306
19.2.1 常用部件 306
19.2.2 常用布局 307
19.3 信號(hào)-槽 307
19.4 登錄窗口 307
19.5 下單板 310
19.6 信號(hào)線(xiàn)程 312
19.7 一個(gè)簡(jiǎn)單的半自動(dòng)化下單
軟件 313
19.8 打包成.exe格式的可執(zhí)行
文件 329
19.9 小結(jié) 329
第 20章 技術(shù)指標(biāo)繪圖 330
20.1 PyQtGraph簡(jiǎn)介 330
20.2 技術(shù)指標(biāo)繪制 334
20.2.1 K線(xiàn)和成交量繪制類(lèi) 334
20.2.2 技術(shù)指標(biāo)計(jì)算類(lèi) 338
20.2.3 x軸時(shí)間顯示 340
20.2.4 指標(biāo)窗口類(lèi) 341
20.2.5 圖形顯示 347
20.3 小結(jié) 351
第 21章 定量分析 352
21.1 技術(shù)分析的內(nèi)核:相關(guān)性檢驗(yàn) 352
21.1.1 方差和標(biāo)準(zhǔn)差 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)過(guò)程 355
21.2 價(jià)格序列相關(guān)性檢驗(yàn) 355
21.2.1 多品種的相關(guān)性檢驗(yàn) 356
21.2.2 單品種的自相關(guān)檢驗(yàn) 357
21.3 小結(jié) 362