用 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 的原因很實際:
- 用 Python、跨平台:我的 Mac 直接
pip install shioaji就能跑,不用為了券商元件開一台 Windows。 - 有模擬環境:可以先在假帳戶上把下單流程跑通,不用一開始就拿真錢練。
- 對 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 加了自動轉倉:
- 近月合約快結算時,先把已經到停利點的口正常賣掉(沒必要多花轉倉成本 carry 一口正要賣的部位)
- 再把剩下的口先平近月、再開次月
- 帳本裡每一口的進場價,加上近月跟次月的價差,讓停利點跟著移動
順序是刻意的:先平再開。萬一開次月失敗,最壞的情況是空手,而不是同時抱著兩個月的部位。這個順序我一開始寫反了,是後來檢查才抓到的 😱 這也是為什麼我說「讓它不出事」才是難的部分。
我怎麼跟 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 跟我說一聲「交易課」就好~
延伸閱讀:
- 用 Claude Code + FinMind 追蹤台股
- 用 Claude Code 打造台股 AI Agent:盤前選股、盤中盯盤、發 Telegram
- 自架 AI Agent 實戰系列
- 網格交易回測:用台積電 6 年資料實測,99% 的月份有收入,卻輸給買進持有
- 個股期貨是什麼?小型台積電期貨的保證金、轉倉、槓桿
- 期貨槓桿開幾倍才安全?同一個策略開 1、2、3 倍回測
喜歡這篇文章嗎?
📧 訂閱 Newsletter — 新文章直接寄到你信箱
🎬 追蹤我的 YouTube — 看 AI / 工具實作影片
💬 加我的 LINE — 想上交易課、或有問題隨時問我
🧵 追蹤 Threads — 平常的工程隨筆
掰掰~👋