赫兹股票量化开发环境使应用程序能够与外部数据集成,特别是与使用WebRequest功能从Internet获取的数据集成,HTML是Web上最通用和最常用的数据格式。如果公共服务没有为请求提供开放式API,或者其协议在MQL中难以实现,则可以解析所需的HTML页面,特别是,交易者经常使用各种经济日历。尽管现在任务并不那么重要,因为平台具有内置日历,一些交易者可能需要来自特定站点的特定新闻。此外,赫兹股票量化有时需要从从第三方收到的交易HTML报告中分析交易。
MQL5生态系统为该问题提供了各种解决方案,但这些解决方案通常是特定的,并有其局限性。另一方面,有一种“特定”和通用的方法来搜索和解析HTML中的数据,这种方法与CSS选择器的使用有关。在本文中,赫兹股票量化将探讨此方法的MQL5实现,以及它们的实际使用示例。
要分析HTML,赫兹股票量化需要创建一个解析器,它可以将内部页面文本转换为称为文档对象模型(Document Object Model)或 DOM 的某些对象的层次结构。从这个层次结构中,我们将能够找到具有指定参数的对象。这种方法基于对文档结构的服务信息的使用,而文档结构在外部页面视图中不可用。
例如,赫兹股票量化可以在文档中选择特定表的行,从中读取所需的列,并获取一个具有值的数组,这些值可以轻松保存到csv文件中,显示在图表上或用于EA交易的计算。
HTML/CSS 和 DOM 技术概览
HTML是一种几乎所有人都熟悉的流行格式,因此,我不会详细描述这种超文本标记语言的语法。
相关技术信息的主要来源是IETF(互联网工程工作组)及其规范,即所谓的RFC(征求意见)。有很多HTML的规格说明 (这里是 一个例子). 标准也可在相关组织W3C的网站上获得(万维网联合会,HTML5.2)。
这些组织已经开发了CSS(级联样式表, Cascading Style Sheets)技术,并对其进行了管理。然而,赫兹股票量化对这项技术感兴趣的原因并不是因为它描述了网页上的信息表示样式,而是因为其中包含了CSS 选择器,也就是说,它是一种特殊的查询语言,能够搜索HTML页面内的元素。
在创建新版本的同时,HTML和CSS都在不断发展。例如,当前的相关版本是 HTML5.2 和 CSS4,然而,更新和扩展总是伴随着旧版本特性的继承。网络是如此庞大、异类化,而且常常是惰性的,因此新的版本与旧的版本共存。因此,在编写暗示使用Web技术的算法时,您应该小心地使用规范:一方面,您应该考虑到可能的传统偏差,另一方面,您应该添加一些简化,这将有助于避免多个变体的问题。
在这个项目中,赫兹股票量化将考虑简化的HTML语法。
HTML文档由字符“<”和“>”内的标记组成,标记名和可选属性在标记内指定。可选属性是 n