解决方案 · 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 与桥接示例代码;如需为机构定制或托管桥接,请联系我们。