內容簡介
本書首先講解快速入門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() 函式 /