分類
平台
難度
入門
適用情境
MT5 操作EA 評估

虛擬專用伺服器

虛擬專用伺服器(VPS)是一台租來的遠端電腦,全天候讓 MetaTrader 保持開啟——當你自己的機器休眠或斷線時,EA 依然在交易,而且它離經紀商的伺服器更近。

亦稱:VPS, 交易 VPS, MT5 VPS, 虛擬主機, VPS 主機, 虛擬伺服器

更新於 · 審閱於

一句話講清

一台放在資料中心的電腦,唯一的工作就是讓 MetaTrader 一直開著。它不會讓策略變好;它拿掉的是那些讓策略因為與交易無關的理由而停止運行的途徑。

為什麼重要

EA 只在它的終端執行時才存在,所以停機是把交易整筆抹掉,而不是把交易做賠。在這裡公開的 27 份紀錄上,全部回測進場有超過一半落在 08:00–16:59 UTC 之外——而最忙的單一小時 00:00 UTC,在東京是早上九點。

  • 錯過的進場什麼都不會記錄。那筆交易就是不存在,紀錄與回測開始偏離,卻沒有任何錯誤可以追。
  • Windows 按自己的排程重新啟動。在桌機上那是一次打斷;在一台持有部位的機器上,那是一次停機。
  • 延遲的重要性與獲利目標的大小成正比,而這裡的目標都放得很遠:沒有任何一份紀錄的中位數交易短於一小時。

在 MetaTrader 5 中

在 MT5 的什麼位置

  • 導覽器 → 在帳戶上按右鍵 → 註冊虛擬伺服器——MetaTrader 自家的虛擬主機,在終端裡租用
  • 工具 → 選項 → 智慧交易系統 → 允許演算法交易——每次重新啟動之後都要再確認一次的開關
  • 工具箱 → 日誌——本機的紀錄。託管的那個終端另外保有一份

EA 如何使用它

  • EA 裡什麼都不用改。VPS 是終端執行的地方,不是程式碼會去處理的東西。
  • 虛擬主機搬移的是一份快照。第三方 VPS 跑的是一個完整的終端——自訂檔案、DLL 或多個終端要的就是這個。
  • 上線時間只有在 EA 撐得過一次重新啟動時才有用。會在 OnInit 裡從未平倉部位重建狀態的能復原;把狀態放在記憶體裡的不能。

常見設定

設定項 常見取值 備註
延遲與記憶體 本目錄未測量 本站不公開任何主機端遙測資料,所以這裡寫出任何毫秒或記憶體數字都不會有來源。被測到的是持倉時間:1,362.6 分鐘。
作業系統 Windows Server MetaTrader 是一個 Windows 執行檔。相容層會加進它自己的故障模式。
主機時鐘 不要去動它 EA 讀的是 TimeCurrent(),也就是經紀商的時間,不是主機的時間。這 27 份紀錄裡有七份提供 GMT 偏移輸入參數,其中六份把它留在 0。

常見運行問題

  • 租約失效或信用卡過期,執行個體就在還持有部位的情況下被停用。
  • 終端啟動了,但帳戶沒有登入。圖表看起來正常;EA 卻閒著。

相關 MT5 函式

TerminalInfoInteger(TERMINAL_CONNECTED)
終端與交易伺服器之間是否還有連線——要記錄下來的那個心跳。
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
終端層級的許可。如果重新啟動之後演算法交易沒有開回來,它會是 false。
TimeCurrent()
經紀商伺服器時間——時段過濾器讀的是這個時鐘,不是主機的。本頁帳本上的時間戳是 UTC,那又是第三種東西。

範例

一小時的停機,對每個策略吃掉的年度佔比都不一樣,因為進場並不是平均分布的。

Sundial,落在單一 UTC 小時內的進場
557 筆中的 557 筆
Tradewind,同一項量測
6.12 %
27 份紀錄的中位數
14.85 %

在比較各家主機的上線時間數字之前,先問你的 EA 需要的是哪一個小時。

計算 Sundial 的 557 筆進場中,有 555 筆帶著 00:55 UTC 的時間戳

結果 同一個停機視窗抹掉了一整個策略,卻幾乎沒有擦到另一個

怎麼使用

把主機方案對準策略的持倉時間,而不是對準方案的價格。

區間 含義
中位數持倉短於 2 小時(27 份中的 2 份) 往返延遲會吃掉這段行情中看得見的一部分;挑經紀商所在的區域。
中位數持倉 2–24 小時(27 份中的 6 份) 一台在附近的基本執行個體就夠了;把錢花在重新啟動後的行為上。
中位數持倉超過一天(27 份中的 19 份) 延遲無關緊要。上線時間就是這筆採購的全部。
任何持倉時間,跑在家用機器上 只有在有人盯著的時候才行得通;這裡多數部位活得比開倉當天更久。
  • 把 MetaTrader 設成隨 Windows 啟動,然後刻意重新開機一次來驗證。確認帳戶重新登入了,而且演算法交易仍然是開著的。
  • 要量的是從 VPS 到經紀商交易伺服器的往返時間,不是從你桌上那台機器量。

經紀商提供的免費 VPS 方案都附帶最低餘額或每月交易量條件;先把資格條款讀完。

常見誤解

挑離自己最近的機房位置

真正要緊的那一段是從伺服器到經紀商。你一週連一次;EA 每一筆訂單都要連一次。

以為 MetaTrader 的虛擬主機會持續同步

它是在你下令時搬移一份快照。之後你在本機改了一個輸入參數,託管的那一份仍然拿舊值在交易。

在錯的時鐘上讀最忙的那個小時

本頁帳本的時間戳是 UTC。把 08:00–16:59 當成經紀商時間來讀,非上班時段的佔比就會從 54.28 % 變成 64.49 %。

深入說明

終端到底在什麼時候必須醒著

在 27 份公開紀錄、18,219 筆回測進場上量測數值
落在 08:00–16:59 UTC 之外的進場54.28 %
開倉與平倉落在不同日曆日的交易64.71 %
中位數持倉時間,全部交易1,362.6 分鐘
所有紀錄中最短的中位數持倉(Chrysalis)67.5 分鐘
帶有已設定的 GMT 偏移、夏令時間或時段小時輸入參數的紀錄27 份中的 8 份
每份紀錄每年的中位數進場數56.4

有兩列決定了這筆採購。全部進場有超過一半發生在一般上班時段之外,而接近三分之二的 部位活進了下一個日曆日——不過只有 48.36 % 真的跑超過 24 小時,因為日曆上的分界不是一段 時間長度。七份紀錄提供 GMT 偏移輸入參數,其中六份把它留在 0;那八份裡只有三份真的把 任何一個時鐘輸入參數設成非零值。把一個終端搬到別的區域,不會改變它交易的時點。

錯過一小時不等於錯過一小時

中位數的那份紀錄,把 14.85 % 的進場放在它單一最忙的小時裡。Sundial 把全部 557 筆都放在那裡,其中 555 筆的時間戳正好是 00:55。Tidewell Slack 把每一筆進場 都塞進連續的兩個小時裡;Almanac 一天在三個固定時刻觸發進場——00:55、07:50 與 15:00——所以 一次停機最多只能拿走其中一個。Tradewind 最忙的那個小時裝了 6.12 %。

一次停機的代價是策略的屬性,不是主機的屬性。99 % 的上線時間數字,對一支每小時都交易的 EA 是一個意思,對一支只在 00:55 存在的 EA 是另一個意思。

安靜的策略和死掉的終端看起來一模一樣

在最安靜的時候,中位數的那份紀錄兩次連續進場之間會隔 53.4 天。Windrose 曾經 193.4 天 沒有進場。Chrysalis 隔了 760.8 天——但它是這裡唯一一份帳本整整跳過一個日曆年的紀錄, 而在那段沉默期間,其餘 26 份共記下了 3,770 筆進場。一條寫成「這週沒有交易就通知我」的 規則,在健康的策略上會一直響,在慢的策略上則會安靜地睡過一次停機。

要盯的是終端,不是帳本。用計時器記錄 TERMINAL_CONNECTED,並把消失的心跳當成警報。

相關術語與接下來要查的東西

VPS 改變的是一支 EA 自動交易程式在哪裡執行,從來 不是它做什麼。這個決定的執行那一半屬於滑價與經紀商的 執行模型。策略那一半要對照 剝頭皮來讀,它的目標小到足以讓往返時間顯現出來。 經紀商綁定的 VPS 主機方案都以餘額與交易量設門檻;XM 的是這裡有 記錄的那一個。目錄裡的每一則上架都會公開它背後的帳本,所以你可以先 查一查你打算託管的那支 EA 的小時分布。

常見問題

執行一支 MT5 EA 一定要有 VPS 嗎?
只有在它要無人看管地執行時才需要。EA 只在終端開著並保持連線時才交易,所以一台會休眠、更新或斷線的機器會悄悄把策略停掉——而我們公開紀錄中的多數進場,都落在一般上班時段之外。
EA 需要多低的 VPS 延遲?
這隨目標大小而定。一個追個位數點數的剝頭皮策略,需要和經紀商待在同一個資料中心區域;本目錄不公開任何延遲量測,所以我們不會在這件事上寫出一個毫秒數字。任何持倉以小時計的東西都不會被幾百毫秒影響,而這裡每一份紀錄的持倉都超過一小時。
MetaTrader 內建的虛擬主機和 VPS 是同一回事嗎?
它用不同的方式達成同一個目的。它是在 MetaTrader 裡面租一台託管的終端,並搬移你的圖表與 EA 的一份快照——簡單,但那是一次性的複製。傳統的 VPS 則是一台由你自己管理的完整 Windows 機器,自訂檔案或多個終端要的就是這個。
VPS 會讓我的 EA 更賺錢嗎?
不會。它拿掉停機、縮短訂單走的距離;它碰不到策略本身。它改變的是回測裡有的那些交易,和帳戶實際做到的那些交易之間的落差。
我要怎麼確認一台託管的終端還在交易?
不要看交易清單——安靜的策略和死掉的終端,會連續好幾週顯示同一片空畫面。用計時器記錄 TerminalInfoInteger(TERMINAL_CONNECTED),並在心跳消失時發出警報。

相關文章