自動交易最難的,不是寫程式,是「邏輯」
上一篇,我們讓 Python 成功讀到了黃金(XAUUSD)的報價,打好了地基。
接下來,照理說該寫「下單的程式」了。但在那之前,有一件更重要的事 ── 決定「要照什麼規則買賣」。
自動交易的本質,是把「買賣的判斷」變成電腦能 24 小時執行的規則。程式碼再漂亮,如果背後的規則沒有「優勢(edge)」,那它只會很有效率地、穩定地賠掉點差和手續費。
所以這一篇,先不碰下單。我們要做的是 ── 不靠直覺、不靠感覺,用 15 年的真實數據,找出黃金「真的存在的傾向」,把它當成策略的核心。
而這種「翻 15 年數據做統計分析」的工作,過去是工程師、量化交易員的專利。但現在,有 AI(Claude Code)幫忙,不會寫程式的我,也能親手做黃金量化交易了。
我給自己的一條鐵則:「不要用想像寫策略」
開始之前,先立一條規矩。


🎯 鐵則:不要用想像、用數據。 「黃金跌多了應該會反彈吧」「行情大概禮拜五容易漲」── 這種「感覺」在交易裡最危險。感覺對的事,數據上常常不成立;數據上成立的事,又常常違反直覺。所以這個系列,所有規則都必須通過 15 年數據的檢驗,才准採用。
我用的數據,是從上一篇連好的 ThinkMarkets MT5,請 Claude Code 幫我抓下來的:
- 日線(D1):3,957 根 / 2011 年 1 月 ~ 2026 年 6 月(約 15.4 年)
- 小時線(H1):90,504 根 / 同期間
💡 先講清楚限制(這很重要)。 這些數據來自單一券商(ThinkMarkets)。「傾向」本身是市場共通的,但精確的數字會因券商而有些微差異。而且過去成立,不保證未來成立 ── 這是所有歷史回測的天花板。我會盡量誠實地把「優勢有多大、有多可靠」攤開給你看,不誇大。另外,本文說的「星期五」和「開盤/收盤」,都是以 ThinkMarkets 伺服器時間(UTC+3)的 D1 日線為準 ── 星期幾效應會隨券商的結算時間略有不同,換券商時要重新驗證。

找策略的方法:用「t 值」抓出「不像偶然」的傾向
統計分析聽起來很難,但核心觀念只有一個:「這個傾向,是真的,還是只是運氣(偶然)?」
判斷的工具叫 t 值。你不用懂它的數學,只要記一個門檻:
|t| ≧ 2,在單一檢定下,大致代表「統計上比較不像是偶然」 ── 也就是「這個傾向比較像是真的」。(這只是粗略的參考;檢定的項目一多,還得再打折扣。)
我請 Claude Code 寫了分析程式,並且特別交代它三件「容易作弊、一定要避免」的事:
- 前視偏誤:判斷當下,絕不能偷看「未來才會知道」的資料。(例如要在星期五開盤判斷,就只能用到星期四收盤為止的資訊。)
- 樣本內/樣本外:把 15 年切成前半、後半,看傾向在「沒看過的後半」還成不成立。
- 多重比較:檢定的項目越多,越容易「矇到」假的顯著。所以還要看「解釋得通嗎」。
🔧 不會寫程式怎麼做這些? 我做的事,其實只是用中文(我自己用日文)跟 Claude Code 說:「幫我算黃金每天的報酬,按星期幾分組,算平均、勝率和 t 值,注意不要有前視偏誤。」剩下的 pandas、numpy 那些程式,全是它寫的。我負責『想問什麼』,它負責『算給我看』。


第一個發現:黃金的「星期五」和「一月」特別強
最先檢驗的,是最經典的「季節性」── 行情會不會在特定的星期幾、月份,有固定的傾向?
結果,星期五跳了出來。

| 星期 | 平均日報酬 | 勝率 | t 值 |
|---|---|---|---|
| 一 | -0.006% | 49.9% | -0.15 |
| 二 | +0.021% | 52.8% | 0.59 |
| 三 | +0.013% | 52.7% | 0.39 |
| 四 | +0.038% | 50.6% | 1.06 |
| 五 | +0.106% | 56.2% | 2.73 ★ |
星期一到星期四,平均報酬幾乎貼著零、勝率約 50%(跟丟銅板沒兩樣)。只有星期五,平均 +0.106%、勝率 56.2%、t 值 2.73,明顯不像偶然。
月份的分析裡,則是一月最突出(+0.166%、t 值 2.99)。這兩個,剛好都和市場上早就有人談過的「黃金一月行情」「週末前的避險買盤」吻合 ── 既有統計支持、又解釋得通,可信度就高。
💡 為什麼這篇選「星期五」不選「一月」? 因為一月一年只有一次,一年只能交易一次,太難累積經驗、也太難驗證。星期五一年有約 52 次,機會多、好驗證、好學習,更適合當作第一個題材。

深挖星期五:優勢全在「白天」,留倉過夜沒用
選定星期五後,下一個問題是:「優勢」到底發生在哪個時段?
我把星期五的報酬,拆成兩段來看:
- 隔夜:星期四收盤 → 星期五開盤(也就是「抱著過夜」賺賠的部分)
- 日內:星期五開盤 → 星期五收盤(也就是「白天持有」賺賠的部分)
| 區段 | 平均報酬 | 勝率 | t 值 |
|---|---|---|---|
| 隔夜(四收→五開) | +0.001% | 38.0% | 0.39 |
| 日內(五開→五收) | +0.105% | 56.4% | 2.68 ★ |
結果很乾脆:星期五的優勢,全部集中在「白天」。 抱著過夜(隔夜)那段,勝率只有 38%,幾乎是零、甚至偏負。
這直接給了我們策略的雛形:
🏁 規則雛形:星期五「開盤買進、收盤賣出」,當天結清、不留倉過夜。


星期五效應的真面目:它其實是「逢低反彈」
接著是這篇最關鍵的發現。我請 Claude Code 用「星期五開盤時就已經知道的資訊」(沒有前視偏誤)去分組,想看看「什麼樣的星期五特別強」。
答案非常清楚 ── 關鍵在「前一天的方向」。
| 條件(星期五開盤時已知) | 平均日內報酬 | 勝率 | 樣本數 | t 值 |
|---|---|---|---|---|
| 星期四下跌 → 星期五 | +0.168% | 62.1% | 388 | 2.71 ★ |
| 星期四上漲 → 星期五 | +0.045% | 51.0% | 388 | 0.94 |
| 最近 5 天下跌 → 星期五 | +0.156% | 59.6% | 354 | 2.74 ★ |
當星期四是「下跌」時,星期五的反彈特別強(勝率 62%)。反過來,如果星期四在漲,星期五的優勢幾乎消失(勝率 51%,跟丟銅板一樣)。
換句話說,「星期五效應」的真面目,是「逢低反彈/週末前的回補買盤」:行情前一天跌了,星期五容易拉回來一點。
💡 這一步為什麼重要? 因為它從「星期五會漲」這種模糊的迷信,變成了有道理可講的機制(跌深的反彈)。一個策略「解釋得通」,比「數字好看」更讓人安心 ── 因為你會知道它什麼時候會失效。
於是規則進化成:
規則(第二版):只挑「星期四下跌」的星期五,開盤買、收盤賣。


殘酷的回測現實:沒有停損,一次崩盤就吃掉十年
規則有了,接著就是回測(backtest)── 拿這個規則去跑過去 15 年,看實際的成績。我請 Claude Code 把成本(點差,保守抓來回 0.30 美元)也扣掉,用「淨值」來算。
先看「過濾」有沒有用 ── 比較「每個星期五都做」vs「只做星期四下跌的星期五」:
| 策略 | 勝率 | 平均 | 獲利因子 | 最大回撤 |
|---|---|---|---|---|
| 每個星期五(基準) | 55.2% | +0.088% | 1.26 | -16.0% |
| 只做星期四下跌 | 60.3% | +0.149% | 1.45 | -9.8% |
過濾確實有效:勝率從 55% 升到 60%、獲利因子(賺賠比)從 1.26 升到 1.45、最大回撤幾乎砍半。「少做一半、但做的品質更好」。
但是 ── 當我把它換算成「實際用 0.01 手(最小單位)操作」的金額時,看到了一個嚇人的數字:

| 星期四下跌策略・無停損(0.01 手、15.3 年) | 數字 |
|---|---|
| 總損益 | +$738 |
| 勝率 | 60.3% |
| 最慘的一筆 | -$508 |
| 最大回撤 | -$529 |
勝率有 60%,總共也是賺的。但最慘的一筆,單筆就賠了 508 美元 ── 在一個只有 1,000 美元的帳戶裡,這一筆就是 -50%。
⚠️ 這就是「尾部風險」。 平常贏面不錯,但只要遇到一個「崩盤的星期五」(恐慌性下殺,反彈不來),一筆就能吃掉你好幾年累積的獲利。 沒有保護機制的策略,不能用。

加上 ATR 停損:意外地「攻守兼得」
解法是大家都聽過的兩個字 ── 停損。我用 ATR(平均真實區間,一個衡量「最近行情波動多大」的指標)來設停損點:在開盤價下方 K × ATR 的地方掛停損,跌到就先認賠出場。
我請 Claude Code 把 K 從寬(2.0)一路測到窄(0.5),看哪個最好。結果出乎意料 ── 停損不只降低風險,連報酬都一起變好了。

| 停損(K×ATR) | 勝率 | 總損益 | 獲利因子 | 最慘一筆 | 夏普值 |
|---|---|---|---|---|---|
| 無停損 | 60.3% | +$738 | 1.26 | -$508 | 0.61 |
| 1.5×ATR | 60.3% | +$1,016 | 1.40 | -$218 | 0.74 |
| 1.0×ATR | 59.5% | +$1,187 | 1.51 | -$161 | 0.84 |
| 0.75×ATR | 57.7% | +$1,229 | 1.55 | -$121 | 0.87 |
| 0.5×ATR | 51.5% | +$1,077 | 1.52 | -$81 | 0.72 |
以 1.0×ATR 為例:總損益從 $738 升到 $1,187(+61%)、夏普值從 0.61 升到 0.84、獲利因子升到 1.51,同時最慘一筆從 -$508 縮到 -$161。
為什麼會「攻守兼得」?因為停損早早砍掉了那些「崩盤星期五」── 那些單筆巨虧,本來就是在拖累總成績。把它們切掉,風險和報酬就一起改善了。
💡 但別以為越緊越好。 停損收到 0.5×ATR 時,勝率掉到 51%、有 35% 的交易被洗出場(whipsaw),成績反而變差 ── 停損太緊,會在正常的波動裡被「巴來巴去」。甜蜜點落在 0.75~1.0×ATR。 不過先打個預防針:這個甜蜜點是在「同一份 15 年數據」上挑出來的,所以它不是永久最佳參數,而是下一步要用樣本外(out-of-sample)和實盤模擬繼續驗證的「候選範圍」。

最重要的修正:「優勢在衰退」其實是錯覺
在加停損之前,我一度擔心一件事:把 15 年切成前後兩半,後半(2018 年之後)的優勢,看起來在衰退(獲利因子只剩 1.10)。難道這個策略已經失效了?
但加上停損後,真相浮現了:
| 星期四下跌策略 | 無停損 | 1.0×ATR 停損 |
|---|---|---|
| 前半(~2018)總損益 | +$542 | +$546 |
| 後半(2018~)總損益 | +$196 | +$640 |
| 後半 最慘一筆 | -$508 | -$161 |
| 後半 獲利因子 | 1.10 | 1.41 |
看出來了嗎?後半「看起來衰退」,根本不是優勢消失,而是那幾筆「沒有控制的崩盤虧損」(-$508)在拖累。 一旦加上停損切掉尾部,後半立刻變回健康($196 → $640、獲利因子 1.10 → 1.41)。
而且勝率從頭到尾都很穩定(前半 61%、後半 59%,幾乎沒變)。崩掉的從來不是「贏的次數」,只是「輸的時候輸太多」── 而停損,正好治的就是這個。
🔑 這就是數據誠實的地方。 如果只看表面,我可能會誤判「策略過時了」而放棄一個好東西;也可能反過來,被漂亮的總報酬騙過去、忽略了那筆 -$508 的致命傷。把數據攤開、一層層追問,才看得到真相。
確定!這就是「AI 要超越的基準線」
繞了一大圈,我們得到了一個有根據、扛得住回測、前後半都穩的策略核心:
✅ 基準策略 「星期四下跌 → 星期五開盤買進 → 用 1.0×ATR 停損保護,否則收盤平倉」(0.01 手、不留倉)
15.3 年回測(已扣成本): 總損益 +$1,187|勝率 59.5%|獲利因子 1.51|夏普值 0.84|最慘一筆 -$161 ── 而且前半、後半都成立。
這個「樸素但扎實」的基準,就是下一篇 AI 要挑戰、要超越的對手。
⚠️ 先把現實講清楚:這不是印鈔機
我必須誠實地說兩件事:
- 這個優勢是「中庸」的,不是暴利。 0.01 手(最小單位)一年大約賺 50~80 美元。它真實存在、扛得住 15 年回測,但它不會讓你一夜致富。它是「微小但可靠」的那種優勢。
- 在現在的高價、高波動環境,風險不小。 黃金漲到 4,000 美元以上後,1×ATR 大約等於 100~150 美元。也就是說,即使只做 0.01 手、即使有停損,最慘一筆也可能是 -$161,等於 1,000 美元帳戶的 16%。 所以「極端波動的星期五」必須避開。
而「判斷一個下跌,是『能買的逢低』還是『該閃的崩盤』;判斷波動是不是極端到該收手」── 這種需要看當下盤面、靈活拿捏的事,正是死板的規則做不到、而 AI 擅長的。

下一篇預告:讓 AI(Claude)來「挑單」
所以第三篇,我們要做的就是:
🤖 第三篇:讓 AI(Claude)扮演「最後的把關者」。 在「星期四下跌的星期五」這個機械條件之上,讓 AI 看當下的盤面(趨勢、波動、最近的走勢、有沒有重大事件),判斷「這個逢低能不能買」,回答「進場/略過+信心程度」 ── 目標是把上面那條基準線,跑得更穩、把最慘的幾筆閃掉。但有一點我會堅持:AI 的判斷也必須被規則化、被記錄、被回測,跟前面的策略一樣用數據檢驗,而不是憑感覺臨時加碼。
不靠直覺、用數據打地基,再用 AI 補上「臨場判斷」── 這就是不會寫程式的我,想打造的黃金交易系統。
第二篇總結
✅ 用 15 年數據、靠 t 值,找出黃金真實存在的「星期五效應」
✅ 看穿它的真面目是「逢低反彈」,並用「星期四下跌」當過濾條件
✅ 回測揭露「沒停損會被一次崩盤毀掉」,加上 1.0×ATR 停損後「攻守兼得」
✅ 確定了一條前後半都成立的基準策略,當作下一篇 AI 要超越的對手
🔑 這次的檢查點 重點不是「我找到了一個會賺的策略」,而是「我用數據、而不是用感覺,做出了每一個決定」。這個過程本身,不會寫程式的你,靠 AI 也複製得來。
⚠️ 再次提醒:本系列不是投資招攬。黃金(XAUUSD)波動很大,自動交易有風險。文中所有數字都是歷史回測,不代表未來。我自己也是先從不動錢的「讀取」與「模擬」做起,實際下單會等到完全理解後,才用最小單位謹慎進行。
下一篇,我們就讓 AI 真正開始「做判斷」。
