如何使用Hermes和FXMacroData构建一个FX交易机器人
编者: 汇率数据组
发表时间: 2026年5月21日
赫尔默斯模型非常适合实用交易助理,因为它们快速,易于本地运行,并且在工具调用工作流中是可预测的. 在本指南中,您将构建一个轻量级的外汇交易机器人,它将赫尔梅斯推理与FXMacroData市场数据相结合,以便它可以评估宏观惊喜,排名交易设置,并输出有纪律的交易想法.
举例战略的重点是 美元/日元 并且使用 美国通货膨胀没有人知道. 美联储政策利率没有 日本央行政策利率 您可以重新使用相同的框架,用于任何由FXMacroData覆盖的对.
预先要求
- 一个本地Python 3.10+环境.
- 来自FXMacroData的API键 管理API现在我们要做什么?
- 一个Hermes模型终端点 (本地或托管),如Hermes通过Ollama.
- 基本熟悉REST API和Python脚本.
安装依赖:
pip install requests python-dotenv
步骤1:定义您的机器人目标和风险规则
在编码之前,锁定决策范围.
- 只有一个货币对 (USD/JPY) 进行交易.
- 只有对具有重大影响的宏观变化作出反应.
- 永远不要在v1中自动进行实时订单.
- 输出:方向,可靠性,无效度,位置大小建议.
这使得第一台机器人不变成黑子.
步骤2:从FXMacroData中提取宏观数据和外汇数据
使用查询参数验证的API.
curl "https://fxmacrodata.com/api/v1/announcements/usd/inflation?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/announcements/jpy/policy_rate?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/forex?base=USD"e=JPY&api_key=YOUR_API_KEY"
您也可以查询 发布日程 现在我 机器人位置 增加事件风险和定位偏见到您的即时环境中.
步骤3:在Python中构建一个兼容Hermes的信号循环
下面的脚本获取最近的数据,创建一个紧的语境有效负载,并要求Hermes进行结构化决策. 通过要求严格的JSON输出来保持确定性.
import os
import json
import requests
from datetime import datetime, timezone
API_BASE = "https://fxmacrodata.com/api/v1"
API_KEY = os.environ["FXMD_API_KEY"]
HERMES_URL = os.environ["HERMES_URL"] # Example: http://localhost:11434/api/generate
HERMES_MODEL = os.environ.get("HERMES_MODEL", "hermes3")
def fxmd_get(path, **params):
r = requests.get(
f"{API_BASE}{path}",
params={"api_key": API_KEY, **params},
timeout=25,
)
r.raise_for_status()
return r.json()
def last_value(payload):
rows = payload.get("data", [])
return rows[-1] if rows else {}
usd_infl = last_value(fxmd_get("/announcements/usd/inflation"))
jpy_rate = last_value(fxmd_get("/announcements/jpy/policy_rate"))
usd_rate = last_value(fxmd_get("/announcements/usd/policy_rate"))
spot = fxmd_get("/forex", base="USD", quote="JPY").get("data", [])
spot_last = spot[-1] if spot else {}
spot_prev = spot[-2] if len(spot) > 1 else spot_last
context = {
"timestamp_utc": datetime.now(timezone.utc).isoformat(),
"pair": "USD/JPY",
"macro": {
"usd_inflation_latest": usd_infl.get("value"),
"usd_policy_rate_latest": usd_rate.get("value"),
"jpy_policy_rate_latest": jpy_rate.get("value"),
},
"price": {
"last": spot_last.get("value"),
"previous": spot_prev.get("value"),
},
"rules": {
"allowed_actions": ["long", "short", "flat"],
"max_risk_per_trade_pct": 0.5,
"require_invalidation_level": True,
},
}
prompt = f"""
You are an FX strategy assistant.
Use this JSON context: {json.dumps(context)}
Return JSON only with keys:
action, confidence, thesis, invalidation, size_pct, next_data_to_watch
Rules:
- No prose outside JSON.
- Confidence between 0 and 1.
- size_pct must be <= 0.5.
"""
hermes_req = {
"model": HERMES_MODEL,
"prompt": prompt,
"stream": False,
}
resp = requests.post(HERMES_URL, json=hermes_req, timeout=45)
resp.raise_for_status()
raw = resp.json().get("response", "{}")
decision = json.loads(raw)
print(json.dumps(decision, indent=2))
这种模式为什么有效:
- 由于FXMacroData提供结构化输入,因此Hermes考虑清洁的字段而不是杂的纹文本.
- 提示执行一个有界限的模式,减少输出漂移.
- 风险限制被注入到背景中,而不是隐含.
步骤4:添加事件感知过器
许多不良的机器人决策都发生在高波动窗口周围.
- 时间表接近: 如果在30分钟内将释放顶级,降级大小或力度.
flat现在我们要做什么? - 制度不一致: 如果宏观偏见和价格动力严重不一致,则自动降低信心.
快速参考您自己的文档中的终端链接: 美国非农业工资没有人知道. 美国核心PCE没有 日本通货膨胀现在我们要做什么?
步骤5:将决策转化为警报,而不是自动执行
在生产中,首先将决策转移到Slack/Telegram. 人类确认应该是强制性的,直到你有足够的前期测试样本.
[FX BOT] USD/JPY
Action: LONG
Confidence: 0.72
Thesis: US inflation + sticky core, policy divergence still USD-supportive.
Invalidation: Daily close below 154.20
Suggested Size: 0.35%
Watch Next: US Core PCE (Friday 12:30 UTC)
这样可以清晰地控制问责制和可审计性,同时节省研究时间.
常见的错误
- 让模型选择风险限制.
- 通过对对进行验证,
- 忽略了你管道中的陈旧数据检查.
- 像是对模型的信心进行对待,
你所建立的
现在您有一个完整的v1架构,用于Hermès驱动的外汇机器人:结构化宏观+外汇摄入,确定性模型输出和风险有限信号生成.接下来,将相同的框架扩展到EUR/USD等第二对,并比较不同地区的政策分歧逻辑.
为了深入了解, 加入一个每日总结工作,