English Русский Deutsch 日本語
preview
从新手到专家:使用 MQL5 制作动画新闻标题(二)

从新手到专家:使用 MQL5 制作动画新闻标题(二)

MetaTrader 5示例 |
55 0
Clemence Benjamin
Clemence Benjamin

目录:


概述

在本次讨论中,我们将以上一篇文章的成果为基础,在上一篇文章中,我们在图表上创建了一个可滚动的水平条,用于显示即将发生的新闻事件,以及按重要性排序的倒计时器,以指示每次发布前还有多少时间。我们在文章结尾处预留了实时新闻来源的位置 —— 现在,我们准备将这一功能变为现实。

带有新闻提要占位符的 News headline EA。

News Headline EA 第一版(无 API 集成,仅支持 MQL5 经济日历事件。)

我们今天的重点是整合来自外部 API 来源的新闻标题,以解决 MetaTrader 5 平台内新闻访问的难题。我们将重点关注新闻标题 —— 简洁的新闻标题,让交易者快速了解金融界正在发生的事情。这使他们能够随时了解情况,并决定是通过 web 浏览器还是终端的内置新闻选项卡深入了解。

本文的关键要点:

  • 探索各种金融市场新闻来源
  • 了解如何访问外部新闻 API
  • 使用 MQL5 检索和解析新闻数据以提高可用性
  • 掌握 WebRequest() 函数
  • 将外部 API 无缝集成到基于 MQL5 的工具中

为了支持这种集成,我额外研究了可用的新闻 API,并为您编制了一个列表。这些服务中的大多数都提供有使用限制的免费访问层,这仍然足以用于教育和测试目的。下表包括五个推荐的新闻来源,但您还可以探索更多。

提供者 速率限制 特别功能 数据范围
NewsAPI.org 每天 500 个请求 搜索筛选器(关键词、日期、发布者、语言)、布尔运算符、多语言支持(14 种语言) 全球综合新闻(涵盖 55 个国家的 15 万多个新闻源)
Marketaux 5 次 API 调用/请求 实体提取(股票/公司)、每个实体的情感评分、人工智能驱动的财经新闻分析 具有公司特定指标的财经新闻 
Alpha Vantage 每天 500 次请求,每分钟 5 次请求 60多项经济指标(GDP、通货膨胀率)、技术/基本面数据、市场情绪分析 股票、外汇、加密货币、ETF 
Finnhub 每分钟 60 次调用 实时 WebSocket 流、经济日历、财报、AI 情绪分析 市场新闻、经济指标、公司文件 
EODHD 每天 20 次调用(免费套餐) 每日情绪评分(-1 至 1)、50 多个主题标签(盈利、IPO)、全文文章及交易品种筛选功能 股票、ETF、外汇、加密货币新闻 

在这个项目中,我们使用 Alpha Vantage,这是一个广受欢迎且用户友好的 API 服务,以其全面的金融数据和简单的访问方式而闻名。它完善的接口和可靠的免费套餐使其成为将实时新闻标题集成到我们 EA 中的绝佳选择。

下一节,我们将概述讨论路线图,涵盖获取 API 密钥、发出 Web 请求、解析 JSON 响应以及在图表上显示新闻数据等关键步骤。之后,我们将继续动手实现,将此功能变为现实。


概览

为了使讨论更容易理解,让我们从快速回顾我们将在整个项目中使用的一些关键术语开始:
  • API(应用程序编程接口):一组允许一个软件应用程序与另一个应用程序交互的规则。在我们的案例中,它使 MetaTrader 5 能够从 Alpha Vantage 等外部来源获取数据。
  • API 文档:API 提供商提供的官方指南,解释了可用的端点、请求格式、参数和响应结构。
  • API 密钥:由 API 提供商提供的唯一标识符,用于允许访问其服务。它有助于管理使用情况并确保安全通信。
  • JSON(JavaScript 对象表示法):这是一种轻量级的数据交换格式,易于人类读写,也易于机器解析和生成。JSON 通常用于在服务器和 Web 或软件应用程序之间传输数据,尤其是在 Web API 中。
  • 解析:分析结构化数据(如 JSON)并从中提取有用信息的过程。
  • WebRequest:MQL5 函数,用于从终端向外部服务器发送 HTTP 请求。
  • 集成:将 API 数据与我们的 EA 交易连接并结合起来,使其在图表上无缝运行。

我们的基础代码 —— News Headline EA —— 已经到位,第一步是从我们选择的提供商 Alpha Vantage 获取 API 密钥。要获取您的 API 密钥,请访问 Alpha Vantage 网站并注册一个免费帐户。您将被要求提供基本信息,如您的姓名、电子邮件地址和预期用途。提交表单后,您的 API 密钥将立即显示。

下一步是学习 Alpha Vantage 提供的 API 文档。这将帮助我们理解请求格式、可用的新闻端点和返回的 JSON 数据的结构。一旦我们熟悉了这一点,我们就可以设计如何解析数据并将其集成到我们的 EA 交易中。

来自 Alpha Vantage 的 JSON 代码结构

我已经获得了这个项目的 API 密钥,Vantage 提供了一系列丰富的功能。不过,目前我们将重点关注财经新闻。

要查看 API 的 JSON 响应,您可以使用此链接

在实现从 Alpha Vantage API 解析新闻标题的逻辑之前,我们可以认识到 JSON 响应中的每个新闻项都包含多个字段,例如 “title” 、“summary” 、 “url” 和 “time_published”。然而,在本 EA 设计的早期阶段,我们优先考虑简洁性和视觉清晰度,只专注于提取 “title” (标题)字段。标题是简洁的高级描述符,提供了新闻内容的概览,这与 EA 提供快速、简洁的滚动新闻列表的目标非常契合。通过只关注 “title”,我们减少了解析大段文本的开销,并在图表上保持简洁紧凑的视觉效果,帮助交易者在不分心的情况下获取信息。 下面我分享了一段 JSON 代码片段,以帮助您了解返回数据的结构。

 {
    "items": "50",
    "sentiment_score_definition": "x <= -0.35: Bearish; -0.35 < x <= -0.15: Somewhat-Bearish; -0.15 < x < 0.15: Neutral; 0.15 <= x < 0.35: 
	Somewhat_Bullish; x >= 0.35: Bullish",
    "relevance_score_definition": "0 < x <= 1, with a higher score indicating higher relevance.",
    "feed": [
        {
            "title": "How To Trade Tesla Today Using Technical Analysis - Tesla  ( NASDAQ:TSLA ) ",
            "url": "https://www.benzinga.com/markets/equities/25/06/45857951/how-to-trade-tesla-today-using-technical-analysis",
            "time_published": "20250610T121929",
            "authors": [
                "RIPS"
            ],
            "summary": "Good Morning Traders! In today'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://cdnwp-s3.benzinga.com/wp-content/uploads/2024/10/22181427/Paolo-and-Gali.jpg?optimize=medium&dpr=2&auto=webp&width=230",
            "source": "Benzinga",
            "category_within_source": "Trading",
            "source_domain": "www.benzinga.com",
            "topics": [
                {
                    "topic": "Technology",
                    "relevance_score": "0.5"
                },
                {
                    "topic": "Financial Markets",
                    "relevance_score": "0.5855"
                },
                {
                    "topic": "Manufacturing",
                    "relevance_score": "0.5"
                }
            ],
            "overall_sentiment_score": 0.216021,
            "overall_sentiment_label": "Somewhat-Bullish",
            "ticker_sentiment": [
                {
                    "ticker": "MSFT",
                    "relevance_score": "0.101012",
                    "ticker_sentiment_score": "0.303818",
                    "ticker_sentiment_label": "Somewhat-Bullish"
                },
                {
                    "ticker": "GOOG",
                    "relevance_score": "0.033751",
                    "ticker_sentiment_score": "0.075535",
                    "ticker_sentiment_label": "Neutral"
                },
                {
                    "ticker": "NVDA",
                    "relevance_score": "0.101012",
                    "ticker_sentiment_score": "0.346995",
                    "ticker_sentiment_label": "Somewhat-Bullish"
                },
                {
                    "ticker": "AAPL",
                    "relevance_score": "0.134402",
                    "ticker_sentiment_score": "0.077776",
                    "ticker_sentiment_label": "Neutral"
                },
                {
                    "ticker": "TSLA",
                    "relevance_score": "0.134402",
                    "ticker_sentiment_score": "0.111086",
                    "ticker_sentiment_label": "Neutral"
                }
            ]
        },

计划中的 EA 程序将在每个交易日获取一次新闻标题,并使用 canvas 对象在连续的滚动条中滚动显示这些标题。将从原始 JSON 字符串中解析并删除 “title” 字段,从而避免了完全 JSON 反序列化,这在 MQL5 中效率低下。这使得 EA 能够轻量级且可靠地处理实时更新。由于这些标题本身就简短醒目,因此非常适合快速浏览。最终,可以解析 “summary” 或 “url” 等其他字段以提供详细视图或工具提示,但在此阶段使用 “title” 可以提供一种快速、低延迟的解决方案,该方案可以直接融入现有的视觉和性能结构中。

在接下来的章节中,我们将指导您完成这些步骤 —— 访问 API、处理数据以及使用 News Headline EA 在 MetaTrader 5 图表上显示数据。



将外部新闻 API 与 News Headline EA 集成

目标是动态获取相关的金融标题,并在图表上以流畅、实时的方式进行流式传输。这大大提高了 EA 的价值,让交易者在不切换平台的情况下,直接在图表上了解最新的情绪头条新闻。在本教程中,我们将准确解释实现的每个部分是如何工作的,它做了什么,以及为什么我们以这种方式构建它。

第 1 步:添加 API 密钥输入字段以进行用户配置

input string InpAlphaVantageKey = "";  // your Alpha Vantage API key

在此,我们定义了一个名为的用户可配置输入参数 InpAlphaVantageKey。这样,用户就可以将自己的 Alpha Vantage API 密钥直接粘贴到 EA 的设置面板中。如果没有有效的密钥,就无法获取新闻数据。Alpha Vantage 签发有使用限制(通常为每天 500 次请求)的免费 API 密钥,因此该字段使用户能够控制身份验证,而无需硬编码凭据。我们设计系统的其余部分,当此值为空时,优雅地跳过新闻获取,即使用户忘记输入密钥,也能确保稳定性。

第 2 步:声明标题存储和控制逻辑的状态变量

string   newsHeadlines[];     // holds the extracted headline titles
int      totalNews = 0;       // keeps track of how many headlines we’ve stored
datetime lastNewsReload = 0;  // helps ensure we fetch news only once per day

这些变量构成了我们新闻管理系统的核心。

  • newsHeadlines[]一个动态字符串数组,用于保存从 API 响应中解析出的新闻标题。每个字符串代表一条新闻标题。
  • totalNews 是一个整数计数器,用于记录我们存储的新闻标题数量 —— 这对于在图表上呈现正确数量的新闻标题非常重要。
  • lastNewsReload 用于强制执行每日更新策略。Alpha Vantage 可能会对过度使用进行惩罚,因此该变量确保我们每天只获取一次新闻标题,除非我们明确更改此逻辑。它还避免了同一交易时段内的冗余网络请求。

第 3 步:使用 WebRequest 从 Alpha Vantage 获取新闻数据

void FetchAlphaVantageNews()
{
  if(StringLen(InpAlphaVantageKey) == 0) return;

我们首先验证 API 密钥是否由用户输入。如果该值为空,则函数立即退出。此检查可防止不必要的网络活动,并确保系统在正确配置之前保持稳定和安静。它还可以避免因请求格式错误而导致 API 服务器返回无效结果或触发速率限制错误。

在这里,我们构建一个标准化的 datetime 值,用于表示当前交易日的开始(服务器时间午夜)。这是用来与 lastNewsReload 进行比较的,以便我们知道是否已经获取了今天的新闻标题。通过使用这种方法而不是原始时间戳,我们可以确保每天只获取一次新闻,而不管 EA 运行的频率如何。这种方法可以确保我们的 API 使用高效且可预测。

MqlDateTime tm; TimeToStruct(TimeTradeServer(), tm);
tm.hour = tm.min = tm.sec = 0;
datetime today = StructToTime(tm);

if(lastNewsReload == today) return;
lastNewsReload = today;

我们通过将用户的 API 密钥附加到基本端点来动态构建 API 请求 URL。我们将把这个 URL 传递给 WebRequest。NEWS_SENTIMENT 函数旨在从多个高可信度新闻来源返回 JSON 格式的元数据和情感丰富的标题。通过在运行时构建此字符串,我们使我们的 EA 模块化且与 API 密钥无关。

  string url = "https://www.alphavantage.co/query?function=NEWS_SENTIMENT&apikey=" + InpAlphaVantageKey;

本节初始化 WebRequest 函数所需的参数:

char post[];
char response_data[];
string headers;
int timeout = 5000;
ResetLastError();

  • 由于我们发出的是 GET 请求,不发送任何正文内容,因此 post[] 保持为空。
  • response_data[] 是保存服务器原始字节响应的地方。
  • headers 保留为空字符串,因为 AlphaVantage API 不需要为此端点自定义 HTTP 头。
  • timeout 设置为 5000 毫秒,以确保在连接速度慢的情况下不会长时间卡顿。
  • ResetLastError() 清除所有先前的错误代码,以确保我们接下来捕获的任何失败实际上都来自此请求,而不是其他原因造成的。

int result = WebRequest("GET", url, headers, timeout, post, response_data, headers);
if(result != 200)
{
  Print("WebRequest failed with result: ", result, ", error: ", GetLastError());
  return;
}

此代码块执行实际的 HTTP 请求。WebRequest 返回 HTTP 状态代码(例如,200 表示成功,403 表示禁止访问等)。如果结果不是 200,则表示请求失败或被阻止,因此我们打印一条包含错误代码的诊断消息并提前退出。这有助于我们诊断连接或身份验证问题,而不会导致 EA 崩溃或数据损坏。

确认请求成功后,我们将字节数组 response_data[] 转换为人类可读的字符串 (resultStr)。该字符串现在包含来自 Alpha Vantage 的完整 JSON 响应。在开始提取新闻标题之前,我们清空 newsHeadlines[] 数组,丢弃任何旧数据,为新的一天的新闻标题腾出空间。

string resultStr = CharArrayToString(response_data, 0, WHOLE_ARRAY);
ArrayResize(newsHeadlines, 0);

这样我们就搭建好了解析逻辑。变量 pos 是我们在 JSON 字符串中的扫描指针。数组 keys[] 包含响应 JSON 中每个标题前面的键的两种常见变体。我们同时提供带空格和不带空格的版本,以应对 API 响应中任何细微的格式变化。

  int pos = 0;
  const string keys[2] = { "\"title\": \"", "\"title\":\"" };

此循环扫描 JSON 字符串以查找和提取每个新闻标题。

  while(true)
  {
    int start = -1;
    for(int k=0;k<ArraySize(keys);k++)
    {
      start = StringFind(resultStr, keys[k], pos);
      if(start >= 0)
      {
        start += StringLen(keys[k]);
        break;
      }
    }
    if(start < 0) break;

    int end = StringFind(resultStr, "\"", start);
    if(end < 0) break;

    string title = StringSubstr(resultStr, start, end - start);
    title = Trim(title);

我们:

  • 查找下一个 “title” 键,
  • 将 start 调整为实际文本内容的开头。
  • 找到用引号括起来的 title 字符串的结尾,
  • 使用 Trim() 函数提取并清理 title,以删除周围的空白字符。

这种简单的模式匹配方法避免了需要完整的 JSON 解析器,并且对于我们有限和特定的用例来说足够高效。

每次找到新闻标题时,我们都会动态扩展 newsHeadlines[] 数组并添加新标题。所有标题处理完毕后,我们会更新 totalNews 以反映我们已收集到的条目数量。这样我们就能在之后制作新闻标题时获得清晰的数量依据。

    int idx = ArraySize(newsHeadlines);
    ArrayResize(newsHeadlines, idx + 1);
    newsHeadlines[idx] = title;
  }

  totalNews = ArraySize(newsHeadlines);

第 4 步:在图表上绘制滚动新闻条

在这里,我们将所有获取到的新闻标题连接成一个可滚动的字符串,从而构建出可视滚动条。

  • 我们在条目之间添加“|”分隔符,以提高可读性。
  • 如果没有新闻标题,我们会显示占位符消息以保持滚动字幕显示。
  • TextOut() 函数会将此字符串渲染到画布上,并以特定的偏移量 offNews 来创建滚动效果。
  • offNews -= InpNewsSpeed; 这行代码导致文本随时间向左移动,从而产生连续运动。一旦它滚动出视野,我们就在主绘制循环中重置它。

string ticker = "";
for(int i=0;i<totalNews;i++)
{
  ticker += newsHeadlines[i];
  if(i < totalNews - 1) ticker += "   |   ";
}
if(totalNews == 0) ticker = placeholder;

newsCanvas.TextOut(offNews, yOff, ticker, XRGB(255,255,255), ALIGN_LEFT);
offNews -= InpNewsSpeed;

第 5 步:使用定时器安排新闻获取

我们将 FetchAlphaVantageNews() 调用放在 OnTimer() 函数中,以确保它定期运行。内部日期逻辑确保我们每天只调用一次 API。这种设计使 EA 能够在无需重新加载图表或用户操作的情况下自我刷新。这里还会调用 DrawAll() 来在每个计时器响应时更新画布,以确保计时器在屏幕上平滑滚动。

void OnTimer()
{
  //...for the other code
  FetchAlphaVantageNews();  // only updates once daily
  //...for the rest of the code
  DrawAll();  // redraws canvas each timer tick
}

第 6 步:EA 移除后的清理工作

我们在 OnDeinit() 函数中包含一个清理例程,用于清除 newsHeadlines 数组。这有助于确保在卸载 EA 后不保留内存,这是防止资源泄漏和确保下次加载 EA 时干净重启的良好做法。

void OnDeinit(const int reason)
{
  //...our preivous code here
  ArrayResize(newsHeadlines,0);  // clear stored headlines
}

现在一切就绪,我们拥有了新闻标题 EA 的升级版本,该版本成功集成了外部 API(Alpha Vantage),并利用了内置的 MQL5 经济日历。这些功能共同使实时新闻和经济事件能够直接显示在图表上,为交易者提供无缝和即时的关键信息访问,而无需离开平台。

在本文的最后,我将附上完整的源代码,其中包括我们迄今为止讨论的所有内容。下一步将涉及彻底测试这些新功能,以验证该概念是否按预期工作。根据我们的观察,我们将提供最终评估,并概述未来更新的内容。


测试

在 MetaTrader 5 终端中,确保启用 WebRequest 访问,并将 Alpha Vantage 服务器 URL 添加到允许的 URL 列表中。您可以通过依次点击“工具”>“选项”>“EA 交易”或按键盘上的 Ctrl + O 来访问这些设置。请参考下图。

允许 WebRequest 选项

允许 WebRequest 并添加 Alpha Vantage 链接

您可以从导航器窗口的“EA 交易”部分访问已编译的 EA 交易文件(快捷键:Ctrl + N)。要将其加载到图表上,只需右键单击 EA 并选择“附加到图表”,或者直接将其拖放到所需的图表上。请参阅下图以获取快速视觉指南。

在终端中访问已编译的文件

获取新闻标题

通过最近的整合,我们的输入设置得到了增强,新增了多项功能 —— 最值得注意的是,现在可以通过外部 API 获取实时新闻标题。要激活图表上的新闻滚动功能,您需要从 Alpha Vantage 获取 API 密钥,并将其输入到相应的输入字段中。在下图中,您可以看到输入设置界面现在的样子。如果没有提供 API 密钥,EA 将在新闻部分显示占位符文本,而不是实时标题。

输入设置(News Headline EA)

输入设置(News Headline EA)

下图展示了 EA 交易成功部署后的运行情况。6 月 11 日的所有经济事件以及全球市场新闻头条都在流畅滚动显示。如需更清晰的视图和更多详细信息,请参阅下图。

将 News Headline EA 添加到图表中

将 News Headline EA 附加到图表

我还设法清晰地记录了 6 月 11 日在终端上显示的事件。这充分体现了 News Headline EA 在图表上直接定位关键信息方面的有效性 —— 帮助交易者在不中断图表分析的情况下保持信息更新。此外,EA 在设计时充分考虑了高效的像素空间管理,使得整个图表窗口能够保持可见,同时无缝集成新闻和事件,而不会缩小或使视图杂乱。请看下面的动画演示,了解 News Headline EA 如何简化对经济事件和市场新闻标题的访问。

News Headline EA的优势在于,它通过单行显示简化了新闻访问。

News Headline EA 以简洁、不干扰的方式呈现事件和新闻,确保您的图表保持清晰可见。

我们非常兴奋地尝试了不同的滚动速度,结果确实令人印象深刻。它突显了直接在图表上创建流畅、资源高效的可视化效果的潜力。该实验也展示了 MQL5 库的强大功能和用户友好性。一个突出的功能是使用 CCanvas 类,它允许我们为新闻和事件通道渲染半透明背景,使底层图表网格可见。这强化了用户可以在不牺牲完整图表可见性的情况下保持知情的想法。

虽然当前的实现缺乏与视觉元素的交互性,但它为令人兴奋的未来增强打开了大门。下面是我们高速滚动设置的一个示例,其中文本由于快速移动而略微模糊,但仍然展示了性能和视觉潜力。

日历事件和新闻高速滚动设置

新闻和日历事件的高速滚动设置



结论

我对 CCanvas 类的成功实施感到非常兴奋,它有效地解决了我们面临的一个明确挑战。我们设法开发了一种直接在图表上访问新闻和经济事件的替代方法。虽然 MetaTrader 5 提供了这些更新,但在积极交易时,这些更新的可见性和可访问性可能会比较麻烦。通过滚动标题简化显示,我们引入了一个更用户友好和视觉集成的解决方案。

当然,当前版本也存在一些局限性。头条新闻仅限于简短的标题,这与本地终端版本不同,在本地终端版本中,您可以单击并阅读完整的文章。然而,当涉及到经济日历事件时,我们的解决方案非常出色,允许交易者在工作时保持最新状态。对于头条新闻,好处在于了解热门话题,然后可以在终端之外进一步探索。只阅读能引起兴趣的头条新闻是很常见的,所以让它们在图表上滚动可以确保你不会错过重要的全球金融新闻,而不会中断你的正常交易工作流程。

其中一个突出的优势是,所有这些信息都以不打扰的方式直接叠加在图表上,从而能够在不牺牲图表清晰度的情况下做出明智的交易决策。

展望未来,潜在的改进可能包括为每个标题添加日期标签,动态调整大小以适应不同的图表比例,以及在预定事件之前通知交易者的警报系统。我对这个项目的第三阶段感到兴奋,我们计划引入另一个针对交易者需求量身定制的信息通道。

最终,该项目的一个更广泛的目标就是让 MQL5 编程更容易上手 —— 尤其是对于初学者而言。为了支持这一点,我打算在每个开发阶段结束时总结所使用的关键编程概念,我的目标是在本系列的未来章节中继续这种做法。



关键教训

下面是本次讨论中演示的关键编程概念的汇总表。
概念 详细信息
面向对象设计 将日历事件封装到一个专用类中,该类具有时间、交易品种、名称和重要性等属性,从而提高模块化和可读性。
动态存储器和数组 使用可调整大小的数组和动态分配来管理不同数量事件对象,这些事件对象分别位于高、中、低重要性的独立集合中。
事件驱动架构 生命周期函数用于初始化、定时更新和清理,这些函数驱动 EA 在启动、每次定时器响应和关闭时的行为。
API 集成 通过 HTTP 请求连接到外部新闻服务,处理响应和错误,并从返回的数据中提取标题文本。
图形编程 使用 canvas 对象在透明叠加层上渲染文本和形状,为事件和标题创建平滑滚动的通道。
时间和日期逻辑 将服务器时间转换为日期边界,仅加载今天的未来事件,并确保每天获取一次新闻
模块化功能设计 将任务拆分为功能明确的辅助函数,例如定位、数据加载、绘制通道和文本裁剪,以保持代码的组织性和可维护性。
资源清理 正确销毁可视对象并删除动态创建的事件对象,以防止在删除 EA 时发生内存泄漏
用户输入处理 公开滚动速度、显示切换、定时器频率、偏移设置和 API 密钥输入等参数,以允许用户自定义
高效的重绘技巧 通过仅擦除和更新画布的必要部分并根据图表大小的变化进行调整,最大限度地减少重绘工作
MQL5 经济日历 检索日历事件、按日期筛选、按重要性分类和按时间排序,以显示即将发生的事件的优先级列表

作为参考,这里有一张图片,说明了用于指示新闻优先级的三个彩色矩形的含义。颜色是主要指标,但形状(如圆形)也可以使用。

事件重要性标签



附件

EA 的源代码附在下方 —— 编译、测试,然后在评论中分享您的反馈和扩展想法。敬请期待我们的下一篇文章!
文件名 版本 描述
News Headline EA.mq5 1.03 EA 交易利用内置的 MQL5 Canvas 和 Alpha Vantage API,直接在图表上显示经济日历事件和实时市场新闻标题。

返回内容目录

本文由MetaQuotes Ltd译自英文
原文地址: https://www.mql5.com/en/articles/18465

附加的文件 |
成功餐饮经营者算法(SRA) 成功餐饮经营者算法(SRA)
成功餐饮经营者算法(SRA)是一种受餐饮业管理原则启发的创新优化方法。与传统方法不同,SRA不会直接淘汰劣质解,而是通过融合优质解的元素对其进行改进。该算法在优化问题中展现出极具竞争力的表现,并为平衡探索与利用提供了全新视角。
交易中的神经网络:二维连接空间模型(Chimera) 交易中的神经网络:二维连接空间模型(Chimera)
本文将探讨创新的 Chimera 框架:利用神经网络分析多元时间序列的二维状态空间模型。该方法具有高精度和低计算成本,优于传统方式和变换器架构。
新手在交易中的10个基本错误 新手在交易中的10个基本错误
新手在交易中会犯的10个基本错误: 在市场刚开始时交易, 获利时不适当地仓促, 在损失的时候追加投资, 从最好的仓位开始平仓, 翻本心理, 最优越的仓位, 用永远买进的规则进行交易, 在第一天就平掉获利的仓位,当发出建一个相反的仓位警示时平仓, 犹豫。
基于机器学习构建均值回归策略 基于机器学习构建均值回归策略
本文提出了另一种基于机器学习的原创交易系统构建方法,该方法运用聚类分析和交易标注来设计均值回归策略。