難道台指期都不會有逆價差了嗎系統 – 2

研究

再來就要來研究一下坊間有哪些 API 可以用了,因為我是 Mac 環境,程式打算使用 Python 開發,隨便研究一下發現許多的程式交易都需要安裝 WIndows 的元件,也就是只能在 Windows 上面執行程式,像群益和元大都是這樣,我只想找找有沒有期貨逆價差而已,交易速度什麼的對我來說不太重要,最後我選擇了不需要安裝元件的 永豐 Shioaji API

基於 上一篇 我畫的架構,我會先取得期貨指數,存在 DynamoDB 後才會去執行策略,所以今天的文章會先著重在如何透過 永豐 Shioaji API 取得近月和次月小型台指期,也就是下圖紅框的實作。

我做了哪些事情

永豐 Shioaji API 的文件寫的挺清楚的,我這裡就記錄一下我做了哪些事情讓我可以成功取得近月和次月小型台指期吧。

1. 開證券戶 & 期貨戶

這步很單純就是去永豐金證券 開戶

2. 金鑰與憑證申請

開戶完成能登入永豐金證券後,就參考 他們的文件 去新增 API KEY 以及下載憑證。

3. 環境建置

永豐 Shioaji API 的文件是建議使用 uv 來建置環境,但我懶得再學一套 python library 管理工具所以我就沒有用了,我直接在 Anaconda 建立新的 pyhton 3.12 env,然後用 pip install -r requirements.txt 安裝 library,

shioaji==1.2.5
python-dotenv==1.0.1
boto3==1.37.3

把下接下來就把取得的金鑰和憑證位置寫到專案目錄下的 .env 檔案中,憑證密碼 CA_PASSWORD 是你的身份證字號,

API_KEY=
SECRET_KEY=
CA_CERT_PATH=
CA_PASSWORD=

我個人是把憑證放到專案下的 resources 目錄中,但可依個人習慣擺放,整體專案目錄結構如下圖。

4. 在 Dynamo DB 中建立 future table

我並沒有很想要在這系統上實際建個 DB 來儲存資料(太花錢XDD),就我想自動期貨逆價差這個目標,DynamoDB 的每月的免費額度應該是很夠用了,所以在實際執行程式之前需要來建立 Dynamo DB table,

partition key 和 sort key 分別輸入 code 和 update_time。

5. 實作 取得近月和次月小型台指期 程式

主要會用這支 get_future_index.py 程式會呼叫 永豐 Shioaji API 取得代碼 MXFR1MXFR2 的期貨商品資訊,

MXFR1 為小型台指近月,所以會對應到最近一次結算的小型台指期貨,而 MXFR2 為 小型臺指次月,則會對應到下下次結算的小型台指期貨,

以今天發文時間 2025 年 2 月 28 日來看,這 2 個代碼會分別對應到:

  • MXFR1 (小型台指近月) -> MXFC5 (小型臺指03)
  • MXFR2 (小型台指次月) -> MXFD5 (小型臺指04)

所以我就能用這 2 個代碼,儲存最近 2 期的小型臺指。

程式內容可參考我的 GitHub repo alpha-investment

6. 執行程式

切換到專案目錄下後,

cd alpha-investment

就可以用以下命令執行程式啦!

PYTHONPATH=./ python ./future/get_future_index.py

成功看到近 2 個月期貨商品的價差為 23 點,

然後 Dynamo DB 有成功存資料了。

下一步

今天的實作都是使用 永豐 Shioaji API 的模擬環境,下一篇文章就要來真的下單看看了,我看了一下文件要真的在 production 下單也是有挺多事要做,希望不會撞牆撞太多!

tshine73
tshine73
文章: 62

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *