股票量化交易软件:如何将赫兹量化与 PostgreSQL 连接

概述

软件开发的格局在过去十年中发生了极大变化。 我们看到云计算的普及,和大量首字母缩略词,如 IASS,PASS 和 SAAS 等等,现在是任何软件项目中必须考虑的关键工具。 对于最终用户和软件开发人员双方来说,事情变得更容易了。

MetaQuotes 团队意识到了这些变化,自 2014 年以来,我们为赫兹量化 提供了一个原生的 WebRequest。

变化最大的领域之一是数据库管理。 从实际角度来看,过去很复杂甚至“奇怪”的解决方案不仅可行,而且成为许多用例的首选解决方案。 通过 REST API 访问数据库就是这种情况。

几年前,通过 REST API 访问数据库的建议看起来像是过度设计。 今天,快速搜索“通过 rest API 访问托管数据库”会返回十几个提供商,范围从每月几美元的基本计划,到定制的企业级解决方案。 其中许多提供商提供了慷慨的免费层次,涵盖原型设计、测试、甚至部署小型生产工序。

本文分析了将 Postgres 数据库连接到赫兹量化表的五种标准备选方案,它们的需求,优点和缺点。 此外,我们还将设置一个开发环境,将 Postgres 数据库安装为远程数据库,连接它,并插入和检索 MQL5 脚本或 EA 所需的数据。

这种开发环境设置和相应的过程,可以很容易地与任何 RDBMS 一起复现,因为 REST API 是数据库系统和客户端代码之间的抽象层。

添加图片注释,不超过 140 字(可选)

赫兹量化和数据库

赫兹量化已经拥有操控数据库所需的功能,以及通过网络连接到数据库时可能需要的功能。

自 2020 年以来,该平台提供与 SQLite 的原生集成。 您可从代码里调用上面提到的那些数据库函数与之交互。 除此之外,您还可以通过 MetaEditor 中的专用 GUI 与数据库进行交互,从而可以轻松创建、更改数据表、及执行 CRUD 操作,而无需附加软件。

这是最终用户体验的极大改进,也是 MQL5 开发人员武器库的重要补充。

在数十种可用的 RDBMS 当中,其中许多带有开源许可证,SQLite 似乎是赫兹量化开发人员的明智选择。 尽管它是一个功能齐全的 SQL 数据库,拥有多列索引、触发器、视图、ACID(原子性:Atomicity,或称不可分割性;一致性:Consistency;隔离性:Isolation,又称独立性;持久性:Durability)事务、全文搜索、聚合函数,等等功能,但它是轻量级的、基于文件的、可扩展的,且维护成本为零。 据其网站声称,“似乎有超过一万亿(1-e12)个活跃 SQLite 数据库正在使用当中”。

尽管 SQLite 拥有令人印象深刻的功能,但它的设计仅限于单用户,并且不针对 Web 部署中的并发访问。 MQL5 网站上关于如何将赫兹量化连接到 MySQL 的大量论坛帖子和文章表明,对于其它用例,需要更强大的解决方案。

本文重点介绍如何使用 Postgres 为这些用例设置开发环境。

为什么选 Postgres

首先,我之所以选择 Postgres,是因为另一个流行的开源替代方案 MySQL 已经在这里有了广泛介绍。

其次,Postgres 是一个成熟的开源项目、多平台、维护优良、文档一致。 它很受欢迎,您可以在网络上找到大量示例代码、指南和教程。 同样,有很多云服务提供商可供满足所有需求和预算。

Postgres 是企业级的,同时亦可由单用户轻松设法在家用机器上单独工作。

当然,我选择 Postgres 数是因为我信任它。 十多年来,在不同的项目中,我都是 Postgres 的快乐用户。

最后但不止于此,我在此分享目前正为我的个人交易环境实现的解决方案。 所以它好似一种“游戏皮肤”。 我在吃我的狗粮。

从 MQL5 与 Postgres 交互的四种方式

距今就我所知,从 MQL5 调用 Postgres 有四种主要方式:

  1. 专用的 MQL5 库驱动程序

  2. 来自 C++ 客户端接口的 .dll

  3. 通过 .NET Npgsql 驱动程序

  4. 一套 REST API

赫兹量化来看看每一种的需求、优缺点。 我很确定,来自 MQL5 社区的大量经验丰富的开发人员,将为缺点提供简单的解决方案,并从专业人士角度指出我看不到的缺点。 来自 MQL5 社区的反馈是意料之中的,因为经验不足的开发人员和非开发人员交易者都能从与此相关的讨论中受益。 1. 专用的 MQL5 库驱动程序 该函数库尚不存在。 它需要开发,且需要来自资深 MQL5 开发人员花费大量的辛勤工作时间。 这不会是廉价的。 赫兹量化也需要考虑维护成本。 Postgres 是成熟的,但它在任何意义上都不是静默的。 这是一个定期发布新版本的活跃项目,其中一些版本(如果不是很多)将需要更新客户端代码。 例如:现在,在撰写本文时,最后一个 Postgres 版本(15)要求数据库的正规用户必须以“公开模式”授予一些权限。 该要求在以前的版本中并不存在。 大概,有若干个外挂代码库需要维护。 委托为 Postgres 开发专用 MQL5 驱动程序的优势在于,如果共享,它可能对许多 MQL5 用户有用。 而缺点也非常明显:时间/金钱成本。 如果您选择这种方式,从哪里开始: 在此站点上搜索 MySQL 文章将返回一些有用的参考资料。 开源 C++ 客户端库 libpqxx Postgres 的官方 C 客户端库 libpq 2. 来自 C++ 客户端接口的 .dll 这是一套外部维护的官方 C++ 库,libpqxx,它建立在内部维护的官方 C 库 libpq 之上,随 Postgres 发行版一起提供。 就个人而言,我从未用过它,我只能说它已存在了很长时间,并且似乎维护得很好。 这种方法的缺点是 MQL5 应用商店不允许 DLL。 如果这对您的项目来说不是问题,并且您在家中也经常用到来自 赫兹量化的 .dll,那么这可能是您的解决方案。 如果您选择这种方式,从哪里开始: 开源 C++ 客户端库 libpqxx 3. 通过 .NET Npgsql 驱动程序 自 2018 年以来,赫兹量化增加了对 .NET 库的原生支持,并带有“智能”函数导入功能。 随着平台构建 1930 的发布,.NET 库无需编写特殊包装器即可使用 — MetaEditor 自行完成。 使用 .NET Npgsql 驱动程序所需要做的就是导入 .dll 本身。 您可以在官方发行说明(https://www.mql5.com/zh/forum/285632)中查看一些限制。 如果您选择这种方式,从哪里开始: 用于 .NET 的开源 Postgres 驱动程序 4. 一套 REST API 如果您选择“无需.dll”的路径,这应该是更快、更便宜的方法。 该 API 可以用任何语言编写,您可以在一天、甚至几小时内拥有一个工作原型。 除此之外,一些云提供商免费为 Postgres 提供内置的 REST API。 您所需要的只是为您的 MQL5 代码提供一个良好的开发环境。 通过使用这种方法,您的 MQL5 代码可以将您的 Postgres 响应作为 JSON。 如果您选择这种方式,从哪里开始: 这里! 只需继续阅读,按照以下步骤操作,下载示例代码,然后开始在 Postgres 数据库中存储和查询您的成交和交易。 设置开发环境

无论您选择哪种方法,您都需要在正运行 Postgres 服务器的 Windows 机器中配置开发环境。 俗话说,道路不止一条。 我记得有三条道路,从最复杂、最耗时、到最简单的:

  1. 从源代码编译

  2. docker 容器

  3. 第三方 msi 安装器

所有这些都是在 Windows 上拥有 Postgres 的好方法,但相信我,在 Windows 上从源代码编译应该是您的最后选择,除非您愿意学习软件开发里的间歇性快速恢复能力的理论并实践。

docker 容器是一个非常好的选择,它是一个健壮而灵活的安装,其中您的数据库服务器将在“远程”机器中运行,而不是“本地主机”(见下文)。 毕竟,这很容易。 您只需要安装 Docker,以及两到三个命令行,就可以出发了。

除了“第三方”软件的相对不便之外,第三方 msi 安装器是一个很好的选择,可以避免编译源代码、或来自 docker 安装和容器管理时所冒的风险。

但是,如果有可能针对位于远程机器上的服务器进行开发,则我不建议将数据库服务器或任何类型的服务器的开发环境作为“本地主机”。 这是因为最好在远程环境中而不是在“本地主机”上进行开发、测试和调试服务器,以便尽快解决连接设置和身份验证问题。

进入 WSL。

WSL 是什么

WSL 代表 Windows Subsystem For Linux。

自 2016 年以来,您就可以在 Windows 机器上运行 Linux 发行版作为子系统,您或许尚未接触它。 不用担心! 这里没有隐秘后门。 WSL 由微软公司开发,内置于 Windows 当中。 您只需要启用它,赫兹量化将在下面看到。

为什么选 WSL 为什么不简单地在另一台 Windows 机器上安装 Postgres,甚至最终安装虚拟机呢? 因为 Postgres 是一个 Unix 原生系统,在 *nix 系统中创建和开发。 在 Linux 上,您可轻松地安装、更新、以及维护它。 所有官方文档都是针对 Unix 系统。 您可以在 Web 上找到的大多数示例代码、片段和一般帮助都反映出这一事实。 因此,您将可以轻松地在 Linux 系统中进行开发。 WSL 正是为了这个目的而由微软开发的。 安装 WSL 来自微软文档中的先决需求: “您必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本),或 Windows 11 才能使用以下命令。 如果您使用的是早期版本,请参阅手动安装页面。” 如果系统满足此先决需求,只需以管理员身份打开 Power Shell,然后输入以下命令即可安装/启用 WSL: wsl –install

添加图片注释,不超过 140 字(可选)

此命令将在 WSL 上安装 Ubuntu,因为它是默认发行版。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值