iT邦幫忙

2022 iThome 鐵人賽

DAY 1
2

Node.js 量化投資全攻略:從資料收集到自動化交易系統建構實戰
本系列文已正式出版為《Node.js 量化投資全攻略:從資料收集到自動化交易系統建構實戰》。本書新增了全新內容和實用範例,為你提供更深入的學習體驗!歡迎參考選購,開始你的量化投資之旅!
天瓏網路書店連結:https://www.tenlong.com.tw/products/9786263336070


為什麼選擇這個主題?

在程式交易及量化投資領域,Python 已累積了豐富資源以及蓬勃的生態系,JavaScript 雖然應用極廣,但在這個領域的資源仍相對匱乏,身為一個在 JS 生態圈打滾多年的開發者,當然想用 JS 工具來嘗試各種可能!筆者目前任職於 FinTech 新創,基於個人興趣也通過證券商高級業務員、投信投顧業務員以及期貨商業務員認證,並相信投資可以改變生活!秉持知識分享、技術推廣以及自我挑戰的精神,於是促成了這次的寫作動機。

這個主題適合誰閱讀?

  • 身為臺股投資人,想知道如何運用開放資料進行股市分析。
  • 身為 Node.js 開發者,想知道如何利用程式取得金融數據。
  • 有後端開發經驗的工程師,想知道如何打造行情監控系統並進行程式交易。

這 30 天能學到什麼?

誠如系列文主題,我們會以 Node.js 及 Nest Framework 實作範例,針對臺灣股票市場,說明如何收集、運用公開資料進行股市分析,並結合券商 API 監控盤中即時行情、執行自動化下單,打造屬於自己的投資系統。

進入市場必須先瞭解遊戲規則,在這過程中我們也會說明基本的金融知識以瞭解市場運作的方式。期待經過 30 天後,每位讀者都能在未來投資路上持續專注成長,自信投資!

在哪個市場交易?

作為一個量化交易者,首先我們必須選定交易的市場。本系列文以 臺灣證券交易所證券櫃檯買賣中心 掛牌的 上市櫃股票 為主要的交易對象,但也會運用臺灣期貨交易所公布的交易資訊進行分析,作為投資決策的參考。

適合的交易風格與策略?

本系列文將收集、分析交易所每日公布的盤後數據,交易風格適合跨日持倉的 波段交易(swing trading)投資人,因此本系列文的主題,可能不適用於日內交易(day trading),也就是俗稱的當沖。

股市的投資分析派別有三大主流:基本分析技術分析籌碼分析。相較於傳統的基本分析與技術分析,籌碼分析在臺灣股票市場是一個比較特殊的存在。臺灣證券交易所及證券櫃檯買賣中心在交易日盤後都會提供三大法人買賣超數據,臺灣期貨交易所也會公布三大法人留倉及大額交易人淨部位,這些都是投資人可以善加利用的公開資料,如果好好地利用這些數據進一步分析,就可以挖掘出不少重要資訊,幫助我們在市場上獲利。

由於交易難免帶有主觀成分,基於個人的交易策略,本系列文的數據分析比較偏重在籌碼面,但也涉及技術面及基本面,因為投資分析是一個很大的主題,在 30 天系列文能提供的有限內容下,仍須有所取捨。孫子兵法有云:「夫未戰而廟算勝者,得算多也,未戰而廟算不勝者,得算少也,多算勝,少算不勝,而況於無算乎。」相信有基礎籌碼分析的認識,再結合技術與基本分析,就有機會提高投資勝率。

關於本系列文

本系列文的內容規劃,主要包含三大部分:

  • 資料取得篇:約 20 天。因分析資料是做成決策判斷的基礎,本系列文會花比較多時間在收集、處理股市相關資訊,進一步打造屬於自己的股市資料庫。
  • 股市幫手篇:約 5 天。有足夠的資料後就可以建立個人化的市場觀察指標與選股策略。此外,我們會利用券商提供的即時行情 API 開發自己的行情監控系統。
  • 程式交易篇:約 5 天。理想的交易策略必須進行回測並通過市場驗證。在本篇,我們會使用券商提供的交易 SDK 實際開發應用,帶領讀者一窺程式交易的世界。

以上內容僅供參考,可能隨者時間推移及文章進度再作調整。

準備開發環境

工欲善其事,必先利其器。為了明日正式進入主題做準備,我們第一天就先建立好開發環境吧!

安裝 Node.js

Node.js 是我們使用的開發平台,它是基於 Chrome V8 引擎的 JavaScript 執行環境。安裝 Node.js 最簡單的方式,就是從 Node.js 官方網站下載。

https://ithelp.ithome.com.tw/upload/images/20220901/201501504tfszlreEJ.png

網站會依照您目前的作業系統環境提供適合下載的版本,一般來說,選擇 LTS (Long Term Support) 版本下載即可,這是官方長期支援的穩定版本,如果您想體驗 Node.js 最新的功能,可以選擇下載最新版。

您也可以透過 NVM (Node Version Manager),來安裝 Node.js。顧名思義,NVM 就是一個 Node.js 的版本管理器,它允許使用者安裝多個 Node.js 版本,方便使用者在不同版本之間做切換。目前 NVM 也有 Windows 版本,詳細安裝方式請參考官方 Repo

安裝 MongoDB

MongoDB 是一種 NoSQL、以文件導向的資料庫管理系統,由於 MongoDB 的 BSON 結構非常容易與 Node.js 搭配使用,加上 MongoDB 的 Schema-less 儲存結構,適合拿來處理與股市相關的非結構化資料,因此我們使用 MongoDB 來建立股市資料庫。

您可以依據您的作業系統環境,從 MongoDB 官方的安裝指引 文件,安裝適合的 MongoDB 版本。

如果您熟悉 Docker,MongoDB 也提供官方的 Docker image,您可以使用 Docker 快速建立 MongoDB 環境。

安裝 Redis

Redis 是一種記憶體鍵值對資料庫(in-memory key-value database),提供 String、List、Set、Hash、Sorted Set 等儲存結構,經常被用在需要快取的場合,可以減輕後端資料庫的壓力,因此我們透過 Redis 協助處理股市的即時行情資料。

您可以從 Redis 官方網站的 Download 頁面下載適合的 Redis 版本並進行安裝程序。

如果您熟悉 Docker,Redis 也提供官方的 Docker image,您可以使用 Docker 快速建立 Redis 環境。

安裝 Nest CLI

Nest 是一款使用 TypeScript 開發的 Node.js Framework,實作上借鑑了 Angular 的設計風格,並整合了大部分的後端功能,幫助開發者建構容易維護的應用程式。

本系列文以 Nest 實作程式範例,不熟悉 Nest 的朋友,建議可以先參考 NestJS 官方文件NestJS 帶你飛! 系列文快速了解 Nest 的基本概念。

Nest CLI 是一個命令列介面工具,提供了一系列指令幫助我們開發 Nest 應用程式,如果您已安裝好 Node.js,就可以打開終端機(terminal)透過 npm 指令來安裝 Nest CLI:

$ npm install -g @nestjs/cli

安裝完成後,可以查看 Nest CLI 的指令及使用方式:

$ nest -h

https://ithelp.ithome.com.tw/upload/images/20220901/20150150kqUOvZakIr.png

本系列文會透過命令行(command line)輸入指令,這個介面在 Mac OS X 稱「終端機」;在 Windows 稱「命令提示字元」。在本系列文後續的內容中,會統一將命令行介面稱為「終端機」。

安裝 Visual Studio Code

Visual Studio Code 是一款跨平台的免費原始碼編輯器,提供了許多豐富的 延伸模組 (Extensions),使用者可以安裝這些工具來提升開發生產力。

取得 Visual Studio Code 的方式至官方網站下載即可。當然,Visual Studio Code 在這邊並不是必須選項,您也可以選擇任何一款已經使用順手的編輯器,例如 Vim 或 Emacs。

本日小結

  • 本系列文的目標是使用 Node.js 從零開始打造自己的投資工具與交易系統。
  • 本系列文主要的分析與交易對象是臺灣證券交易所及證券櫃檯買賣中心掛牌的上市櫃股票。
  • 建立開發環境,確認已安裝 Node.js、MongoDB、Redis、Nest CLI 以及 Visual Studio Code 或其他慣用的編輯器。

下一篇
Day 02 - 數據即財富:股市資料來源與取得
系列文
從 Node.js 開發者到量化交易者:打造屬於自己的投資系統31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
彭偉鎧
iT邦研究生 1 級 ‧ 2022-09-02 11:53:03

加油!

我要留言

立即登入留言