从新手到专家:使用 MQL5 制作动画新闻标题(四) 本地托管 AI 模型市场洞察(基础篇)
「把本地 AI 模型接进 MT5 新闻 EA」
想在 MT5 里跑一个不依赖外部 API 的新闻标题 EA,第一步是把 AI 模型放在本机并暴露成服务。MQL5 端只负责发请求、收 JSON,推理全在本地进程完成,这样行情机器断网也不会卡死推演。 原文给出的落地路径是:先在本地起一个模型服务(如轻量推理后端监听 127.0.0.1),再让 News Headline EA 通过 WinAPI 或 WebRequest 向本机端口要“市场洞察”文本。外汇与贵金属波动受新闻催化极快,本地托管能把延迟压到毫秒级,但模型权重若过旧,产出偏差会直接带偏信号,属高风险环节。 可验证点:原文示例帖发布于 2026-02-03 08:12,页面计数 471 次浏览、0 评论,说明该系列偏冷门实操,适合自己复现而非抄作业。开 MT5 建个 EA 骨架,先打通本机回环请求,比直接训模型更优先。
◍ 从指标洞察切到自托管量化模型
算法交易本身就跑在数字和自动化上,比起还在手工流程里打转的领域,接 AI 是顺水推舟。新人别一上来就想训自己的模型——功能完整的系统开发成本和门槛都太高,绝大多数人没这资源。 开源社区把预训练模型免费开放出来,等于给了现成的切入点。你不用重造轮子,直接拿成熟权重做集成就能跑通原型。当然高端闭源模型功能面更广,但开源量化模型作为起点已经够用。 本篇落地路径很具体:用 llama.cpp 做轻量推理,跑 4 位 GGUF 压缩模型,通过 FastAPI 起本地 Python 推理服务,再连进 News Headline EA,形成一条动态 AI Insights 通道。 中间会覆盖模型下载与准备、服务搭建、EA 对接,以及一次简单冒烟测试。照这套端到端蓝图,你能把实时 AI 评语直接塞进自己的交易工作流里。外汇与贵金属波动剧烈、杠杆风险高,接入后也仅作辅助判断,不构成交易依据。
本地跑 3B 量化模型的真实硬件底线
这套外汇 AI 分析服务在 64 位 Intel Core i7-8550U(1.80–1.99 GHz)、8 GB 内存的机器上做过实测。受限于这套低压 U 和内存,项目选了 stablelm-zephyr-3b.Q5_K_M.gguf 这个 4 位 GGUF 模型,量化后约 1.9 GB,能在无独显环境下完成加载和逐词推理。 如果你也想在本地复现,最低配置有硬数字:CPU 至少 4 核 8 线程(i5/i7 或 Ryzen 5/7),RAM 留 6–8 GB 可用空间装模型和跑工作内存,SSD 上备 3 GB 余量做缓存和系统开销。推理走本地回环,不耗外网带宽。 想上更大模型,7B 或 13B 量化版至少要 12 GB 以上内存;接 NVIDIA CUDA/cuBLAS 后端用 llama-cpp GPU 版,实测推理速度能拉到纯 CPU 的 10 倍左右。再往上(>13B 或要实时 SLA)就得搬 AWS/GCP 的 A10G、A100 实例了。 软件侧三条 shell 路线都验证过:Git Bash 负责 clone 和拉模型;MSYS2 提供 POSIX 层,模型就位后 curl http://localhost:8000/insights 看 FastAPI 是否回 JSON;Anaconda Prompt 建 python=3.12 的 ai-server 环境,装 llama-cpp-python + FastAPI + Uvicorn,再 uvicorn server:app --reload --port 8000 起服务。外汇与贵金属 AI 辅助分析属高风险场景,本地模型输出仅作概率参考,不构成交易依据。
「把本地 AI 推理接进 EA 的前一步」
要在 MT5 里让 EA 调用大模型输出,得先在 Windows 本地起一个能收 POST 请求的推理服务。整体链路是:拉 GGUF 权重 → 用 Conda 隔离依赖 → 用 FastAPI 包一层 /insights 接口 → 用 Uvicorn 跑在 8000 端口,EA 之后按间隔去敲这个端口。 下载环节不用登 Hugging Face 账号,hf_hub_download() 直接拉公开量化文件。脚本跑完会打印出类似 C:\Users\BTA24\.cache\huggingface\hub\…\stablelm-zephyr-3b.Q5_K_M.gguf 的缓存路径,这个字符串后面要原样填进推理代码,别手敲目录。 依赖隔离用 conda create -n ai-env python=3.12,激活后装 llama-cpp-python fastapi uvicorn。llama-cpp-python 绑的是 C++ 推理引擎,n_threads=4、n_ctx=512 是给 3B 级模型留的轻量配置,显存吃紧时可先照这个跑。 服务端只暴露一个 POST /insights,收 {"prompt": "..."} 回 {"insight": "..."},max_tokens=64 足够吐一句行情提醒。冒烟测试用 curl 发 '{"prompt":"One-sentence FX signal for EUR/USD."}',回包里带 insight 字段就说明链路通了。外汇与贵金属波动剧烈、杠杆风险高,模型输出仅作概率参考,不能直接当下单指令。 EA 侧后续会建一条“AI Insights”通道,把解析到的 insight 文本喂进既有的滚动展示机制。等你本地服务能在 8000 端口稳定回包,下一步就是把这段调用写进 EA 的定时器里。
# download_model.py from huggingface_hub class="kw">import hf_hub_download # Download the class="kw">public class="num">4-bit GGUF model; no Hugging Face account required model_path = hf_hub_download( repo_id = "TheBloke/stablelm-zephyr-3b-GGUF", filename = "stablelm-zephyr-3b.Q5_K_M.gguf", repo_type = "model" ) print("Downloaded to:", model_path) python download_model.py Downloaded to: C:\Users\BTA24\.cache\huggingface\hub\…\stablelm-zephyr-3b.Q5_K_M.gguf conda create -n ai-env python=class="num">3.12 -y conda activate ai-env conda install -c conda-forge llama-cpp-python fastapi uvicorn -y # serve_insights.py from fastapi class="kw">import FastAPI, Request from llama_cpp class="kw">import Llama MODEL_PATH = r"C:\Users\BTA24\.cache\huggingface\hub\models--TheBloke--stablelm-zephyr-3b-GGUF\snapshots\<snapshot-id>\stablelm-zephyr-3b.Q5_K_M.gguf" llm = Llama(model_path=MODEL_PATH, n_threads=class="num">4, n_ctx=class="num">512) app = FastAPI() @app.post("/insights") async def insights(req: Request): data = await req.json() prompt = data.get("prompt", "") out = llm(prompt, max_tokens=class="num">64) text = out["choices"][class="num">0]["text"].strip() class="kw">return {"insight": text} cd "C:\Users\YOUR_COMPUTER_NAME\PATH_TO_YOUR python serve insights file" uvicorn serve_insights:app --host class="num">0.0.class="num">0.0 --port class="num">8000 --reload curl -X POST http:class=class="str">"cmt">//localhost:class="num">8000/insights \ -H "Content-Type: application/json" \ -d &class="macro">#x27;{"prompt":"One-sentence FX signal for EUR/USD."}&class="macro">#x27; { "insight":"Be mindful of daily open volatility…"}