从新手到专家:使用 MQL5 制作动画新闻标题(二)(基础篇)
◍ 先看清这套新闻标题动画要做什么
这一节是系列第二篇的开头,目标是在 MT5 图表上用 MQL5 把外部新闻 API 拉来的标题做成动画展示,而不是静态贴一行字。原文给出的示例发布时间是 2026 年 1 月 28 日 08:47,社区显示阅读量 476、评论 0,作者 Clemence Benjamin。 整篇会沿「概览 → 集成外部新闻 API → 测试 → 结论 → 关键教训」的脉络走,本篇先交代背景:你要先有一个能返回新闻标题的接口,再考虑怎么用 MQL5 的绘图对象把文字按帧推出来。外汇与贵金属行情受新闻冲击大,这类动画提示对短线交易有参考意义,但新闻延迟和误报风险同样高,只能当辅助。 打开 MT5 后,建议你先想清楚自己要接哪个新闻源、字段里标题叫什么、更新频率多高,后面写代码才不会返工。
给EA接上外部新闻源
上一篇文章里我们已经在图表上铺了一条可滚动的水平条,专门挂即将发生的新闻事件和倒计时。结尾处留了实时新闻源的空位,这一节就是把它填实:用外部 API 把新闻标题拉进 MT5,绕开平台自带新闻访问的局限。 重点不在写长文章摘要,而是抓「标题」——短句、一眼看懂金融圈正在发生什么,交易者自己决定要不要开浏览器深读。要做到这点,核心是把 WebRequest() 用熟,再把返回的 JSON 解析进 MQL5 工具。 我顺手筛了五个能免费试用的新闻 API,限制都写在表里,教育和测试够用:NewsAPI.org 每天 500 请求、14 种语言;Marketaux 单次 5 调用、带实体情感分;Alpha Vantage 每天 500、每分钟 5,含 60 多项经济指标;Finnhub 每分钟 60 调用、有 WebSocket;EODHD 免费每天 20 调用、每日情绪评分 -1 到 1。 本项目落地选 Alpha Vantage,接口完善、免费档稳定,适合把实时标题嵌进 EA。下一节会拆获取密钥、发请求、解 JSON、上图表这几步,随后直接写代码实现。
「先把外部新闻接进MT5的术语与取数路径」
做价格行为分析时,盘面外的财经新闻常是突发行情的引信。要把外部源的新闻标题搬进 MT5 图表,先得理清几个底层概念:API 是软件间互通数据的规则集;API 文档说明请求格式与返回结构;API 密钥是服务商给的访问凭证;JSON 是轻量数据交换格式;解析是从结构里抠出有用字段;WebRequest 是 MQL5 里向外部服务器发 HTTP 请求的函数。 本项目的基底是 News Headline EA,第一步去 Alpha Vantage 注册免费账户拿 API 密钥,填姓名、邮箱和用途后密钥会立刻显示。第二步读它的 API 文档,弄懂新闻端点和 JSON 结构,再设计解析与集成逻辑。外汇与贵金属波动受新闻驱动明显,这类接入高风险伴随高信息价值,建议先在模拟盘验证。 Alpha Vantage 的财经新闻 JSON 里,每条含 title、summary、url、time_published 等字段。早期 EA 只抽 title 字段——它短、醒目,适合图表上滚动播报,也避开了 MQL5 中完整反序列化 JSON 的效率坑。下面这段返回样本能看到,单条新闻的 overall_sentiment_score 为 0.216021,标签是 Somewhat-Bullish,topic 相关性分数在 0.5~0.5855 之间。 计划是每个交易日用 WebRequest 拉一次新闻,用 canvas 对象做滚动条展示。只解析 title 能压低延迟、保持视觉紧凑;后续若要详情,再补 summary 或 url 做 tooltip。打开 MT5 按这个字段优先级改 EA,是马上能落地的动作。
{
"items": "class="num">50",
"sentiment_score_definition": "x <= -class="num">0.35: Bearish; -class="num">0.35 < x <= -class="num">0.15: Somewhat-Bearish; -class="num">0.15 < x < class="num">0.15: Neutral; class="num">0.15 <= x < class="num">0.35: Somewhat_Bullish; x >= class="num">0.35: Bullish",
"relevance_score_definition": "class="num">0 < x <= class="num">1, with a higher score indicating higher relevance.",
"feed": [
{
"title": "How To Trade Tesla Today Using Technical Analysis - Tesla( NASDAQ:TSLA ) ",
"url": "https:class=class="str">"cmt">//www.benzinga.com/markets/equities/class="num">25/class="num">06/class="num">45857951/how-to-trade-tesla-today-using-technical-analysis",
"time_published": "20250610T121929",
"authors": [
"RIPS"
],
"summary": "Good Morning Traders! In today&class="macro">#x27;s Market Clubhouse Morning Memo, we will discuss SPY, QQQ, AAPL, MSFT, NVDA, GOOGL, META, and TSLA. Our proprietary formula, exclusive to Market Clubhouse, dictates these price levels. This dynamic equation takes into account price, volume, and options flow.",
"banner_image": "https:class=class="str">"cmt">//cdnwp-s3.benzinga.com/wp-content/uploads/class="num">2024/class="num">10/class="num">22181427/Paolo-and-Gali.jpg?optimize=medium&dpr=class="num">2&auto=webp&width=class="num">230",
"source": "Benzinga",
"category_within_source": "Trading",
"source_domain": "www.benzinga.com",
"topics": [
{
"topic": "Technology",
"relevance_score": "class="num">0.5"
},
{
"topic": "Financial Markets",
"relevance_score": "class="num">0.5855"
},
{
"topic": "Manufacturing",
"relevance_score": "class="num">0.5"
}
],
"overall_sentiment_score": class="num">0.216021,
"overall_sentiment_label": "Somewhat-Bullish",
"ticker_sentiment": [
{◍ 新闻情绪字段落地的数据结构
上面这段 JSON 数组是单条新闻解析后挂出的标的情绪块,直接对应 MT5 里接新闻 API 时要反序列化的结构体。每个标的给出四个字段:ticker 是代码,relevance_score 是这条新闻和该标的的相关度,ticker_sentiment_score 是情绪数值,ticker_sentiment_label 是人工分档标签。 看具体数:MSFT 的 relevance_score 为 0.101012、sentiment_score 0.303818,标 Somewhat-Bullish;NVDA 同相关度 0.101012 但情绪分更高到 0.346995,也归 Somewhat-Bullish。AAPL 和 TSLA 相关度并列最高 0.134402,但情绪分仅 0.077776 与 0.111086,标签都是 Neutral。 在 EA 里跑这类数据,建议先按 relevance_score 过滤掉低于 0.05 的噪声,再对 sentiment_score 做阈值切分。外汇与贵金属受跨市场情绪传导影响明显,此类美股情绪仅作关联参考,实际下单仍属高风险,须配合价格行为确认。
"ticker": "MSFT",
"relevance_score": "class="num">0.101012",
"ticker_sentiment_score": "class="num">0.303818",
"ticker_sentiment_label": "Somewhat-Bullish"
},
{
"ticker": "GOOG",
"relevance_score": "class="num">0.033751",
"ticker_sentiment_score": "class="num">0.075535",
"ticker_sentiment_label": "Neutral"
},
{
"ticker": "NVDA",
"relevance_score": "class="num">0.101012",
"ticker_sentiment_score": "class="num">0.346995",
"ticker_sentiment_label": "Somewhat-Bullish"
},
{
"ticker": "AAPL",
"relevance_score": "class="num">0.134402",
"ticker_sentiment_score": "class="num">0.077776",
"ticker_sentiment_label": "Neutral"
},
{
"ticker": "TSLA",
"relevance_score": "class="num">0.134402",
"ticker_sentiment_score": "class="num">0.111086",
"ticker_sentiment_label": "Neutral"
}
]
},