任何投資行為均有其風險,作為一名投資者,應為自己任何投資決策行為承擔所有風險。
本網站當盡力提供正確之資訊,所載資料均來自或本諸我們相信可靠之來源,但對其完整性、即時性和正確性不做任何擔保,如有錯誤或疏漏,本網站所有人及關係人,並不負任何法律責任。
本文非任何形式之投資建議,不保證所提供之資訊可以創造獲利、減少投資損失,亦不會鼓吹任何具體之投資行動。本網站所有人及關係人,對於本網站資訊使用者直接或間接依賴並參考相關資訊後,採取任何投資行為所導致之直接或間接損失,或因此產生之一切責任,均不負任何損害賠償及其他法律上之責任。
說明
本文介紹撰寫財經程式設計時常見的幾項任務,提供初學者一些基本概念作為起點。
收集資料(Data Collection)
無論是做運算、視覺化、技術分析,還是其他功能,所有任務的基礎都是財經資料。因此,資料收集是財經程式設計的第一步。
常見的收集方式包括:
- 直接下載資料
- 透過網站 API 取得資料
- 使用網路爬蟲抓取資料內容
除了直接下載可以手動操作外,其他方式多半需要透過程式自動化流程。
此外,將資料儲存於 SQLite、MySQL 等資料庫中,可以避免每次都從頭抓取資料,有助於日後重複使用。
這部分主要需要學習如何撰寫 HTTP 客戶端程式、製作網路爬蟲,若能進一步操作資料庫,也會是一項加分技能。
進行代數運算(Algebraic Operation)
使用程式進行財經數據的數學計算,是財經程式設計的基本任務。現代程式語言大多內建代數功能,也有許多標準函式庫或開源套件提供常見數學公式的實作,實際上很少需要從零手刻公式。
資料視覺化(Data Visualization)
與其直接閱讀表格,不如將資料視覺化為圖表,通常更容易判讀。例如某些依賴圖形辨識的技術分析方法(如形態學),難以直接用程式處理,但圖表可輔助人工辨識。
雖然現在許多財經網站已提供漂亮的互動式圖表,但仍會遇到現成圖表無法滿足需求的情況。這時候自己製作圖表就成為一種補足方式。
部分套件已內建常見圖表類型,只要將資料餵入即可產生視覺化結果。若沒有現成套件可用,則需要使用低階繪圖功能自行組合成所需圖表。
技術分析(Technical Analysis)
技術分析是另一種常見的資產評估方式,除了圖表判讀,也常應用在程式策略中。技術分析相關書籍眾多,本文不再贅述基本理論。
目前已有許多套件提供預寫好的技術分析指標,只要將資料帶入即可。除非有特殊需求,否則實際上很少需要自行實作指標。對初學者而言,先從熟悉現有套件開始是較安全的做法,能避免早期因寫錯公式而誤判行情。
策略設計(Strategy)
在掌握技術指標後,就能進一步設計自己的選股與交易策略。由於每位投資者的風格不同,策略設計其實是一件非常個人化的事情。
策略設計的目的並非學術研究,而是要能在市場中實際獲利。也就是說,重點不在寫出一套理論上完美的系統,而是能夠執行、可持續的策略。
任何策略都有可能失敗,因此技術分析經常強調「停損」(stop loss)的重要性。同時,也應進行策略的「回測」(見下一節),以確認其基本可行性。
回測(Backtesting)
當策略寫好,且手上有歷史資料時,就能進行回測。回測的目的不是預測未來、保證獲利,而是檢驗策略的合理性。
例如:
- 某些策略需要高頻交易,可能因手續費過高而無法實施
- 某些策略雖然看似會賺錢,但實際出手機會太少,實用性也就大打折扣
即使是回測表現不錯的策略,也不能保證獲利;但如果連回測都不通過,就沒必要拿去市場上測試了。
程式交易(Algorithmic Trading)
所謂程式交易,就是將整個交易流程全自動化。這可說是通往被動收入的最後一哩路。不過,自動交易程式並非「寫完就能放著賺錢」,仍需持續監控與調整。
例如:在市場發生「閃崩」(flash crash)時,一般投資者若沒手動停損,反而可能撐過波動;但程式交易可能因觸發停損條件而提早出場,造成不必要的虧損。
因此,如果覺得全自動交易讓你睡不安穩,也可以改為設計成輔助型工具,例如自動提醒或策略篩選,讓投資者在確認後再手動下單。