描述
內容簡介
\\暢銷好書2025全新改版// ☆★寫出你的專屬指標★☆ 前程式交易員、現職量化交易研究人員帶你用Python寫出本書三大核心 獲取台灣股市資料X小幫手每日自動監控市場X透過回測打造最佳策略
當別人的策略10秒鐘完成回測10年的資料時,你是否仍辛苦的一年一年人工驗證自己的策略? 當別人有程式在替他監控市場而有空邊喝咖啡邊吃下午茶時,你是否還在辛苦盯盤,甚至荒廢本業? 近年來程式充斥、席捲了整個市場,學習程式不僅是為了因應就業潮流,也是讓您在各個場域、各種需求下都能有更適合自己的一套作業方式! 比起其他好用又方便的自動交易軟體,Python擁有更高度的自由化;比起雖然專業且支援廣泛卻要價不斐的軟體Bloomberg,Python是更容易入手的選擇。 學會一套Python語言讓你可以自由地獲取你想要的資料、自由地寫出屬於你的專屬指標。
☛讀完本書,您能熟悉軟體的執行方式、基本套件操作及函數: ✔基本觀念:變數、print 等 ✔了解常用資料結構概念及常用基本資料類型 ✔迴圈、條件式及控制 ✔運算子:+ - * / 以及其他概念 ✔了解Python規定縮排規則及import使用套件基礎操作 ✔熟悉pip與def概念及語法 ✔熟練cmd、vscode及Github ✔實際操作爬蟲,了解pandas套件、BeautifulSoup與一些常使用的資料清洗方法 ✔學會yfinance、ta套件及deal_holiday.py程式,並學會設置windows排程 ✔try / except 的基本概念及應用 ✔traceback 追蹤錯誤訊息 ✔numpy 的各種基礎統計方法:max、min、std、mean、percentile等 ✔熟悉pyfolio用法,熟悉backtrader框架的入門與應用
☛適合讀者 ✪具備基本Python基礎的讀者 ✪對程式交易無經驗或小有經驗者 ✪想更輕鬆獲取股市交易資訊的讀者 |
作者簡介
|
目錄
01環境準備—順便談一些開發小習慣
1.1 安裝Python ▌安裝python ▌安裝python – x86 與x86-64 ▌安裝python – 測試安裝是否成功 ▌小節統整 1.2 pip 套件管理 ▌pip 安裝套件 – 基礎語法 ▌pip 安裝套件 – 安裝套件列表中的套件 ▌小節統整 1.3 準備編輯器 ▌下載vscode ▌vscode 相關設定 ▌vscode 常見快捷鍵與注意事項 ▌vscode 編寫程式,cmd 執行py 檔 ▌小節統整 1.4 開發小習慣 – 虛擬環境 ▌虛擬環境介紹 ▌創建虛擬環境 ▌啟動及關閉虛擬環境 ▌虛擬環境與requirement.txt ▌虛擬環境與vscode ▌小節統整 1.5 本書的程式 (Github)
02 資料取得— 資料就是財富 2.1 網路爬蟲簡介 ▌聊聊爬蟲 ▌爬蟲攻防戰之一- 你不是瀏覽器! ▌爬蟲攻防戰之二- 你為什麼瘋狂向我請求? ▌爬蟲攻防戰之三- 我知道你刻意沉睡一秒 ▌爬蟲攻防戰之四- 我的網站要有操作才有資料,或者是動態網站,你不行了吧? ▌其他可能爬蟲攻防戰 ▌小節重點 2.2 台股列表蟲 ▌聊聊台股清單 ▌前置作業 – 在寫程式之前 ▌虛擬環境與套件安裝 ▌善用開發者工具,觀察網頁結構 ▌開始爬蟲 – requests+pandas 處理表格式網站! ▌爬蟲之後的客製化資料 ▌爬蟲後的客製化資料 - Dataframe 資料切割iloc ▌爬蟲後的客製化資料 - 將函數套用到每一筆資料- apply ▌爬蟲後的客製化資料 – split 切割字串 ▌爬蟲後的客製化資料 - 篩選台股947 檔股票與去除雜質 ▌爬蟲後的客製化資料 – 篩選符合條件的值 ▌小節統整 2.3 報價取得蟲 ▌聊聊報價來源 ▌觀察網址與網頁結構 ▌2025 再版調整 – yahoo us 的爬蟲架構改變 ▌爬蟲開始 – requests+BeautifulSoup 解析網站 ▌爬蟲開始 - 多定位find_all 與單一定位find ▌程式函數化(def) ▌程式函數化 - f-string 動態帶入函數參數 ▌import 自己寫的程式小意外,找不到程式 ▌小節統整 2.4 新聞取得蟲 ▌聊聊新聞作用 ▌Yahoo 新聞網頁已改版 ▌快速開始爬蟲 – 觀察網址與網頁結構再開始爬 ▌快速開始爬蟲 – 爬取新聞標題網址 ▌快速開始爬蟲 – 爬取日期 ▌快速開始爬蟲 – 日期字串處理split() ▌快速開始爬蟲 – zip 方法同時迴圈多個list ▌快速開始爬蟲 – 取得多頁數 ▌程式函數化 - for loop + range 處理多頁數 ▌程式函數化 - 將多個list 儲存至dataframe ▌小補充 – if / elif /else 條件控制 ▌觀察新版的yahoo 新聞介面 ▌爬取新版的新聞- 實作第一層爬蟲 ▌爬取新版的新聞- 實作第二層爬蟲 ▌程式函數化 ▌小節統整 2.5 證交所三大法人買賣超日報表蟲 ▌聊聊買賣超日報 ▌使用開發者工具Network 觀察對方資料來源 ▌使用api 獲取資料 - 觀察並測試對方api 使用參數 ▌使用api 獲取資料 - 查看對方api 使用參數類型 ▌使用api 獲取資料 - 超好用的輕量級資料格式json ▌使用api 獲取資料 - 開始使用對方api 進行請求 ▌程式函數化 ▌小節統整
03 股市小幫手系列— 股市小幫手,股票池篩選與入門 3.1 yfinance 歷史資料取得 ▌聊聊套件的使用 ▌yfinance - 股市報價獲取 ▌yfinance - 獲取指定區間的歷史股價 ( 含股利發放及股票分割) ▌yfinance - 獲取其擁有的所有區間的歷史股價 ▌yfinance - 股票基本資訊 ▌yfinance - 內部人士與機構法人持有比例 ▌yfinance - 主要持有的機構法人 ▌yfinance - 取得損益表 ▌yfinance - 取得資產負債表 ▌yfinance - 取得現金流量表 ▌小節統整 3.2 ta & pandas 產製各種指標 ▌ta 產出各種技術指標 ▌ta – 一次性產生42 種技術指標 ▌ta 移動平均– 產生單一指標,以移動平均為例 ▌ta 移動平均– 趁機會解說為何使用Class( 類) ▌ta 移動平均 – 查找對方Class 底下的function ▌ta 布林通道– 產生單一指標,以布林通道為例 ▌pandas 高點與低點指標– rolling 方法 ▌pandas 窗格內的高點變化 – apply&lambda 靈活操作資料 ▌小節統整 3.3 畫出K 棒與基礎視覺化方法 ▌聊聊視覺化方法與建議 ▌視覺化方法 - 設置畫布及區塊 ▌畫出K 棒 ▌畫出K 棒– 調整標題與xy 軸 ▌畫出K 棒 – 處理x 軸日期顯示問題 ▌畫出布林通道 – 於k 棒上 ▌畫出成交量 – 在下方子圖 ▌小節統整 3.4 小幫手信件通知 ▌聊聊寄信的流程與方法 ▌加入寄件人、收件人及標題 ▌加入信件內容 ▌加上附檔 ▌設定SMTP 發信 ▌寄信小幫手函數化 ▌額外小補充 – continue / break / pass ▌小節統整 3.5 密碼保護 – 拒絕將重要資訊寫在程式中 ▌聊聊密碼保護 ▌聊聊對帳密資訊進行加密 ▌加解密小工具 – 下載檔案包 ▌加解密小工具 – 開始操作 ▌加解密小工具 – key 跟config ▌題外話 – input 函數 ▌小節統整 3.6 營業日判斷 ▌聊聊營業日處理 ▌營業日判斷 – 下載國定假日表 ▌營業日判斷 – 格式處理 ▌營業日判斷 – 判斷是否為營業日 ▌營業日判斷 – 函數化 ▌小節統整 3.7 小幫手系列1 – 跟著法人走 ▌聊聊跟著法人進行交易 ▌開新的專案資料夾,分割前面的練習 ▌為新的環境安裝套件 ▌跟著法人走 – 開始撰寫! ▌異常處理 – try /except 介紹 ▌異常處理 – 實作在我們的小幫手系列 ▌小節統整 3.8 小幫手系列2 – 配息高( 現金殖利率)、股價低 ▌聊聊配息高與股價低 ▌決定心目中的高配息 ▌獲取殖利率大於5% 的股票清單 ▌獲取目標股票股價 ▌準備寄出掃描結果 ▌小節統整 3.9 小幫手系列3 – 暴跌中的股票+ 消息面 ▌聊聊暴跌中的股票與消息面 ▌取得暴跌中的股票 ▌小節統整 3.10 讓程式自動為你工作– 善用windows 排程 ▌聊聊排程器 ▌打開工作排程器,基本了解 ▌設置小幫手系列1 ▌設置小幫手系列1 – 設置一般 ▌設置小幫手系列1 – 設置觸發程序 ▌設置小幫手系列1 – 設置動作 ▌設置小幫手系列2 ▌設置小幫手系列2 – 掃描高配息股,設置一般 ▌設置小幫手系列2 – 掃描高配息股,設置觸發程序 ▌設置小幫手系列2 – 掃描高配息股,設置動作 ▌設置小幫手系列2 – 掃描高配息名單價格,設置一般 ▌設置小幫手系列2 – 掃描高配息名單價格,設置觸發程序 ▌設置小幫手系列2 – 掃描高配息名單價格,設置動作 ▌設置小幫手系列3 – 暴跌中的股票,設置一般 ▌設置小幫手系列3 – 暴跌中的股票,設置觸發程序 ▌設置小幫手系列3 – 暴跌中的股票,設置動作 ▌小節統整
04 指標型策略撰寫與效益評估 4.1 策略分析工具 - pyfolio ▌聊聊策略分析工具pyfolio ▌vscode 中使用jupyter ▌開始體驗pyfolio ▌第一步驟 - 每日的總資產變化 ▌第二步驟 - 轉化每日資產報酬率變化 ▌第三步驟 - 使用pyfolio,收看圖表 ▌小節統整 4.2 回測框架 - backtrader ▌聊聊回測 ▌Backtrader 官方文檔 ▌backtrader – 使用官方範例 ▌backtrader 介紹 – 定義params ▌backtrader 介紹 – log ▌backtrader 介紹 – __init__ ▌backtrader 介紹 – notify_order ▌backtrader 介紹 – notify_trade ▌backtrader 介紹 – next ▌backtrader 介紹 – 運行框架設置前的小插曲 ▌backtrader 介紹 – 正式介紹運行框架設置 ▌Backtrader 的可能問題之一 - FileNotFoundError ▌Backtrader 的可能問題之二 - ImportError ▌backtrader 介紹 – pyfolio 串接 ▌小節統整 4.3 指標型策略1 – 5ma 穿越60ma 進場,跌破60ma 出場 ▌聊聊指標型策略 - ma 的應用 ▌ma 策略 – params ▌ma 策略 – log ▌ma 策略 – __init__ ▌ma 策略 – notify_order ▌ma 策略 – notify_trade ▌ma 策略 – next ▌ma 策略 – 一般設置 ▌ma 策略 – 演算最適參數 ▌小節統整 4.4 指標型策略2 – 追高進場與加碼,固定停損停利 ▌聊聊追高進場 ▌Highest_high 策略 – params ▌Highest_high 策略 – log ▌Highest_high 策略 – __init__ ▌Highest_high 策略 – notify_order ▌Highest_high 策略 – notify_trade ▌Highest_high 策略 – next ▌Highest_high 策略 – 一般設置 ▌Highest_high 策略 – 進階方法演算評估最適參數 ▌小節統整 4.5 指標型策略3 – macd 翻紅、ma 齊上揚多條件進場 ▌聊聊macd 與ma 多條件進場 ▌macd+ma 策略 – params ▌macd+ma 策略 – __init__ ▌macd+ma 策略 – log ▌macd+ma 策略 – notify_order ▌macd+ma 策略 – notify_trader ▌macd+ma 策略 – next ▌macd+ma 策略 – 一般 ▌macd+ma 策略 – 測試多檔商品 ▌小節統整
05 聊聊AI、大數據與金融 5.1 深度學習、新聞、股市 ▌聊聊為什麼有這個章節以及何謂大數據 ▌在開始之前推薦一些資源 ▌日盛金控黑克松,人工智慧解盤 ▌關聯式新聞提取方法 5.2 野村實習期間 ▌聊聊為什麼有這個章節 ▌AI 導入專案 ▌DATA 的部分 ▌Features Selection 的部分 ▌Model 的部分 ▌Predict 的部分 ▌上線運行與佈署 5.3 做為程式交易工作者 ▌聊聊做程式交易的起源 ▌使用Multicharts 開發策略 ▌使用Python 研究市場、開發策略、AI 交易 |
序
在過去,大家可能會認為程式交易是一個高大上的東西,我可以很有信心地告訴你,在技術上你要利用程式完成你腦中的交易策略並不是一件難事,最難的絕對是賺錢的策略以及你在撰寫程式交易時的細心度及反覆驗證。而且在現在這個年代,程式單早已大肆興起,因為人的精力有限、速度有限,程式單則24 小時全程為你工作,速度絕對是手單比不上的。現今有許多產品都具備夜盤,包括基本的大小台指,甚至你如果想玩國外的商品,你就得半夜盯盤,太耗費精神了,當你研究出一套策略之後,透過回測確立可行,你就可以用程式去實現它,並且讓他24 小時為你工作,你則可以去研究其他策略,或者是專注在你的主業上,這就是程式交易的魅力所在。
當然了,說上面這些並不是非要你玩程式交易,畢竟這跟每個人的想法跟接受度有關,有很多人其實不能放心程式拿他的錢做自動交易,所以即使有了程式在幫他交易,他仍然會不斷的干預,進而影響到程式真正的獲利。無論你玩不玩程式交易,有一件事情都是同等重要,那就是回測,回測你的想法是否能夠賺錢,因此回測會是本書的核心之一。 我的想法是我認為入門的同學還不太適合太早開始做自動交易的程式,而且說真的如上所提及,大部分的人對於真正的程式自動交易還是存在許多擔憂與疑慮,所以本書的核心之一並不是以開發自動交易的程式為主,而是以開發小幫手系列為主,透過程式替你監控市場,再由你自己決定是否要入場。當然其實你的小幫手開發出來後,要轉成程式交易也並非難事,因為你的小幫手勢必是有條件的,只是當條件符合時是發出通知,把它改成下單的程式就可以了,不過這中間也牽涉到很多細節,例如現金、庫存的判定;程式運行頻率的設置等等,這些就是比較進階的事情了。 總的來說,這本書有三個核心,我認為是做程式交易入門常常應用到的三個層面,我希望你對於這三個層面的處理有基礎的認識。除了三個核心之外,我在最後一個章節設計了比較輕鬆,不談寫程式的環節,我想跟讀者聊聊自己對於AI 的相關應用以及我們現在的工作大致情況。三個核心如下: 1. 資料的取得 2. 掃描股票市場的小幫手輔助系列 3. 回測框架驗證你的策略 最後很感激能夠獲得出版此書的機會,也希望能藉由此書跟正在閱讀的你交個朋友,我在之後的章節有提及,在Github 上我有專門為此書開一個頁面,有任何問題無論是不是書中的問題都可以提出來討論,我會盡我所知的給予建議,這本書只是帶你用python 走進台股、程式交易的世界,只是冰山一角,如果你想要更精進,市面上還有許多非常進階的python 相關金融統計分析的書,我很建議你也買來看一看,亦或是像我一樣,我自知金融知識不是很專業,所以我跟一位在交易的領域打滾多年高手合作,也是我現在的老闆,我負責以python 或是其他工具軟體實現他的策略,而他負責構思策略,並且我也常常在他那裏學到許多金融知識。我在本書中介紹給你的就是我們日常作業中對於台股的應用。歡迎你加入這個領域,我們所有人加入這個領域,應該都不是單純為了研究、為了開心吧,我們就是想要賺錢,賺錢才會讓我們開心,因此在這裡預祝你旗開得勝,賺大錢! |