解決方案 · MetaTrader 橋接
MT4/MT5 外部行情源:在 MetaTrader 裏看股票、指數與加密貨幣
MetaTrader 只能顯示券商提供的報價。把 iTick 作為外部行情源,一個輕量 Python 服務即可把實時價格推入 MT5 自定義品種(或 MT4 橋),在美股、港股、全球指數和加密貨幣上看盤、預警、運行 EA。
- 通過 CustomTicksAdd 把實時 Tick 寫入 MT5 自定義品種
- MT4 可通過離線圖表或橋接插件接入
- 股票、全球指數、外匯、貴金屬、加密貨幣
- 歷史K線回填圖表,用於 EA 測試
# Python bridge: iTick WebSocket -> ZeroMQ PUB -> MetaTrader EA
import json, time, websocket, zmq # pip install websocket-client pyzmq
pub = zmq.Context().socket(zmq.PUB)
pub.bind("tcp://127.0.0.1:5556") # EA subscribes here
def on_message(ws, msg):
d = json.loads(msg).get("data") or {}
if d.get("s") and "ld" in d:
# one line per tick: SYMBOL time_ms bid ask last
bid, ask = d.get("b", d["ld"]), d.get("a", d["ld"])
pub.send_string(f'{d["s"]} {d.get("t", int(time.time()*1000))} {bid} {ask} {d["ld"]}')
def on_open(ws):
ws.send(json.dumps({"ac": "subscribe",
"params": "AAPL$US,NVDA$US,700$HK",
"types": "quote"}))
while True: # auto-reconnect
websocket.WebSocketApp("wss://api.itick.org/stock", header={"token": "YOUR_API_TOKEN"},
on_open=on_open, on_message=on_message).run_forever(ping_interval=20)
time.sleep(3)為什麼把 iTick 橋接進 MetaTrader
保留熟悉的平台和 EA,擴展背後的品種和數據質量。
券商沒有的品種
美股、港股、亞洲指數與加密貨幣作為自定義品種,與外匯圖表並列。
解決境外行情延遲
用直連實時行情替代緩慢或延遲的境外報價。
在新市場運行 EA
現有 EA 和指標直接掛到橋接品種上,無需重寫。
回填歷史
用 CustomRatesUpdate 把 K 線歷史寫入自定義品種,供指標與策略測試器使用。
穩定的橋接
自動重連的 WebSocket 客户端、心跳,以及本地分發給多個終端。
乾淨一致的 Tick
所有市場統一格式的買價、賣價、成交價與毫秒時間戳。
橋接如何工作
四個小組件,全部運行在你的 VPS 或電腦上。
- 1
iTick WebSocket
訂閲 AAPL$US、700$HK 等品種。
- 2
Python 橋接服務
標準化 Tick,通過本地 ZeroMQ 發佈。
- 3
MT5 EA / MT4 插件
接收 Tick,用 CustomTicksAdd 或橋接插件寫入。
- 4
圖表與 EA
自定義品種實時更新,指標與 EA 照常運行。
MT5 與 MT4 接入對比
MT5 原生支持自定義品種,MT4 需要變通方案。
| MetaTrader 5 | MetaTrader 4 | |
|---|---|---|
| 實時價格 | 自定義品種 + CustomTicksAdd | 離線圖表或第三方橋接插件 |
| 歷史回填 | CustomRatesUpdate 寫入 iTick K線 | 寫入 .hst 歷史文件 |
| 運行 EA | 支持,掛在自定義品種上 | 支持,掛在離線圖表上 |
| 策略測試器 | 支持自定義品種 | 有限 |
下單仍通過券商執行;若券商沒有該品種,橋接品種用於看盤、信號與分析。
橋接示例代碼
Python 發佈端,以及把 Tick 寫入自定義品種的 MQL5 端。
- 免費獲取 iTick API Token
- 在 MetaTrader 所在機器上運行 Python 橋接
- 掛載 EA,創建並更新自定義品種
# Python bridge: iTick WebSocket -> ZeroMQ PUB -> MetaTrader EA
import json, time, websocket, zmq # pip install websocket-client pyzmq
pub = zmq.Context().socket(zmq.PUB)
pub.bind("tcp://127.0.0.1:5556") # EA subscribes here
def on_message(ws, msg):
d = json.loads(msg).get("data") or {}
if d.get("s") and "ld" in d:
# one line per tick: SYMBOL time_ms bid ask last
bid, ask = d.get("b", d["ld"]), d.get("a", d["ld"])
pub.send_string(f'{d["s"]} {d.get("t", int(time.time()*1000))} {bid} {ask} {d["ld"]}')
def on_open(ws):
ws.send(json.dumps({"ac": "subscribe",
"params": "AAPL$US,NVDA$US,700$HK",
"types": "quote"}))
while True: # auto-reconnect
websocket.WebSocketApp("wss://api.itick.org/stock", header={"token": "YOUR_API_TOKEN"},
on_open=on_open, on_message=on_message).run_forever(ping_interval=20)
time.sleep(3)MetaTrader 行情橋接常見問題
能在 MT5 裏添加券商沒有的股票嗎?
可以,作為自定義品種用於看盤和分析。MT5 允許 EA 創建自定義品種並用 CustomTicksAdd 推入 Tick,實時價格由 iTick 提供。
MT4 能用嗎?
MT4 沒有原生自定義品種,需要通過離線圖表或橋接插件顯示,Python 橋接端完全相同。
橋接的品種可以交易嗎?
訂單由券商執行。若券商未上架該品種,可用橋接品種生成信號,再在可交易的品種上下單。
iTick 提供橋接程式嗎?
iTick 提供行情 API 與橋接示例代碼;如需為機構定製或託管橋接,請聯繫我們。