GaiaEx AcademyGaiaEx Academy
用 GaiaEx API 搭建 AI 交易機器人
開發者AI 與機器學習14 min read

用 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 追高。無論你是狂喜還是恐懼,它都執行同一套計劃——而那恰恰是人最容易做出最糟糕判斷的時刻。
  • 速度與一致性。機器人能同時評估幾十種資產,並在毫秒級別做出反應,而且它永遠不會「忘記」設定止損。

但請注意這份清單裡沒有什麼:穩賺不賠。機器人只是一種更快、不知疲倦、沒有情緒的執行策略的方式。如果策略本身是糟糕的,機器人只會更快、更穩定地虧錢。自動化會放大你擁有的任何優勢——也會放大你身上的任何缺陷。

關鍵洞見:交易機器人不會去發現優勢——它只是執行優勢。智慧存在於策略和風險規則裡,而不在於「是機器在按按鈕」這件事上。「AI」是策略內部的一件工具,永遠不是策略的替代品。

機器人真正在跑的策略

在你碰機器學習之前,先搞懂那些撐起絕大多數真實機器人的主力策略。每一種都假設了某種特定的市場——並在市場性格改變時悄無聲息地失效。

  • 網格機器人(Grid bots)在一個價格區間內鋪出一排買單和賣單。隨著價格來回震盪,機器人在每一格上低買高賣。在橫盤、來回拉鋸的市場裡堪稱絕妙——但在強趨勢裡就是一場災難:價格跑出網格,你被套在一堆虧損單上(或者乾脆錯過整段行情)。
  • DCA(定投)機器人按固定間隔買入固定金額,很多還會在更低的價位加上「補倉單」,把平均買入價往下拉。在下跌中累積倉位很不錯——但如果價格一直跌,你就一直在接飛刀,平均成本只會不停淌血。
  • 趨勢跟蹤 / 動量機器人(Trend-following / momentum bots)用均線交叉之類的訊號去追強勢、拋弱勢。它們在乾淨的趨勢裡大賺,卻在區間震盪的市場裡被「來回打臉」——死於一千次小虧損。
  • 套利機器人(Arbitrage bots)利用同一資產在不同場所的不同價格,便宜處買進、貴處賣出。數學很簡單,工程卻極其殘酷。這是一場純粹的速度遊戲,微秒、手續費和轉帳延遲決定了那份「白撿」的利潤是真實的還是海市蜃樓。
  • 做市機器人(Market-making bots)同時報出買價和賣價,賺取價差,提供流動性。在平靜的市場裡有利可圖,在劇烈的市場裡卻很危險——一次突然的波動會以快於你撤單的速度把你成交在錯誤的一側。

藏在這份清單裡的教訓是:每一種策略都是在賭你正身處哪一種市場。網格機器人無所謂「好」或「壞」——它適合區間,卻不適合趨勢。自動化交易中最難的問題不是把機器人搭出來;而是知道它的前提假設何時不再成立。

EACH STRATEGY BETS ON A MARKET REGIME Match the bot to the market — or it quietly breaks Sideways / Range Grid · market-making Trending Trend / momentum · DCA Price gaps A B buy A → sell B Arbitrage (speed) Run a grid in a trend, or a trend bot in chop, and the same code bleeds money
沒有全天候通用的機器人。每種策略都假設了一種市場狀態;真正的本事,是察覺這種狀態何時結束。

機器人實際是怎麼接線的

人們說「AI 交易機器人」時,彷彿它是一個指令碼。但在生產環境裡它是一條流水線:攝取、特徵、模型、訊號、執行、風險——每一塊都可以替換,而不必把整個技術棧重新接線。這樣搭建並不是為了學術上的整潔;而是為了讓你在凌晨 3 點、實盤盈虧與回測背離、你需要弄清是哪一跳出了問題時,還能保持理智。

跟著一個單獨的決策走一遍它的路徑:

  • 攝取(Ingest)從交易所拉取實時市場資料——價格、成交、訂單簿。GaiaEx 透過 REST 提供下單和餘額介面,透過 WebSocket 提供訂單簿和成交資料。
  • 特徵(Features)把原始數字變成有意義的輸入:波動率、動量、資金費率、訂單簿失衡。
  • 模型(Model)(規則或 ML)讀取這些特徵,形成一個觀點。
  • 訊號(Signal)把那個觀點轉成一個具體的訂單:方向、規模、價格。
  • 執行(Execution)把訂單發往交易所,處理重試和確認。
  • 風險(Risk)把這一切包裹起來——而且它對其他每一個階段都擁有否決權。

這套紀律的核心,是讓每個階段都確定性可復現,並且全程記錄日誌。給每個訊號打上一個 ID,給每個訂單打上一個客戶端 ID,給每一跳蓋上一個延遲時間戳。當出問題時——它一定會出問題——你希望讀一遍日誌就能看到現實究竟在哪裡與計劃背離,而不是靠猜。

AI TRADING PIPELINE Typical data path: feed → features → model → risk → exchange API Ingest Features Model Signal Exec Risk / kill Logs + metrics at every hop (latency ms, signal ID, order client id) Risk wraps execution: size caps, daily loss, correlation checks
模組化的各個階段讓你可以替換模型或交易場所,而不必重寫攝取或風險模組。

先用規則,再上機器學習

炒作的人說「用 AI」。專業的人卻說:先從你能用大白話讀懂的規則開始。RSI 上的閾值、一次 MACD 指標交叉、成交量高於其移動平均線(均線)。規則容易記日誌、容易解釋,出問題時也容易追責。如果你那套基於規則的策略都賺不到錢,神經網路也救不了它——它只會以一種你沒法除錯的方式虧錢。

當模式過於微妙、或維度太高、手寫規則無能為力時,機器學習才配得上它的位置:在表格特徵上用梯度提升樹,在價格 K 線序列上用序列模型。用得好,ML 能從雜亂的輸入裡榨出訊號。但它有一種惡毒的失效模式,叫漂移(drift):實盤市場慢慢地不再像模型訓練所用的資料,而表現就在無聲無息中衰減。模型依舊吐出自信滿滿的預測——只是它們現在錯了,而且沒有任何地方報錯。

這就是為什麼成熟的交易臺會跑一套混合(hybrid)方案:模型提議,而硬編碼的規則和風險上限否決。AI 可以建議一筆交易;但它永遠無法越過每日虧損上限或倉位上限。機器是一名直覺不錯、卻無權拿公司去下注的初級分析師。

當心過擬合。一個被調到能精準命中過去的模型,往往只是把噪聲背了下來。解藥是誠實的驗證:在模型從未見過的資料上測試(樣本外),用前進式分析(walk-forward),並剋制住「再加一個引數就好」的衝動。如果一個策略只在你最佳化它的那段確切時期裡閃閃發光,那它什麼也沒學到——它是在作弊,而市場遲早會來討帳。

值得計算的特徵

模型的聰明程度,取決於你餵給它的輸入。光有原始價格很少夠用——這門手藝叫特徵工程(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 金鑰,永遠不該被允許把資金轉出平臺。

RISK CHECK ORDER Example: evaluate before every child order (numbers illustrative) Signal OK? Size ≤ 5% Daily P&L > −3%? Submit / Halt Perps: add funding drag and liquidation distance to the same gate Kill switch = cancel all + flat (test monthly)
風險作為閘門執行在每一筆訂單上,而不是事後的一句道歉。

騙局:當機器人本身就是陷阱

有一種風險,那些光鮮的機器人廣告從不提起:面向散戶兜售的「AI 交易機器人」中,有相當大一部分根本不是交易工具——它們就是那場搶劫本身。誠實的教育必須把這一點講明白,因為大多數因「機器人」而虧錢的人,錢就是這麼沒的。

套路總在重複:

  • 保證收益型機器人。「我們的 AI 每天穩賺 2%,零風險。」沒有任何正當的策略能保證收益;市場按定義就是不確定的。一個穩定、不會虧的利潤承諾,就是一個龐氏騙局的承諾。
  • 許可權過大的 API 金鑰。許多詐騙機器人要求你連線一把帶提幣許可權的 API 金鑰。你照做的那一刻,他們就能掏空帳戶。2025 年底,Binance 記錄了多起經核實的帳戶被黑案例,以及五位數的損失,追查下來都源於未經授權的第三方機器人乾的正是這件事。
  • 不透明、未經審計的程式碼。閉源、沒有安全審計的第三方機器人可能藏著後門。在為時已晚之前,你根本看不到程式碼拿你的金鑰做了什麼。
  • 對敲刷量、刷交易量的機器人會悄悄違反交易所規則——害你的帳戶被限制或封停,而損失無人理賠。

防禦措施很具體,值得記牢。永遠不要給交易機器人提幣許可權——把 API 金鑰的範圍限定為僅交易。使用提幣地址白名單,讓資金只能轉到你預先批准過的地址。開啟強力的 2FA(驗證器 App 或硬體安全金鑰,不要用簡訊)。優先選擇官方的、經過審計的工具,而不是那些把天上的月亮都許給你的匿名 Telegram 機器人。還要記住金融界最古老的那條規則:如果好得不像真的,那它就是騙局,而「AI」只是它的戲服。

誠實的結論:最危險的交易機器人不是一個有 bug 的,而是一個精心打造、專為偷你錢而設計的。任何想要提幣許可權、保證盈利或藏起程式碼的機器人,在被證明清白之前都當作有敵意來對待。GaiaEx 的 MPC 託管和範圍化許可權的存在,正是為了讓一個交易整合能夠下單,卻永遠無法捲走你的錢。

從模擬盤到實盤,而不爆倉

你有了策略、乾淨的特徵、一個執行層,還有風險閘門。誘惑就是直接用真實倉位切到實盤。別這麼幹。那片堆滿了死掉的機器人的墳場裡,滿是在紙面上看著完美、卻毫無準備地撞上現實的策略。

有紀律的路徑:

  • 用完全相同的程式碼路徑做模擬交易(paper trade)。讓實盤的下單邏輯跑在實時資料上,但不動本金,至少跑上幾周。把成交和時間戳與策略的預期對比一下。如果模擬盤和回測已經對不上,就停下來,弄清楚原因。
  • 以最小規模上實盤。第一個實盤階段的目標不是盈利——而是測量真相:真實的滑點、真實的手續費、真實的延遲。許多團隊在信任這些數字之前,會假設有一個相對回測 30–50% 的折讓
  • 只有當實盤與模型相符時才擴大規模。當真實的滑點和手續費與你的假設對得上時,再逐步加大規模。如果對不上,那就是你的模型在騙你——在給它投錢之前先修好它。

還要在糟糕的日子到來之前就為它做好打算。閃崩和 API 宕機不是假設——它們是已經排好期的事件,只是你不知道日期罷了。如果你唯一的應急預案是「我早上會注意到」,那你根本沒有應急預案。在你的交易所支援的地方,把斷連即平倉(flatten-on-disconnect)自動化,這樣一次掉線就不會在你睡覺時留下一個裸露的倉位在跑。

這套紀律,一句話說完:誠實地回測,耐心地模擬交易,小規模上實盤,緩慢地擴張,並讓風險——而不是希望——來決定你的倉位大小。一個搭配出色風險控制的平庸策略能活下來;一個毫無風險控制的精彩策略最終活不下來。