Cara Membangun Robot Trading FX dengan Hermes dan FXMacroData
Penulis: Tim FXMacroData
Diterbitkan: 21 Mei 2026
Model Hermes sangat cocok untuk asisten perdagangan praktis karena mereka cepat, mudah dijalankan secara lokal, dan dapat diprediksi dalam alur kerja panggilan alat.
Strategi contoh berfokus pada USD/JPY dan penggunaan Inflasi ASAku akan pergi. Federal Reserve kebijakan suku bunga, dan Bank of Japan kebijakan suku bunga Anda dapat menggunakan kembali kerangka kerja yang sama untuk pasangan yang dicakup oleh FXMacroData.
Persyaratan
- Lingkungan Python 3.10+ lokal.
- Kunci API FXMacroData dari Manajemen APIAku tidak tahu.
- Sebuah model Hermes endpoint (lokal atau hosted), seperti Hermes via Ollama.
- Keterampilan dasar dengan API REST dan skrip Python.
Menginstal ketergantungan:
pip install requests python-dotenv
Langkah 1: Tentukan tujuan bot dan aturan risiko
Sebelum kode, kunci ruang lingkup keputusan.
- Perdagangan hanya satu pasangan (USD/JPY).
- Reaksi hanya pada perubahan makro berdampak tinggi.
- Jangan pernah menempatkan pesanan langsung secara otomatis di V1.
- Output: arah, keandalan, tingkat invalidasi, dan saran ukuran posisi.
Ini membuat bot pertama berguna tanpa mengubahnya menjadi kotak hitam.
Langkah 2: Mengambil data makro dan FX dari FXMacroData
Gunakan API dengan query-parameter auth. Mulai dengan rilis dan data spot.
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"
Anda juga bisa menanyakan Kalender rilis Dan Posisi COT untuk menambahkan risiko peristiwa dan bias posisi ke konteks cepat Anda.
Langkah 3: Membangun loop sinyal yang kompatibel dengan Hermes di Python
Skrip di bawah ini mengambil data terbaru, membuat muatan konteks yang kompak, dan meminta Hermes untuk keputusan terstruktur.
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))
Mengapa pola ini bekerja:
- FXMacroData menyediakan input terstruktur, sehingga Hermes alasan atas bidang bersih bukan suara keras teks yang digaruk.
- Tanda perintah memberlakukan skema terbatas, mengurangi drift output.
- Keterbatasan risiko disuntik ke dalam konteks, tidak dibiarkan tersirat.
Langkah 4: Tambahkan filter event-aware
Sebagian besar keputusan bot yang buruk terjadi di sekitar jendela volatilitas tinggi.
- Dekat kalender: Jika pelepasan tingkat atas terjadi dalam waktu 30 menit, menurunkan ukuran atau kekuatan
flatAku tidak tahu. - Ketidaksetujuan Regime: Jika bias makro dan momentum harga sangat berbeda, mengurangi kepercayaan secara otomatis.
Gunakan tautan titik akhir di dokumen Anda sendiri untuk referensi cepat: US Non-Land RentalAku akan pergi. PCE inti AS, dan Inflasi JepangAku tidak tahu.
Langkah 5: Ubah keputusan menjadi peringatan, bukan eksekusi otomatis
Dalam produksi, keputusan diarahkan ke Slack/Telegram terlebih dahulu. Konfirmasi manusia harus tetap wajib sampai Anda memiliki cukup sampel yang diuji ke depan. Format peringatan praktis:
[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)
Hal ini menjaga akuntabilitas dan auditabilitas jelas sementara masih menghemat waktu penelitian.
Kesalahan umum yang harus dihindari
- Membiarkan model memilih batas risiko secara dinamis.
- Menggunakan terlalu banyak pasangan sebelum memvalidasi satu pasangan secara mendalam.
- mengabaikan data yang sudah usang di pipa Anda.
- Mengobati model kepercayaan sebagai probabilitas keuntungan.
Apa yang kau bangun
Anda sekarang memiliki arsitektur v1 lengkap untuk bot FX bertenaga Hermes: makro terstruktur + konsumsi FX, output model deterministik, dan generasi sinyal yang terbatas pada risiko.
Jika Anda ingin memperdalam pengaturan, tambahkan pekerjaan ringkasan harian yang peringkat kejutan makro teratas dan memetakan mereka untuk kemungkinan dampak FX sebelum London dibuka.