MT5 × API × AI 黃金自動交易 非工程師與AI

非工程師的 MT5 自動交易:用 AI(Claude)打造黃金(XAUUSD)交易系統

不久前,寫程式、建構系統還是「工程師的專利」。對我這種不會寫程式的人來說,那是遙遠世界的事。

但 AI 出現後,這個風景徹底變了。

只要用文字說出想做的事,AI 就會幫你寫程式。

連我這個非工程師,也能把想做的事,大部分都親手做出來了。

其實,這個網站上用的各種工具,都是我為了自己想用而親手打造的。

黃金價格、原油、美國公債殖利率、恐懼與貪婪指數……這些數據工具,原本都是我「自己看盤時想要」才做出來的。

有 AI 一起,不會寫程式也能做到這種程度。

而現在,我正在挑戰的,就是 ── 用 MT5 × API × AI 來交易

關於「非工程師與AI」這個系列

這個「非工程師與AI」系列,要分享我們這些不會寫程式的人,如何運用 AI 來幫助交易與投資。題材不只「MT5 自動交易」,之後也會挑戰像是用 X(Twitter)的文字資訊來輔助判斷等,各種把 AI 用在投資上的嘗試。

這系列的文章不是那種把完成品端出來的「教學文」。而是我實際動手、卡關、在 AI 幫助下一步步前進的真實過程

因為我希望這能成為和我一樣「不會寫程式的交易者」的參考。只要你看完覺得「或許我也做得到」,這個系列的目的就達成了。

第一個題材:用 MT5 × API × AI 打造黃金自動交易

具體來說,就是把運用 MT5(MetaTrader 5)、API 和 AI,一步步打造自動交易系統的整個過程,原汁原味地呈現給你看。

開始挑戰前,先把目標講清楚。

🎯 目標:用 MT5 × API × AI,打造黃金(XAUUSD)的交易系統

然後,我給自己訂下另一條重要規則。

💰 投入資金上限是 1,000 美元。

為什麼要設上限?自動交易,錢動得比你想像中更快。所以一開始就先畫一條「到此為止」的線。在「就算賠光也不影響生活」的範圍內,邊學邊挑戰 ── 這是大前提。抱著練功的心態,從符合自己能力的金額開始。

⚠️ 先聲明:這個系列不是投資招攬。自動交易有風險,尤其黃金(XAUUSD)是波動很大的商品。我自己也是先從完全不動錢的「讀取」和「模擬」開始,實際下單會等到完全理解架構後,才用最小單位謹慎進行。

為什麼題材選「黃金(XAUUSD)」、券商選「ThinkMarkets」

選黃金當題材,是因為這是讀者們也關心、我自己也一直在交易的資產類別

券商用 ThinkMarkets,是因為它具備了程式交易需要的條件。

  • 可以用 MetaTrader 5(MT5) ── 這是用 Python 操作的「窗口」
  • 官方允許自動交易(EA、程式交易)
  • 黃金(XAUUSD)點差(買賣價差)很窄 ── 對頻繁進出的自動交易來說,這點很關鍵

還沒有帳戶的人,先免費準備一個吧。之後會用到的「登入帳號、密碼、伺服器名稱」都會拿到。

在ThinkMarkets開始外匯交易

立即開戶

※開戶不需要費用 ,提前準備身分證明。開戶教程

整體架構 ── 要做什麼、怎麼做

接下來要做的系統,大致由 3 個零件組成。

  1. 讓 MT5 讀取黃金報價
  2. 與 AI 一起探討交易邏輯,建立「買?賣?等?」的判斷能力
  3. 依判斷結果,向 MT5 下單

把這 3 個拆小,一個一個確實做。程式碼讓 AI 寫,但不會整包丟給它一定要邊理解「為什麼這樣動」邊前進 ── 這是讓系統日後自己也能修、能養大的祕訣。

第一篇要做的事

漫長旅程的第一步。第一篇的目標,非常單純。

🏁 第一篇的目標:讓自己電腦上的 Python,讀取黃金(XAUUSD)現在的報價

還不會下單。這次完全只是「讀取」,零風險。 但只要打好這個地基,自動交易的大門就一定會打開。

具體會照以下流程進行。

  1. 開設 ThinkMarkets 帳戶(免費)
  2. 從後台建立模擬帳戶(免費、不入金)
  3. 安裝 MT5 並登入模擬帳戶
  4. 把 AI 夥伴「Claude Code」裝進電腦
  5. 準備 Python 與必要的套件
  6. 用 Python 讀取黃金報價

要準備的東西(檢查清單)

#項目取得方式、備註
1ThinkMarkets 帳戶(免費)開戶教學。有帳戶就能建立模擬帳戶
2MetaTrader 5(MT5)桌面版從 ThinkMarkets 下載
3Claude Code(AI 夥伴)幫你寫程式。Windows 安裝看專門教學
4Python(3.10 以上)python.org

💡 重要前提:作業系統需要 Windows。 讀取黃金報價要用的 Python 套件(MetaTrader5),只能在 Windows 上運作。Mac 使用者請準備一台 Windows 電腦,或 Windows 的虛擬環境/VPS。「思考、撰寫」用哪台電腦都行,但「實際連線 MT5」這部分需要 Windows。

步驟 1:先開設 ThinkMarkets 帳戶(免費)

自動交易的測試會用模擬帳戶(虛擬資金)進行。而那個模擬帳戶,只要有 ThinkMarkets 帳戶,就能從後台馬上免費建立。所以第一步,先開設 ThinkMarkets 帳戶吧。

開戶步驟(約 5 分鐘、免費)可以參考這篇教學,很好懂。

💡 請放心。「開戶」不等於「入金」。 開戶免費、不必入金。本系列的測試全部用虛擬資金的模擬帳戶進行,實際入金、實盤交易,會等到充分理解、接受後,才用最小單位進行。安全第一。

步驟 2:從後台建立「模擬帳戶」(免費、不入金)

有了帳戶後,從它的後台(控制面板)建立模擬帳戶。模擬帳戶是用虛擬的錢,在和真實一模一樣的行情環境裡試單的免費帳戶。下單練習、之後要做的自動交易測試,在這裡都能一毛錢都不花地完成。

💡 本系列的開發、測試,全部都用這個模擬帳戶進行。

① 登入客戶後台,點「註冊模擬帳戶」

登入步驟 1 開好的 ThinkMarkets 帳戶後,會打開 「控制面板」。點畫面右側 「快捷方式」 裡的 「+ 註冊模擬帳戶」

ThinkMarkets 控制面板,點選「註冊模擬帳戶」建立模擬帳戶

② 平台選「MetaTrader 5」

會進到「Platform Selection(選擇交易平臺)」畫面。在這裡選 「MetaTrader 5」。不是 ThinkTrader 也不是 MetaTrader 4 ── 因為本系列要用能從 Python 操作的 MT5

ThinkMarkets 開模擬帳戶 - 平台選擇 MetaTrader 5

③ 在確認彈窗點「繼續使用 MetaTrader 5」

會跳出「您確定要繼續使用 MetaTrader 5 嗎?」的確認。雖然它在推薦 ThinkTrader,但這裡按 「繼續使用 MetaTrader 5」

ThinkMarkets 開模擬帳戶 - 確認繼續使用 MetaTrader 5

④ 選帳戶內容(標準、USD、槓桿、初始資金)

在「交易平台詳情」,照以下方式選。

項目選擇一句話說明
帳戶類型標準只有點差、無手續費,較好懂(「零式」是手續費型)
帳戶結算貨幣USD(美元)黃金(XAUUSD)以美元計價
槓桿1:500和之後要用的真實帳戶設成相同條件,驗證才不會跑掉
選擇金額(初始資金)10,000模擬用的虛擬資金,完全不用花錢

選好後按 「申請賬戶」

💡 初始資金是虛擬的,選多少都行。想讓風險體感貼近實盤的人,可以設成接近實彈上限的 1,000 左右(本系列的實彈上限是 $1,000)。這次就照模擬的預設值 10,000 進行。

ThinkMarkets 開模擬帳戶 - 標準帳戶/USD/槓桿1:500/初始資金10000

⑤ 設定密碼

在「創建密碼」,如果要自己設密碼就選 「是的」,然後輸入密碼。條件有 4 個 ── 要分別包含大寫字母、小寫字母、數字、特殊符號。設好後按 「下一步」

🔑 這個密碼之後登入 MT5 時會用到。記在不會忘記的地方,別告訴別人。

ThinkMarkets 開模擬帳戶 - 建立交易密碼

⑥ 完成 ── 登入資訊會當場顯示

申請通過後,會出現 「立即開始交易!」 畫面,模擬帳戶就建好了。登入需要的資訊會直接顯示在這個畫面上(同樣內容也會寄到確認信)。以下 3 項,在步驟 3 登入 MT5 時會用到。

項目內容
交易帳號(登入帳號)數字的帳號(※記下來)
密碼⑤ 自己設的那組
伺服器(伺服器名稱)ThinkMarkets-Demo

💡 這 3 項每次登入都會用到。截圖或記在安全的地方吧(帳號、密碼別給別人看)。

ThinkMarkets 模擬帳戶 開戶完成畫面 - 伺服器 ThinkMarkets-Demo

步驟 3:安裝 MT5 並登入模擬帳戶

從 ThinkMarkets 下載 MetaTrader 5 並安裝。啟動後,用開模擬帳戶時拿到的 3 項資訊(⑥ 完成畫面上顯示的)登入。

  • 登入帳號(數字)
  • 密碼
  • 伺服器名稱ThinkMarkets-Demo(⑥ 完成畫面上顯示)
ThinkMarkets MT5 模擬帳戶的登入畫面(伺服器 ThinkMarkets-Demo)

登入成功後,畫面上黃金(XAUUSD)等各種商品的報價會開始閃動跳動。這就是即時行情。

MT5 報價視窗中 XAUUSD 即時跳動的樣子(模擬帳戶)

💡 看到「畫面上有黃金報價」=MT5 正常。接下來,就來準備讀取這個報價的「AI 夥伴」和 Python。

步驟 4:把 AI 夥伴「Claude Code」裝進電腦

這個系統的程式碼,要讓 AI 來寫。我用的夥伴是 Claude Code(Anthropic 公司的 AI 程式設計工具)。用中文(我自己主要用日文)跟它說「幫我寫這樣的程式」,它就會寫程式 → 執行 → 修錯,全程陪你一起做。是不會寫程式的人最強的後盾。

Windows 的安裝方式,已經有很好懂的教學了,就交給它們。

👉 把 Claude Code 裝到 Windows 的方法(推薦的中文教學):

數位時代的解說(適合新手、最詳細)

Grenade 手榴彈的解說(「不會寫程式也能用」)

💡 同樣的事,用 ChatGPT 的 Codex 也能做到。Claude Code 和 Codex 都會幫你把「寫程式 → 執行 → 修錯」一手包辦,依喜好選就好。本系列用 Claude Code 進行。

步驟 5:準備 Python 與套件(這也交給 Claude Code)

接著,準備 Python 本體和幾個「套件」。要用的有 3 個。

  • MetaTrader5 … 連接 MT5 和 Python 的 Windows 專用套件
  • anthropic … 之後篇章要用 AI(Claude)時的套件
  • pandas … 把報價資料當表格處理的經典套件

這裡有個好消息。這個準備,也能整包交給 Claude Code。 在黑黑的畫面(命令提示字元或 PowerShell)打那些像咒語的指令,對不會寫程式的人有點可怕。但只要跟 Claude Code 說「幫我裝 Python,還有 MetaTrader5、anthropic、pandas」,它就會代你完成需要的安裝。你完全不用碰那個黑畫面。

🖱️ 想自己動手的人:從 python.org 安裝 Python,在命令提示字元執行 pip install MetaTrader5 anthropic pandas 就能做到一樣的事。

🔧 實際做了才知道的事 我的環境是 Python 3.14 這個較新的版本,但 MetaTrader5 有準備好對應版本,順利就裝起來了。「太新會不會裝不起來?」這個擔心,目前是多餘的。

步驟 6:讓 Python 讀取黃金報價

總算進入正題。不過,還是不會馬上下單。這次只是「讀取」,完全沒有風險。

這裡,這樣拜託 AI。訣竅是不要一次全部,而是一次只拜託一小件

「用 MetaTrader5 套件,連線到 MT5 顯示帳戶餘額,並取得、顯示 XAUUSD(黃金)最近 100 根的 1 小時 K 線的 Python。每一行都加上註解說明在做什麼。」

拿回來的程式碼,一定要確認讀註解能不能「原來如此」地看懂。有看不懂的行,就再追問「這行在做什麼?」。這個「發問的動作」,正是不會寫程式的人學會理解的瞬間。

補足:這裡的商品代碼以 ThinkMarkets 為例是 XAUUSD。其他券商可能會使用 XAUUSD.proGOLD 等不同表記。讀取失敗時,先在 MT5 的「市場報價」中確認實際商品名稱,再把程式裡的 SYMBOL 改成那個名稱。

實際會跑的程式碼,大概長這樣(摘錄)。

import sys
import MetaTrader5 as mt5
import pandas as pd

# Windows 的命令列有時會因表情符號或特殊字元出現編碼錯誤,先指定 UTF-8
sys.stdout.reconfigure(encoding="utf-8")

# ThinkMarkets 的黃金商品代碼。其他券商可能會有 XAUUSD.pro、GOLD 等不同名稱
SYMBOL = "XAUUSD"

# 連線到 MT5(若已啟動並登入 MT5,這樣就 OK)
if not mt5.initialize():
    print("連線失敗:", mt5.last_error())
    raise SystemExit

try:
    # 顯示帳戶資訊(餘額等)
    acc = mt5.account_info()
    if acc is None:
        print("帳戶資訊取得失敗:", mt5.last_error())
        raise SystemExit

    print("伺服器:", acc.server, "/ 餘額:", acc.balance, acc.currency)

    # 讓 MT5 確認這個商品可以被選取
    if not mt5.symbol_select(SYMBOL, True):
        print(f"{SYMBOL} 無法選取:", mt5.last_error())
        raise SystemExit

    # 取得黃金最近 100 根的 1 小時 K 線
    rates = mt5.copy_rates_from_pos(SYMBOL, mt5.TIMEFRAME_H1, 0, 100)
    if rates is None:
        print("K 線取得失敗:", mt5.last_error())
        raise SystemExit

    df = pd.DataFrame(rates)
    df["time"] = pd.to_datetime(df["time"], unit="s")
    print(df[["time", "open", "high", "low", "close"]].tail())

finally:
    # 程式結束前,斷開 MT5 連線
    mt5.shutdown()

順利的話,會出現這樣的輸出(實際取得範例)。

✅ MT5 連線成功
伺服器: ThinkMarkets-Demo / 貨幣: USD(模擬帳戶、虛擬資金)

XAUUSD 最近的 1 小時 K 線
               time     open     high      low    close
2026-06-01 07:00:00  4516.32  4519.75  4508.48  4514.48
2026-06-01 08:00:00  4514.46  4525.28  4512.78  4518.31
2026-06-01 09:00:00  4518.41  4518.68  4514.28  4518.03

黃金的報價(一盎司約 4,518 美元),已經以表格的形式進到 Python 裡了。 這就是這個系列的起點。

卡關點,與它的解法(實際發生的事)

從這裡開始,就是這個系列和「用想像寫的文章」不一樣的地方。實際做,就一定會卡關。而那些卡關,正好能幫到同樣不會寫程式的你。

① 一開始就因為亂碼錯誤停下來

第一次執行,馬上就因為這個錯誤停住了。

UnicodeEncodeError: 'cp932' codec can't encode character '✅'

其實 MT5 的連線本身是成功的,錯誤是發生在「要把表情符號(✅)顯示到畫面上的那一瞬間」。是 Windows 畫面顯示的編碼,不支援表情符號。

解法只要 1 行。 在程式最前面,加上這個就好。

import sys
sys.stdout.reconfigure(encoding="utf-8")

在 Windows 跑這類程式的人,幾乎一定會遇到。只要知道「連線是成功的,只是表情符號報錯」,就不可怕了。這種小牆,問 AI「這個錯誤怎麼修?」也會馬上告訴你。

② 電腦裡裝了兩個 MT5

我的電腦裡,除了 ThinkMarkets,還裝了別的 MT5。這種情況,Python 有時會「搞不清要連哪個 MT5」。

對策是,把連線對象講清楚。

mt5.initialize(path=r"C:\Program Files\TF Global Markets MetaTrader 5 Terminal\terminal64.exe")

只裝一個 MT5 的人,不用在意。只有裝多個的人,用這一行就能解決。

第一篇總結

這次做的事,雖然樸素,卻是最重要的「地基」。

✅ 成功用 Python 連上了 ThinkMarkets 的 MT5

✅ 確認了 ThinkMarkets 環境中的黃金商品代碼是 XAUUSD(其他券商可能不同)

✅ 知道了黃金 1 手=100 盎司、最小 0.01 手起跳

✅ 把即時 K 線,以 Python 的表格形式取得了

🔑 這次的檢查點 只要你手邊「執行 Python 後,顯示出了黃金現價」,第一篇就合格了。還一張單都沒下。在完全安全的狀態下,站上了自動交易的入口。

不會寫程式的我,到這裡都很順利地走到了。你,也一定做得到。

  • 本文作者

匯商專業人士

1985年出生於台灣。
99年因為父親的工作來到日本。
畢業橫濱大陸系中華學校與日本國內大學。
07年到職日系製藥公司,10年換工作到日本外匯公司。在疫情期間離職(被開除),開始做專業投資者。(無職)
2013年開始海外外匯交易平台投資。開戶過23家海外外匯經紀商的帳號,其中遇到過3次詐騙平台。
2022年由於公司的業績不佳,被開除。開始專業投資者的生活,也就是“無職”
關於筆者的詳細介紹
筆者Facebook

-MT5 × API × AI 黃金自動交易, 非工程師與AI