有关MQL5策略测试的文章

icon

如何开发,编写和测试交易策略,如何找到最优的系统参数,以及如何分析结果?该 MetaTrader 平台为交易机器人开发者提供了丰富的功能,可以快速、准确地测试交易思路。阅读这些文章,了解如何测试多币种机器人,以及如何利用 MQL5 云网络 达到优化目的。

建议自动交易系统的开发者,在策略测试器中,先从测试基本面和即时报价算法开始。

添加一个新的文章
最近 | 最佳
preview
神经类群优化算法 (NOA)

神经类群优化算法 (NOA)

一种新的生物启发的优化元启发式算法——NOA(Neuroboids Optimization Algorithm,神经类群优化算法),结合了集体智能和神经网络的原理。与传统方法不同,该算法使用了一个由具备自学习能力的“神经类群(neuroboids)”组成的群体,每个神经类群都拥有自己的神经网络,能够实时调整其搜索策略。本文揭示了该算法的架构、代理的自学习机制,以及这种混合方法在解决复杂优化问题方面的应用前景。
preview
台球优化算法(BOA)

台球优化算法(BOA)

BOA方法灵感源自经典的台球运动,它将寻求最优解的过程模拟为一场游戏:球体致力于落入代表最佳结果的球袋之中。本文将探讨BOA的基本原理、数学模型及其在解决各类优化问题中的效率。
preview
混沌优化算法(COA):续篇

混沌优化算法(COA):续篇

我们继续对混沌优化算法进行讲解。本文第二部分将介绍该算法实现的实操细节、测试过程及相关结论。
preview
成功餐饮经营者算法(SRA)

成功餐饮经营者算法(SRA)

成功餐饮经营者算法(SRA)是一种受餐饮业管理原则启发的创新优化方法。与传统方法不同,SRA不会直接淘汰劣质解,而是通过融合优质解的元素对其进行改进。该算法在优化问题中展现出极具竞争力的表现,并为平衡探索与利用提供了全新视角。
preview
开发多币种 EA 交易(第 22 部分):开始向设置的热插拔过渡

开发多币种 EA 交易(第 22 部分):开始向设置的热插拔过渡

如果要自动进行周期性优化,我们需要考虑自动更新交易账户上已经运行的 EA 设置。这样一来,我们就可以在策略测试器中运行 EA,并在单次运行中更改其设置。
preview
市场模拟(第 13 部分):套接字(七)

市场模拟(第 13 部分):套接字(七)

当我们在 xlwings 或任何其他允许直接读写 Excel 的软件包中开发某些内容时,我们必须注意,所有程序、函数或过程都是执行之后就完成了其任务。无论我们如何努力改变工作方式,它们都不会一直处于循环之中。
preview
市场模拟(第 15 部分):套接字(九)

市场模拟(第 15 部分):套接字(九)

在本文中,我们将讨论我们一直试图展示的一个可能解决方案 —— 即如何让 Excel 用户在 MetaTrader 5 中执行操作,而无需发送订单或开仓或平仓。其思路是用户利用 Excel 对特定股票交易品种进行基本面分析。他们只需使用 Excel,就可以指示在 MetaTrader 5 中运行的 EA 交易开仓或平仓。
preview
您应该了解的MQL5向导技巧(第七十三部分):使用一目均衡表形态与ADX-Wilder形态

您应该了解的MQL5向导技巧(第七十三部分):使用一目均衡表形态与ADX-Wilder形态

一目均衡表(Ichimoku-Kinko-Hyo)指标与韦尔德平均趋向指数(ADX-Wilder)震荡指标,可在MQL5智能交易系统(EA)中形成互补搭配。一目均衡表本身功能多元,但在本文中,我们主要利用其识别支撑与阻力位的特性。同时,我们也使用ADX来判断趋势强弱。我们依旧通过MQL5向导来构建并测试这一组合的潜在效果。
preview
开发多币种 EA(第 26 部分):交易品种信息工具

开发多币种 EA(第 26 部分):交易品种信息工具

在继续开发多币种 EA 之前,让我们尝试使用已开发的库创建一个新项目。这个例子将演示如何最佳地组织源代码存储,以及如何利用 MetaQuotes 的新代码库来帮助我们。
preview
利用深度强化学习优化Ilan智能交易系统

利用深度强化学习优化Ilan智能交易系统

本研究对经典Ilan网格交易策略进行改进,通过在MQL5中集成Q-learning算法,构建出适用于MetaTrader 5平台的自适应版本。本文展示如何定义状态特征、将连续状态空间映射为Q-table可处理的离散值、使用ε-贪婪算法选择操作,以及针对平均持仓收益与平仓事件设计奖励机制。您将实现Q-table的存储与加载功能、通过参数调优优化学习效率,并在策略测试器中对EURUSD(欧元兑美元)/AUDUSD(澳元兑美元)进行测试,以评估稳定性和回撤风险。
preview
市场模拟(第 18 部分):SQL 入门(一)

市场模拟(第 18 部分):SQL 入门(一)

我们使用哪个 SQL 程序并不重要:MySQL、SQL Server、SQLite、OpenSQL 或其他。它们都有一个共同点,那就是都使用 SQL 语言。即使我们不打算使用 Workbench,我们也可以直接在 MetaEditor 中或通过 MQL5 操作数据库,以在 MetaTrader 5 中执行操作,但要做到这一点,你需要了解 SQL。所以在这里,我们至少要学习一些基础知识。
preview
市场模拟(第 20 部分):SQL 入门(三)

市场模拟(第 20 部分):SQL 入门(三)

尽管我们可以在包含约 10 条记录的数据库上执行操作,但当我们处理包含超过 15000 条记录的文件时,这样学习效果会更好。也就是说,如果我们试图手动创建这样一个数据库,这项任务将十分艰巨。然而,即便出于教育目的,也很难找到这样一个可供下载的数据库。但实际上,我们无需采取这种手段 — 我们可以用 MetaTrader 5 为自己创建一个数据库。在今天的文章中,我们将探讨如何做到这一点。
preview
市场模拟(第 24 部分):SQL 入门(七)

市场模拟(第 24 部分):SQL 入门(七)

在上一篇文章中,我们完成了对 SQL 的必要介绍。而且,在我看来,我们已经恰当地阐明了我们想要展示和解释的关于 SQL 的内容。这样做是为了让任何前来查看正在构建的市场回放/模拟系统的人,至少能对那里可能发生的情况有所了解。关键在于,对于那些 SQL 能完美处理的事情,编程是没有意义的。
preview
市场模拟:MQL5 中的 SQL 入门(四)

市场模拟:MQL5 中的 SQL 入门(四)

许多人往往低估了SQL,甚至根本不使用它,因为他们并不完全了解它的实际工作原理。在针对SQL数据库运行查询时,我们并不总是寻求一个通用的答案;在某些情况下,我们需要一个非常具体且实用的答案。如果数据库的结构和数据模型设计得当,几乎任何类型的信息都可以被整合到其中。
preview
市场模拟(第 17 部分):套接字(十一)

市场模拟(第 17 部分):套接字(十一)

在 MetaTrader 5 中运行的那部分代码的实现没有任何困难。然而,有几点需要考虑。这是必要的,这样你才能让系统正常工作。记住一件重要的事情:不会只有一个程序在运行。事实上,我们必须同时运行三个程序。重要的是,要确保每个部分都能以一种能够相互交流和沟通的方式实施和构建,并且每个部分都能理解其他部分正在尝试或打算做什么。
preview
市场模拟(第 23 部分):仓位视图(一)

市场模拟(第 23 部分):仓位视图(一)

接下来我们将要介绍的内容,在理论和概念方面要复杂得多。我会让这些材料尽可能简单易懂。编程部分本身相当简单明了。但是,如果你不了解背后的理论,那么在将回放模拟系统改进或调整以适应不同于我将要展示的任务时,你就几乎没有任何可用于进一步改进或适配系统的实际依据。我不希望你只是编译和使用我提供的代码。我希望你能学习、理解,并且如果可能的话,能够创造出更好的东西。
preview
市场模拟(第 21 部分):SQL 入门(四)

市场模拟(第 21 部分):SQL 入门(四)

你们中的许多人可能比我更有数据库工作经验,因此可能会有不同的看法。由于有必要解释数据库为何以这样的方式设计,以及SQL为何具有这样的形式 — 尤其是主键和外键为何出现 — 因此有些内容必须保持一定的抽象性。
preview
MQL5 向导技巧(第七十七部分):使用 Gator 振荡器与积累/派发振荡器(AD Oscillator)

MQL5 向导技巧(第七十七部分):使用 Gator 振荡器与积累/派发振荡器(AD Oscillator)

Gator 振荡器(Gator Oscillator)由比尔·威廉姆斯(Bill Williams)开发,与累积/派发振荡器(Accumulation/Distribution Oscillator)是另一对可在 MQL5 EA 中协同使用的指标组合。我们使用 Gator 振荡器来确认趋势,同时使用 AD 振荡器通过检查成交量来确认趋势。在探索这种指标组合时,我们一如既往地使用 MQL5 向导来构建和测试它们的潜力。
preview
市场模拟(第 19 部分):SQL 入门(二)

市场模拟(第 19 部分):SQL 入门(二)

正如我们在第一篇关于 SQL 的文章中所解释的那样,没有必要花费时间编写程序来执行 SQL 中已经内置的功能。然而,如果不了解基础知识,你就无法使用 SQL 或充分利用这个工具所提供的一切功能。因此,在本文中,我们将探讨如何在数据库中执行基本任务。
preview
市场模拟(第 24 部分):仓位视图(二)

市场模拟(第 24 部分):仓位视图(二)

在本文中,我将展示如何以最简单、最实用的方式使用指标来跟踪交易服务器上的未平仓位。我将逐步演示,以表明您并不一定需要将所有这些操作都转移到 EA 中。你们中的许多人可能因为这样或那样的原因已经习惯了这样做。事实上,这并不完全合理,因为随着这种实现方式的演变,您将清楚地看到,您可以为此目的创建或实现不同类型的指标。
preview
市场模拟(第 23 部分):SQL 入门(六)

市场模拟(第 23 部分):SQL 入门(六)

在本文中,我们将探讨如何可视化一个数据库,并借此了解其结构。这是通过分析数据库的内部结构来实现的。虽然乍一看这似乎没有必要,但如果我们真的想成为数据库管理员,那么这样做是完全合理的。毕竟,有些人以维护和设计数据库为生。
preview
市场模拟:仓位视图(三)

市场模拟:仓位视图(三)

在之前的文章中,我们提到过有时需要为 ZOrder 属性设置一个值。但是为什么呢?原因在于,许多向图表添加对象的代码根本不使用(或者更准确地说,不定义)此属性的值。关键在于,我并不是来规定每个程序员应该或不应该做什么,或者他们应该或不应该如何编写代码的。亲爱的读者,我在此向您以及所有真正想了解这些过程内部运作原理的人展示,幕后究竟发生了什么。
preview
在 MQL5 中实现来自其他语言的实用模块(第 03 部分):移植 Python 的 Schedule 模块,打造增强版 OnTimer

在 MQL5 中实现来自其他语言的实用模块(第 03 部分):移植 Python 的 Schedule 模块,打造增强版 OnTimer

Python 中的 schedule 模块提供了一种简单的方法来安排重复性任务。虽然 MQL5 缺乏内置的等效功能,但在本文中,我们将实现一个类似的库,以便在 MetaTrader 5 中更轻松地设置定时事件。
preview
市场模拟(第 22 部分):SQL 入门(五)

市场模拟(第 22 部分):SQL 入门(五)

亲爱的读者,在你放弃并决定不再学习 SQL 之前,请允许我提醒你,我们目前所使用的只是最基本的内容。我们尚未探讨 SQL 的一些功能。一旦你理解了这些功能,你会发现 SQL 远比它看起来要实用得多。不过,由于创作过程是动态的,我们最终很可能会改变我们正在构建的方向。我们将更多地展示如何在 SQL 中创建不同的内容,因为这对你来说确实非常重要且有用。仅仅认为自己比整个程序员和开发人员社区更有能力,只会导致时间和机会的浪费。别担心,因为接下来的内容将会更加有趣。
preview
市场模拟:MQL5 中的 SQL 入门(一)

市场模拟:MQL5 中的 SQL 入门(一)

在今天的文章中,我们将开始学习如何在 MQL5 代码中使用 SQL。我们还将探讨如何创建数据库。或者更准确地说,如何使用 MQL5 内置的功能来创建 SQLite 数据库文件。我们还将了解如何创建表,以及如何通过使用主键和外键来建立表之间的关系。所有这些都将再次使用 MQL5 来完成。我们将看到,通过使用一个有助于封装底层实现细节的类,创建代码是多么容易,这些代码稍后可以迁移到其他 SQL 实现中。而且,最重要的是,我们将看到,在使用 SQL 时,我们可能会在不同阶段面临出错的风险。这是因为,在 MQL5 代码中,SQL 代码总是被放置在字符串中。
preview
市场模拟:MQL5 中的 SQL 入门(五)

市场模拟:MQL5 中的 SQL 入门(五)

在上一篇文章中,我展示了如何添加查询机制。这是必要的,以便在 MQL5 代码中能够充分利用 SQL,并使用 SQL SELECT 查询来检索结果。但还有一个函数需要实现,即 DatabaseReadBind 函数。由于要正确理解这个函数需要稍作详细解释,因此决定不在上一篇文章中介绍,而是在今天的文章中详述。鉴于这个主题内容较多,让我们直接进入下一节。