18 min read

用 Claude Code + 永豐 Shioaji API 打造自動下單機器人:我的台積電期貨網格實戰

我用 Claude Code 串永豐 Shioaji API,做了一隻真的會自己下單的小型台積電期貨網格機器人。從申請 API、簽署同意書、模擬測試,到提醒模式、下單模式與 9 道安全機制,完整分享 AI 自動交易的做法。
用 Claude Code + 永豐 Shioaji API 打造自動下單機器人:我的台積電期貨網格實戰

那天早上九點多,我手機震了一下:

🤖【小型台積電自動】✅ 買進成交 1口|持倉 N 口

這次不是「建議你買」,是已經買了。

在上一篇台股 AI Agent 的最後,我很老實地說它「不會幫你下單」——它只負責選股、盯盤、發 Telegram,按下去的那一下還是我。

後來我還是跨出了這一步 😂 用 Claude Code 串上永豐金的 Shioaji API,做了一隻會自己下單的小型台積電期貨網格機器人。從 2026 年 9 月開始,它就用我自己的真錢在跑。

先講結論:用 AI 寫一隻會下單的程式其實不難,難的是讓它「不會出事」。 這篇大部分的篇幅,都在講我怎麼把它關進籠子裡。

這篇會聊這些:

  • Shioaji 是什麼?為什麼選永豐
  • 開通 API 的流程:申請金鑰、簽同意書、模擬測試(測試我也是叫 agent 自己跑的)
  • 這隻機器人在做什麼:小型台積電期貨網格
  • 最重要的設計:先「提醒模式」,再「下單模式」
  • 9 道安全機制:怎麼避免程式暴走把帳戶炸掉
  • 我怎麼跟 Claude Code 合作寫出來
  • 老實話:它不保證賺錢
關於作者:我是工程師阿穆,寫程式十多年,這幾年在做 AI Agent 與自動化系統。這隻下單機器人是我用 Claude Code 一路寫出來、用自己的錢在跑的,本文是第一手實作紀錄。

利益揭露 & 免責:本文沒有業配、沒有聯盟連結,永豐也沒有贊助我。期貨有槓桿、可能虧損超過本金,本文分享的是工程做法,不是投資建議,也不會公開我的本金、報酬與實盤參數。

Shioaji 是什麼?為什麼選永豐

Shioaji 是永豐金證券提供的程式交易 API,讓你用 Python 直接登入帳戶、拿即時行情、對台股與期貨下單。 細節可以看 Shioaji 官方文件,它能做的事包括:

  • 登入、查帳戶、查部位、查保證金
  • 拿即時報價、快照、K 線
  • 下單、改單、撤單(股票、期貨、選擇權都可以)

台灣的券商 API 不少,元大、群益、凱基、富邦都有,但我選 Shioaji 的原因很實際:

  1. 用 Python、跨平台:我的 Mac 直接 pip install shioaji 就能跑,不用為了券商元件開一台 Windows。
  2. 有模擬環境:可以先在假帳戶上把下單流程跑通,不用一開始就拿真錢練。
  3. 對 AI 很友善:Shioaji 是台灣第一個支援 AI coding agent skill 的券商 API(見 Shioaji GitHub),Claude Code 載入之後,就知道它的 API 怎麼用、有哪些坑。這對「出一張嘴」的我來說超重要。

如果你還不熟 skill 是什麼,可以看我之前寫的 AI Agent 的 Skill 是什麼? 和 MCP、Tools、Skills 差在哪。

Shioaji API 怎麼開通?申請金鑰、簽同意書、模擬測試

要讓程式真的下單,得先過三關:申請 API 金鑰與憑證、線上簽署同意書、在模擬環境通過登入與下單測試。 一關一關來看:

1. 開戶 + 申請 API 金鑰

你要先有永豐金證券的帳戶(要做期貨,就要開期貨戶),然後到永豐的網站申請 API Key 和 Secret Key。下單還需要電子憑證(.pfx 檔),登入後用它來簽章。

這些金鑰我都放在專案的 .env.local 裡,絕對不要寫進程式碼、也不要 commit 上 git。這點我在 Claude Code + FinMind 台股追蹤 那篇也講過:跟錢有關的東西,一律加進 .gitignore。

2. 簽署 API 使用同意書

正式下單前,要先在永豐的網站上線上簽署 API 相關的同意文件。就是一般的線上簽署流程,照著網頁步驟按就好,沒什麼技術含量。

3. 模擬環境測試

這一關比較有趣。永豐要求你先在模擬環境(simulation=True)跑過登入測試和下單測試,系統確認你真的會用之後,才會開通正式環境。

這件事我完全沒自己動手,而是直接跟 Claude Code 說:

「幫我在 Shioaji 模擬環境跑完 API 測試:登入、查帳戶、下一張期貨測試單、確認委託狀態,把每一步的結果印出來給我看。」

它就自己寫了測試腳本、跑完、把結果整理給我。我要做的只是看一眼確認都過了。

💡 小提醒:模擬測試有規定可以測試的時段,不在時段內會失敗;另外有些時段會要求台灣 IP。如果測試一直不過,先檢查時間跟網路,不一定是程式寫錯。

三關都過了,你的程式就有能力碰真錢了。也正因為這樣,接下來的設計才是重點。

這隻機器人在做什麼:小型台積電期貨網格

先簡單講它跑的策略,完整的回測寫在 網格交易回測:用台積電 6 年資料實測,99% 的月份有收入,卻輸給買進持有。

小型台積電期貨是臺灣期貨交易所(期交所)掛牌的台積電個股期貨,1 口對應 100 股台積電、每 1 點 = NT$100,保證金只要部位的一小部分,所以有槓桿(保證金、轉倉、槓桿怎麼算,可以看 個股期貨是什麼?小型台積電期貨的保證金、轉倉、槓桿)。

我在上面跑的是網格交易,邏輯很單純:

  • 買:價格從「近 10 個交易日高點」往下跌一格,就買 1 口
  • 賣:每一口都獨立計算,漲一格就把那口賣掉,鎖住小利潤
  • 不重複疊價:手上已經有一口的價位附近,就不再買

用生活化的比喻,它很像在夜市擺攤收租的二房東:價格掉下來就收一間房,價格彈回去就把那間租出去賺一點差價。它不預測台積電會漲還是跌,只靠來回震盪一次一次賺小錢。

網格這種策略最適合交給程式:規則死板、一天要看很多次、人來執行很容易手癢或手軟。 這正是機器擅長、人類不擅長的事。

我在研究階段讓 Claude 回測了台積電 6 年的網格(現股、無槓桿):總報酬 +41%,78 個月裡有 77 個月有現金流,但也遠遠輸給直接買進持有的 +611%。網格賺的是震盪,不是趨勢,這個取捨要先想清楚。完整的回測過程在 網格交易回測:用台積電 6 年資料實測,99% 的月份有收入,卻輸給買進持有。

最重要的設計:先「提醒模式」,再「下單模式」

如果你只記得這篇的一件事,我希望是這個:

不要一開始就讓程式下單。先讓它「只講不做」,跑到你完全信任它,再打開開關。

我的程式(futures_live.py)有兩種模式,用一個旗標檔案來切換:

提醒模式 下單模式
怎麼切換 data/LIVE_QFF_ENABLED 不存在 data/LIVE_QFF_ENABLED 存在
會做什麼 連線、算訊號、發 Telegram「建議買進/賣出」 真的下單、撤單,成交後自動更新帳本
帳本誰維護 我自己成交後手動回報 程式依成交結果自動記
需要憑證 不用 要

提醒模式發出來的訊息長這樣:

🟢 建議買進 1口 @~XXXX(跌破近10日高的 X%)|持倉 N 口
成交後回報:futures_live.py buy XXXX

我的建議是:先用提醒模式跑一段時間,每次收到建議,就自己判斷「如果是我會不會這樣做」,再手動下單、手動回報。等到它的每一個建議你都同意,再建立那個旗標檔案,讓它自己動手。

老實說,我自己只用提醒模式跑了一個禮拜就把開關打開了 😂 敢這麼快,是因為前面的策略研究已經做得夠久,而且背後有下面那 9 道保險撐著。如果你的策略還沒經過回測,請不要學我,提醒模式跑久一點絕對不吃虧。

這個設計還有一個好處:要煞車時,把旗標刪掉,它就退回只會講話的狀態,不會整個斷線。

9 道安全機制:怎麼避免程式暴走

會下單的程式,最可怕的不是策略賠錢,而是程式出 bug:重複下單、帳本跟券商對不上、網路斷了它還一直重試……這種事一發生,損失可能比策略本身大很多。

所以這隻機器人有 9 道保險,寫在程式最上面,旁邊還註明「每一項都是刻意的,不要拿掉」。先看總表:

# 安全機制 防的是什麼
1 Opt-in 旗標 程式預設就下單
2 Kill switch 緊急時停不下來
3 每輪先跟券商對帳 帳本跟真實部位不同步
4 下單前查真實保證金 保證金不足還硬下
5 槓桿上限(對真實權益) 部位越疊越大
6 口數硬上限 程式暴走無限買
7 每輪最多 1 張單 單輪 bug 一次下很多張
8 限價單 + 逾時撤單 市價追價、殘單忘記撤
9 出任何例外就停機 錯誤狀態下盲目重試

下面一個一個講:

1. Opt-in 旗標

就是上面講的 LIVE_QFF_ENABLED。預設是不下單,要我明確建立這個檔案才會進入下單模式。

2. Kill switch(緊急煞車)

只要 data/AUTO_OFF 這個檔案存在,程式立刻全停,連提醒都不發。

為什麼用檔案?因為 touch 一個檔案,比改程式、改設定快太多了,連在手機上透過 Telegram 遙控的 AI Agent 都能做到。緊急的時候,越簡單的煞車越好用。

3. 每一輪先跟券商對帳

這是我覺得最重要的一道。

每次醒來,它會先用 api.list_positions() 去問券商:「我現在真的有幾口?」再跟本地帳本比。只要對不上,就發 Telegram 告訴我,然後停機。

什麼時候會對不上?例如我自己手動下過單、某張單只成交一部分、或者上一輪程式在奇怪的地方掛掉。這些情況下繼續下單,就是在錯的狀態上疊更多錯,所以寧可停下來等我處理。實際的程式長這樣(Claude 寫的,這裡稍微簡化):

broker = broker_net_position(api, contract) # 券商說我有幾口
book = net_lots(ledger) # 帳本說我有幾口
if broker != book:
if live:
tg(f"⛔ 對帳不符:券商 {broker} 口 vs 帳本 {book} 口 → 停機。"
f"請人工檢查(可能手動下過單/部分成交),修正後再開。")
return # 不下單,直接結束這一輪

4. 下單前查真實保證金

買之前用 api.margin() 查券商那邊的真實可用保證金,不夠就不下,並且留一些緩衝。不是看我設定檔寫的數字,是看券商說的數字。

5. 槓桿上限(對真實權益)

除了保證金夠不夠,還會算「再買一口之後,總部位是權益的幾倍」,超過上限就擋下來。期貨最怕的就是部位越疊越大,跌下來的時候被追繳。槓桿開大到底有多危險,我用同一個策略開 1、2、3 倍回測過:期貨槓桿開幾倍才安全?同一個策略開 1、2、3 倍回測。

6. 口數硬上限

一個寫死在程式裡的絕對天花板,跟策略、跟保證金都無關。就算前面所有邏輯都出錯,它最多也只會買到這個數字。這是用來防「程式暴走」的最後一道牆。

7. 每輪最多下 1 張單

每次醒來最多只做一個動作。就算判斷邏輯有 bug 想一次買十口,它也只會買一口,然後等下一輪。

8. 限價單 + 逾時撤單

一律用限價單掛在當下價格,幾分鐘內沒成交就自動撤單。不會用市價單一路追價,也不會留一堆沒成交的單掛在那邊忘記。

9. 出任何例外就停機

連線失敗、API 回傳奇怪的東西、程式拋出例外——一律停下來、發 Telegram 通知我,不盲目重試。

程式設計裡常講「fail fast」,在交易程式裡這句話要更極端:有疑慮的時候,什麼都不做永遠是最安全的選項。

另外,每一筆下單、成交、撤單、錯誤都會發 Telegram,所以我隨時打開手機,就知道它今天做了什麼。

期貨特有的麻煩:自動轉倉

做期貨還有一個股票沒有的問題:每個月都會到期。

如果手上還有部位,就要在到期前把近月平掉、改開下個月的合約,這叫轉倉。這件事如果靠我手動,一定會有忘記的一天。

所以後來我又叫 Claude Code 加了自動轉倉:

  1. 近月合約快結算時,先把已經到停利點的口正常賣掉(沒必要多花轉倉成本 carry 一口正要賣的部位)
  2. 再把剩下的口先平近月、再開次月
  3. 帳本裡每一口的進場價,加上近月跟次月的價差,讓停利點跟著移動

順序是刻意的:先平再開。萬一開次月失敗,最壞的情況是空手,而不是同時抱著兩個月的部位。這個順序我一開始寫反了,是後來檢查才抓到的 😱 這也是為什麼我說「讓它不出事」才是難的部分。

我怎麼跟 Claude Code 合作寫出來

跟之前的台股 Agent 一樣,這整套不是我一行一行刻的,大概分成這幾步:

1. 先研究、再寫程式。 我先讓 Claude 用歷史資料回測網格策略,試了各種格距、加碼方式、移動停利、槓桿倍數,每個實驗的結論都寫成 markdown 文件存起來。等研究結論穩定了,才開始寫會下單的程式。

2. 先寫提醒版。 第一版是一隻只會發 Telegram 的監控程式,用 crontab 對齊 30 分 K,每半小時跑一次(crontab 的用法可以看 用 Crontab 讓 AI Agent 自己定時開工)。

3. 再把安全機制當需求講清楚。 寫下單版的時候,我給 Claude 的需求大概是這樣:

「幫我寫一支真的會下單的版本,跟提醒版分開。預設不下單,要有旗標才開;要有 kill switch;每輪先跟券商對帳,對不上就停機;下單前查真實保證金;每輪最多一張單;用限價單,逾時撤單;任何例外都停機並通知我。」

你會發現,這段需求裡幾乎沒有在講策略,全部都在講「出事的時候怎麼辦」。 這就是我在用 AI 寫交易程式時最大的心得:策略邏輯 AI 很快就寫好了,你要花心思的是那些「萬一」。

4. 把規則寫進 AGENTS.md / CLAUDE.md。 例如「手動帳戶跟自動帳戶的記帳要分開」、「帳本是運作狀態,不能用券商均價取代」這些規則,我都寫進專案的 instruction 檔,下次開新對話它就不會亂改。為什麼要這樣做,可以看 AI Agent 的 Instruction:CLAUDE.md 怎麼寫。

5. 每次改動都看 diff、看 commit。 例如「轉倉要先停利再轉」、「槓桿上限要對真實權益算」這些修正,都是我看程式邏輯時抓到、再叫它改的。AI 寫得很快,但按下 merge 的人要負責。

老實話:它不保證賺錢

最後講清楚幾件事:

  • 這是期貨,有槓桿。 跌得夠深的時候,虧損可能超過你的保證金。網格策略不停損、會一路往下買,遇到單邊大跌是最痛的情境。
  • 回測不等於未來。 我回測過 6 年,但未來的行情不一定長得像過去。
  • 安全機制防的是「程式出錯」,不是「策略賠錢」。 9 道保險可以讓它不暴走,但沒辦法讓一個不好的策略變成好策略。
  • 我不會公開本金和報酬。 不是故作神秘,是不希望有人看到數字就照抄。每個人的資金、風險承受度都不一樣,你該抄的是做法,不是參數。

我自己對這隻機器人的定位很簡單:它幫我把一套已經研究過的規則,一絲不苟地執行,不會手癢、不會手軟、不會忘記轉倉。最後要不要承擔這個風險,還是我自己決定的。

常見問題

Shioaji 可以在 Mac 上用嗎?

可以。Shioaji 是 Python 套件,pip install shioaji 就能裝,Mac、Linux、Windows 都能跑。我的機器人就是跑在 Mac 上,用 crontab 排程。

Shioaji 有模擬環境嗎?

有。登入時帶 simulation=True 就會連到模擬環境,下單不會動到真錢。而且正式下單前,永豐本來就要求你先在模擬環境通過登入和下單測試,所以一定會先用到它。

不會寫程式,可以用 AI 做自動下單嗎?

程式可以交給 Claude Code 寫,我這整套也幾乎沒自己刻 code。但你至少要能看懂它的邏輯、會開 terminal、知道每個安全機制在防什麼。下單程式出錯是真的會賠錢的,「看不懂就不要上線」是我的底線。

自動下單程式最常出什麼事?

最常見的不是策略賠錢,而是工程問題:重複下單、帳本跟券商部位不同步、部分成交沒處理、網路斷線後盲目重試、期貨忘記轉倉。這篇的 9 道安全機制跟自動轉倉,就是針對這些情況設計的。

用 AI 自動交易就能穩定賺錢嗎?

不能。AI 幫你的是把規則寫成程式、穩定地執行,不會讓一個不好的策略變好。策略本身還是要經過回測驗證,而且回測也不代表未來。

結語

從「會發通知的 agent」到「會自己下單的機器人」,技術上只差一個 api.place_order()。但真正花時間的,是把提醒模式、對帳、保證金檢查、硬上限、kill switch 這些保險一層一層加上去。

如果你也想試試看,我的建議是:先開模擬環境、先跑提醒模式、先把每一個「萬一」想清楚,再讓它碰真錢。這些坑都是我自己踩過的,希望你不用再踩一次~

我正在把這整套「用 AI 打造自動化交易系統」的做法整理成一門課,從資料、回測、提醒模式、Shioaji 下單、安全機制到上線維運,一步一步帶你做。想搶先知道開課消息的話,加我的 LINE 跟我說一聲「交易課」就好~

延伸閱讀:


喜歡這篇文章嗎?

📧 訂閱 Newsletter — 新文章直接寄到你信箱
🎬 追蹤我的 YouTube — 看 AI / 工具實作影片
💬 加我的 LINE — 想上交易課、或有問題隨時問我
🧵 追蹤 Threads — 平常的工程隨筆

掰掰~👋

想學更多?

訂閱電子報,每週收到最新的 AI 實戰教學。