
用 GaiaEx API 搭建 AI 交易機器人
從訊號生成到執行——一條完整的流水線
那個三年裡賺了 $0 的機器人
2021 年,一位 23 歲的工程師釋出了一份刷爆網路的回測:他的加密機器人在兩年的歷史資料上把 $1,000 變成了 $420 萬。資金曲線沿著完美的 45 度直線一路向上。陌生人紛紛求他給程式碼。他辭了職,向朋友募了錢,正式上了實盤。
它每一週都在虧錢。不到四個月,帳戶就跌了 60%,他把它關掉了。
機器人本身並沒有「出錯」。程式碼執行得天衣無縫。問題在於,這份回測被反覆調參,直到完美貼合過去——而過去從不會一模一樣地重演。這個策略只是把 2019 年和 2020 年背了下來,並沒有學到任何通用的東西。一旦遇到它沒見過的行情,它就完全不知道該怎麼辦了。
這是關於 AI 交易機器人最重要的一條真相,而幾乎沒人會把它放在開頭講:機器人的好壞,取決於它周圍那套紀律。那些花哨的部分——模型、AI——大概只佔 20% 的工作量。另外 80% 是資料衛生、執行管線,以及在你睡覺時阻止一個 bug 或一次閃崩掏空你帳戶的風險控制。這節課要教的就是那 80%。
AI 交易機器人到底是什麼
剝掉營銷的外殼,一個交易機器人不過是一段軟體,它盯著市場,並按規則下單——不需要人去點按鈕。所謂「AI」,是指其中一部分規則是從資料裡學來的,而不是手寫的,但它乾的活兒是一樣的:把資訊變成決策,自動地、全天候地進行。
人們用機器人,有三個實在的理由:
- 市場永不打烊。加密市場 24/7/365 全天交易。沒有哪個人能在週日凌晨 4 點盯著 BTC;機器人可以。
- 沒有情緒。機器人不會在底部恐慌拋售,也不會在頂部 FOMO 追高。無論你是狂喜還是恐懼,它都執行同一套計劃——而那恰恰是人最容易做出最糟糕判斷的時刻。
- 速度與一致性。機器人能同時評估幾十種資產,並在毫秒級別做出反應,而且它永遠不會「忘記」設定止損。
但請注意這份清單裡沒有什麼:穩賺不賠。機器人只是一種更快、不知疲倦、沒有情緒的執行策略的方式。如果策略本身是糟糕的,機器人只會更快、更穩定地虧錢。自動化會放大你擁有的任何優勢——也會放大你身上的任何缺陷。
機器人真正在跑的策略
在你碰機器學習之前,先搞懂那些撐起絕大多數真實機器人的主力策略。每一種都假設了某種特定的市場——並在市場性格改變時悄無聲息地失效。
- 網格機器人(Grid bots)在一個價格區間內鋪出一排買單和賣單。隨著價格來回震盪,機器人在每一格上低買高賣。在橫盤、來回拉鋸的市場裡堪稱絕妙——但在強趨勢裡就是一場災難:價格跑出網格,你被套在一堆虧損單上(或者乾脆錯過整段行情)。
- DCA(定投)機器人按固定間隔買入固定金額,很多還會在更低的價位加上「補倉單」,把平均買入價往下拉。在下跌中累積倉位很不錯——但如果價格一直跌,你就一直在接飛刀,平均成本只會不停淌血。
- 趨勢跟蹤 / 動量機器人(Trend-following / momentum bots)用均線交叉之類的訊號去追強勢、拋弱勢。它們在乾淨的趨勢裡大賺,卻在區間震盪的市場裡被「來回打臉」——死於一千次小虧損。
- 套利機器人(Arbitrage bots)利用同一資產在不同場所的不同價格,便宜處買進、貴處賣出。數學很簡單,工程卻極其殘酷。這是一場純粹的速度遊戲,微秒、手續費和轉帳延遲決定了那份「白撿」的利潤是真實的還是海市蜃樓。
- 做市機器人(Market-making bots)同時報出買價和賣價,賺取價差,提供流動性。在平靜的市場裡有利可圖,在劇烈的市場裡卻很危險——一次突然的波動會以快於你撤單的速度把你成交在錯誤的一側。
藏在這份清單裡的教訓是:每一種策略都是在賭你正身處哪一種市場。網格機器人無所謂「好」或「壞」——它適合區間,卻不適合趨勢。自動化交易中最難的問題不是把機器人搭出來;而是知道它的前提假設何時不再成立。
機器人實際是怎麼接線的
人們說「AI 交易機器人」時,彷彿它是一個指令碼。但在生產環境裡它是一條流水線:攝取、特徵、模型、訊號、執行、風險——每一塊都可以替換,而不必把整個技術棧重新接線。這樣搭建並不是為了學術上的整潔;而是為了讓你在凌晨 3 點、實盤盈虧與回測背離、你需要弄清是哪一跳出了問題時,還能保持理智。
跟著一個單獨的決策走一遍它的路徑:
- 攝取(Ingest)從交易所拉取實時市場資料——價格、成交、訂單簿。GaiaEx 透過 REST 提供下單和餘額介面,透過 WebSocket 提供訂單簿和成交資料。
- 特徵(Features)把原始數字變成有意義的輸入:波動率、動量、資金費率、訂單簿失衡。
- 模型(Model)(規則或 ML)讀取這些特徵,形成一個觀點。
- 訊號(Signal)把那個觀點轉成一個具體的訂單:方向、規模、價格。
- 執行(Execution)把訂單發往交易所,處理重試和確認。
- 風險(Risk)把這一切包裹起來——而且它對其他每一個階段都擁有否決權。
這套紀律的核心,是讓每個階段都確定性可復現,並且全程記錄日誌。給每個訊號打上一個 ID,給每個訂單打上一個客戶端 ID,給每一跳蓋上一個延遲時間戳。當出問題時——它一定會出問題——你希望讀一遍日誌就能看到現實究竟在哪裡與計劃背離,而不是靠猜。
先用規則,再上機器學習
炒作的人說「用 AI」。專業的人卻說:先從你能用大白話讀懂的規則開始。RSI 上的閾值、一次 MACD 指標交叉、成交量高於其移動平均線(均線)。規則容易記日誌、容易解釋,出問題時也容易追責。如果你那套基於規則的策略都賺不到錢,神經網路也救不了它——它只會以一種你沒法除錯的方式虧錢。
當模式過於微妙、或維度太高、手寫規則無能為力時,機器學習才配得上它的位置:在表格特徵上用梯度提升樹,在價格 K 線序列上用序列模型。用得好,ML 能從雜亂的輸入裡榨出訊號。但它有一種惡毒的失效模式,叫漂移(drift):實盤市場慢慢地不再像模型訓練所用的資料,而表現就在無聲無息中衰減。模型依舊吐出自信滿滿的預測——只是它們現在錯了,而且沒有任何地方報錯。
這就是為什麼成熟的交易臺會跑一套混合(hybrid)方案:模型提議,而硬編碼的規則和風險上限否決。AI 可以建議一筆交易;但它永遠無法越過每日虧損上限或倉位上限。機器是一名直覺不錯、卻無權拿公司去下注的初級分析師。
值得計算的特徵
模型的聰明程度,取決於你餵給它的輸入。光有原始價格很少夠用——這門手藝叫特徵工程(feature engineering):把 OHLCV、訂單簿和衍生品資料,變成真正承載資訊的訊號。
在一張永續合約交易臺上,重要的特徵遠不止收盤價。資金費率是一筆真實的、反覆發生的成本或收入,它能把一個「賺錢」的策略翻成負的。多個時間跨度上的收益率能捕捉跨週期的動量。成交量比率能標記出異常活動。訂單簿失衡——買盤深度與賣盤深度之比——是一個短週期的微觀結構訊號,前提是你訂閱了 L2 資料。跨資產背景(ETH 相對 BTC 如何運動)則增添了一個全市場的視角。
有一條紀律把業餘者和專業者區分開來:砍掉不掙錢的特徵。如果一個特徵的置換重要性接近於零,你就是在為噪聲付出延遲和過擬合風險。更少、更強的特徵,幾乎每一次都勝過把一切都塞進去的模型。
def engineer_features(df):
df["log_ret"] = np.log(df["close"] / df["close"].shift(1))
df["vol_20"] = df["log_ret"].rolling(20).std()
df["vol_ratio"] = df["volume"] / df["volume"].rolling(20).mean()
return df.dropna()
還要當心特徵工作中那條頭號大忌:前視偏差(look-ahead bias)。如果任何特徵不小心用到了在決策時刻本不存在的資訊——一根未來的 K 線、一個同週期的收盤價——你的回測會光彩奪目,而你的實盤帳戶不會。每一個特徵都必須只用你在那個時刻本該擁有的資料來計算,沒有例外。
執行、簽名,以及那些會讓你真金白銀破財的無聊 bug
那個毫不起眼的執行層,正是錢悄悄漏掉的地方。做對了沒人會注意;做錯了,一個完美的訊號就變成了實打實的虧損。
- 訂單型別。當你在乎價格時用限價單——你設定你能接受的最差價格。把市價單留給真正緊急的時刻,並且要清楚它會付出價差加滑點,這在稀薄或快速的市場裡可能極其慘烈。
- 冪等性(Idempotency)。永遠附上一個客戶端訂單 ID。網路會抽風;一個沒帶 ID 的重試 POST 可能讓你的倉位翻倍。有了 ID,交易所就能識別出重複請求並忽略它。這一個習慣,就能防住一整類災難性的 bug。
- 帶退避的重試。遇到 429(被限頻)或 5xx(伺服器錯誤)時,用指數退避(exponential backoff)等待後再重試——別把 API 錘到把你封禁。
- 時鐘紀律。簽名請求通常會把 HTTP 方法、路徑、請求體和一個毫秒級時間戳拼接成一個 HMAC 簽名。交易所會拒絕時鐘偏差過大的請求,所以要在做簽名的那臺機器上執行 NTP。一個漂移的時鐘會讓你的每一筆訂單都被拒絕,而你完全不知道為什麼。
這些都不是「AI」。但它們全都決定了你的 AI 究竟能不能賺到一塊錢。回測與實盤帳戶之間的鴻溝,大多就出在這一層——手續費、滑點、延遲,以及各種邊界情況——這恰恰是接下來兩節存在的理由。
風險先於 Alpha
這是那條把能活下來的交易者和會爆倉的交易者區分開的操作順序:風險是套在每一筆訂單上的閘門,而不是事後的一句道歉。你要在調校引擎之前先設計好煞車。
那些不容商量的控制項:
- 倉位上限。限制單一標的的敞口——通常是權益的 2–5%——這樣沒有任何一筆交易能把你毀掉。
- 止損。用 ATR(自適應波動率)或固定跳動點來設定,並把它們作為真實的訂單掛出去,而不是停留在你腦子裡的意圖。
- 每日虧損熔斷。如果帳戶當天虧了,比如說 3%,機器人就停止交易。就這麼停。這一條規則救下的帳戶,比任何精巧的訊號都多,因為它給一個 bug 或一個糟糕的日子所能造成的傷害封了頂。
- 一鍵熔斷開關(kill switch)。一個動作就能撤銷所有掛單並平掉每一個倉位。每月測試一次。你需要它的那一天,正是發現它壞了的最糟糕的一天。
對永續合約,把資金費率拖累和強平距離也併入同一道閘門——一個在價格上「沒事」的倉位,仍可能正在被資金費率放血,或者距離強平只剩一根插針。
託管也屬於這場對話。GaiaEx 使用 MPC(多方計算),把金鑰材料拆分到多方之間,於是機器人永遠不會把一把原始私鑰存放在某個檔案裡、讓攻擊者有機可乘。而且交易許可權可以與提幣許可權分開授予——所以你機器人用來下單的那把 API 金鑰,永遠不該被允許把資金轉出平臺。
騙局:當機器人本身就是陷阱
有一種風險,那些光鮮的機器人廣告從不提起:面向散戶兜售的「AI 交易機器人」中,有相當大一部分根本不是交易工具——它們就是那場搶劫本身。誠實的教育必須把這一點講明白,因為大多數因「機器人」而虧錢的人,錢就是這麼沒的。
套路總在重複:
- 保證收益型機器人。「我們的 AI 每天穩賺 2%,零風險。」沒有任何正當的策略能保證收益;市場按定義就是不確定的。一個穩定、不會虧的利潤承諾,就是一個龐氏騙局的承諾。
- 許可權過大的 API 金鑰。許多詐騙機器人要求你連線一把帶提幣許可權的 API 金鑰。你照做的那一刻,他們就能掏空帳戶。2025 年底,Binance 記錄了多起經核實的帳戶被黑案例,以及五位數的損失,追查下來都源於未經授權的第三方機器人乾的正是這件事。
- 不透明、未經審計的程式碼。閉源、沒有安全審計的第三方機器人可能藏著後門。在為時已晚之前,你根本看不到程式碼拿你的金鑰做了什麼。
- 對敲刷量、刷交易量的機器人會悄悄違反交易所規則——害你的帳戶被限制或封停,而損失無人理賠。
防禦措施很具體,值得記牢。永遠不要給交易機器人提幣許可權——把 API 金鑰的範圍限定為僅交易。使用提幣地址白名單,讓資金只能轉到你預先批准過的地址。開啟強力的 2FA(驗證器 App 或硬體安全金鑰,不要用簡訊)。優先選擇官方的、經過審計的工具,而不是那些把天上的月亮都許給你的匿名 Telegram 機器人。還要記住金融界最古老的那條規則:如果好得不像真的,那它就是騙局,而「AI」只是它的戲服。
從模擬盤到實盤,而不爆倉
你有了策略、乾淨的特徵、一個執行層,還有風險閘門。誘惑就是直接用真實倉位切到實盤。別這麼幹。那片堆滿了死掉的機器人的墳場裡,滿是在紙面上看著完美、卻毫無準備地撞上現實的策略。
有紀律的路徑:
- 用完全相同的程式碼路徑做模擬交易(paper trade)。讓實盤的下單邏輯跑在實時資料上,但不動本金,至少跑上幾周。把成交和時間戳與策略的預期對比一下。如果模擬盤和回測已經對不上,就停下來,弄清楚原因。
- 以最小規模上實盤。第一個實盤階段的目標不是盈利——而是測量真相:真實的滑點、真實的手續費、真實的延遲。許多團隊在信任這些數字之前,會假設有一個相對回測 30–50% 的折讓。
- 只有當實盤與模型相符時才擴大規模。當真實的滑點和手續費與你的假設對得上時,再逐步加大規模。如果對不上,那就是你的模型在騙你——在給它投錢之前先修好它。
還要在糟糕的日子到來之前就為它做好打算。閃崩和 API 宕機不是假設——它們是已經排好期的事件,只是你不知道日期罷了。如果你唯一的應急預案是「我早上會注意到」,那你根本沒有應急預案。在你的交易所支援的地方,把斷連即平倉(flatten-on-disconnect)自動化,這樣一次掉線就不會在你睡覺時留下一個裸露的倉位在跑。