种群优化算法:细菌觅食优化 — 遗传算法(BFO-GA)
本文释义了一种解决优化问题的新方式,即把细菌觅食优化(BFO)算法和遗传算法(GA)中所用的技术结合到混合型 BFO-GA 算法当中。它用细菌群落来全局搜索最优解,并用遗传运算器来优调局部最优值。与原始的 BFO 不同,细菌现在可以突变,并继承基因。
开发回放系统(第 41 部分):启动第二阶段(二)
如果到目前为止,你觉得一切都很好,那就说明你在开始开发应用程序时,并没有真正考虑到长远的问题。随着时间的推移,你将不再需要为新的应用程序编程,只需让它们协同工作即可。让我们看看如何完成鼠标指标的组装。
开发回放系统(第 38 部分):铺路(II)
许多认为自己是 MQL5 程序员的人,其实并不具备我在本文中将要概述的基础知识。许多人认为 MQL5 是一个有限的工具,但实际原因是他们尚未具备所需的知识。所以,如果您有啥不知道,不要为此感到羞愧。最好是因为不去请教而感到羞愧。简单地强制 MetaTrader 5 禁用指标重叠,并不能确保指标和智能系统之间的双向通信。我们离这个目标还很远,但指标在图表上没有重叠的事实给了我们一些信心。
种群优化算法:进化策略,(μ,λ)-ES 和 (μ+λ)-ES
本文研究一套称为进化策略(ES)的优化算法。它们是最早使用进化原理来寻找最优解的种群算法之一。我们将针对传统的 ES 变体实现变更,并修改算法的测试函数和测试台方法。
开发回放系统(第 40 部分):启动第二阶段(一)
今天我们将讨论回放/模拟器系统的新阶段。在这个阶段,谈话才会变得真正有趣,内容也相当丰富。我强烈建议您仔细阅读本文并使用其中提供的链接。这将帮助您更好地理解内容。
开发回放系统(第 39 部分):铺平道路(三)
在进入开发的第二阶段之前,我们需要修正一些想法。您知道如何让 MQL5 满足您的需求吗?您是否尝试过超出文档所包含的范围?如果没有,那就做好准备吧。因为我们将做一些大多数人通常不会做的事情。
种群优化算法:模拟各向同性退火(SIA)算法。第 II 部分
第一部分专注于众所周知、且流行的算法 — 模拟退火。我们已经通盘研究了它的利弊。本文的第二部分专注于算法的彻底变换,将其转变为一种新的优化算法 — 模拟各向同性退火(SIA)。
种群优化算法:模拟退火(SA)。第 1 部分
模拟退火算法是受到金属退火工艺启发的一种元启发式算法。在本文中,我们将对算法进行全面分析,并揭示围绕这种广为人知的优化方法的一些常见信仰和神话。本文的第二部分将研究自定义模拟各向同性退火(SIA)算法。
MQL5 简介(第 1 部分):算法交易新手指南
通过我们的 MQL5 编程新手指南,进入算法交易的迷人领域。在揭开自动化交易世界的神秘面纱之际,让我们探索支持MetaTrader 5 的语言 MQL5 的精髓。从了解基础知识到迈出编码的第一步,本文是您即使没有编程背景也能释放算法交易潜力的关键。加入我们的旅程,在令人兴奋的 MQL5 世界里,体验简单与复杂的结合吧。
Python、ONNX 和 MetaTrader 5:利用 RobustScaler 和 PolynomialFeatures 数据预处理创建 RandomForest 模型
在本文中,我们将用 Python 创建一个随机森林(random forest)模型,训练该模型,并将其保存为带有数据预处理功能的 ONNX 管道。之后,我们将在 MetaTrader 5 终端中使用该模型。
开发回放系统(第 37 部分):铺平道路 (一)
在这篇文章中,我们终于要开始做我们早就想做的事情了。之前,由于缺乏 "坚实的基础",我没有信心公开介绍这部分内容。现在我有了这样做的基础。我建议您尽可能集中精力理解本文的内容。我指的不仅仅是阅读,我想强调的是,如果你不理解这篇文章,你可能就是完全放弃了理解以后文章内容的希望。
群体优化算法:螺旋动态优化 (SDO) 算法
文章介绍了一种基于自然界螺旋轨迹构造模式(如软体动物贝壳)的优化算法 - 螺旋动力学优化算法(Spiral Dynamics Optimization,SDO)。我对作者提出的算法进行了彻底的修改和完善,本文将探讨这些修改的必要性。
群体优化算法:智能水滴(IWD)算法
文章探讨了一种源自无生命自然的有趣算法 - 模拟河床形成过程的智能水滴(IWD,Intelligent Water Drops)。这种算法的理念大大改进了之前的评级领先者 - SDS。与往常一样,新的领先者(修改后的 SDSm)可在附件中找到。
种群优化算法:Nelder-Mead(NM),或单纯形搜索方法
本文表述针对 Nelder-Mead 方法进行的彻底探索,解释了如何在每次迭代中修改和重新排列单纯形(函数参数空间),从而达成最优解,并讲述了如何改进该方法。
开发回放系统(第 36 部分):进行调整(二)
让我们的程序员生活举步维艰的原因之一就是做出假设。在本文中,我将向您展示假设是多么危险:例如在 MQL5 编程中假设类型将具有某个特定值,或是在 MetaTrader 5 中假设不同服务器的工作方式相同。
开发回放系统(第 35 部分):进行调整 (一)
在向前迈进之前,我们需要解决几个问题。这些实际上并不是必需的修正,而是对类的管理和使用方式的改进。原因是系统内的某些相互作用导致了故障的发生。尽管我们试图找出这些故障的原因以消除它们,但所有这些尝试都没有成功。其中有些情况完全不合理,例如,当我们在 C/C++ 中使用指针或递归时,程序就会崩溃。
开发回放系统(第 34 部分):订单系统 (三)
在本文中,我们将完成构建的第一阶段。虽然这部分内容很快就能完成,但我将介绍之前没有讨论过的细节。我将解释一些许多人不理解的问题。你知道为什么要按 Shift 或 Ctrl 键吗?
群体优化算法:带电系统搜索(CSS)算法
在本文中,我们将探讨另一种受无生命自然启发的优化算法--带电系统搜索(Charged System Search,CSS)算法。本文旨在介绍一种基于物理和力学原理的新的优化算法。
开发回放系统(第33部分):订单系统(二)
今天,我们将继续开发订单系统。正如您将看到的,我们将大规模重用其他文章中已经展示的内容。尽管如此,你还是会在这篇文章中获得一点奖励。首先,我们将开发一个可以与真实交易服务器一起使用的系统,无论是从模拟账户还是从真实账户。我们将广泛使用MetaTrader 5平台,该平台将从一开始就为我们提供所有必要的支持。
群体优化算法:随机扩散搜索(SDS)
本文讨论了基于随机游走原理的随机扩散搜索(Stochastic Diffusion Search,SDS)算法,它是一种非常强大和高效的优化算法。该算法允许在复杂的多维空间中找到最优解,同时具有高收敛速度和避免局部极值的能力。
群体优化算法:思维进化计算(MEC)算法
本文探讨了MEC家族的算法,称为简单思维进化计算(Simple Mind Evolutionary Computation, Simple-MEC,SMEC)算法。该算法以其思想之美和易于实现而著称。
群体优化算法:混合蛙跳算法(SFL)
本文详细描述了混合蛙跳(Shuffled Frog-Leaping,SFL)算法及其在求解优化问题中的能力。SFL算法的灵感来源于青蛙在自然环境中的行为,为函数优化提供了一种新的方法。SFL算法是一种高效灵活的工具,能够处理各种数据类型并实现最佳解决方案。
开发回放系统 — 市场模拟(第 28 部分):智能交易系统项目 — C_Mouse 类 (II)
当人们开始创建第一个拥有计算能力的系统时,一切都需要工程师的参与,他们必须非常熟知该项目。我们谈论的是计算机技术的曙光,那个时代甚至没有用于编程的终端。随着它的发展,越来越多的人对能够创造一些东西感兴趣,涌现出新的思路和编程方式,取代了旧式风格的改变连接器位置。这就是第一个终端出现的时刻。
开发回放系统(第32部分):订单系统(一)
在我们迄今为止开发的所有东西中,正如你可能会注意到并最终同意的那样,这个系统是最复杂的。现在我们需要做一些非常简单的事情:让我们的系统模拟交易服务器的操作。准确实现交易服务器操作方式似乎是一件轻而易举的事情。至少说起来是这样。但我们需要这样做,以便对回放/模拟系统的用户来说,一切都是无缝和透明的。
开发回放系统 — 市场模拟(第 27 部分):智能交易系统项目 — C_Mouse 类
在本文中,我们将实现 C_Mouse 类。它提供了最高级别的编程能力。不过,说到高级或低级编程语言,并不是在代码中包含污言秽语或行话。它有其它含义。当我们谈论高级或低级编程时,我们意指对于其他程序员来说理解代码是多么容易或困难。
开发回放系统(第31部分):EA交易项目——C_Mouse类(五)
我们需要一个计时器,它可以显示距离回放/模拟运行结束还有多少时间。乍一看,这可能是一个简单快捷的解决方案。许多人只是尝试适应并使用交易服务器使用的相同系统。但有一件事是很多人在考虑这个解决方案时没有考虑的:对于回放,甚至更多的是模拟,时钟的工作方式不同。所有这些都使创建这样一个系统变得复杂。
开发回放系统 — 市场模拟(第 26 部分):智能交易系统项目 — C_Terminal 类
现在,我们可以开始创建回放/模拟系统的智能系统。不过,我们需要改进一些东西,并非敷衍了事。尽管如此,我们不应被最初的复杂性所吓倒。重要的是从某处开始,否则我们最终只会空想一项任务的难度,甚至没有尝试去克服它。这就是编程的全部意义:通过学习、测试和广泛的研究来攻克障碍。
开发回放系统(第30部分):EA交易项目——C_Mouse类(四)
今天,我们将学习一种技术,它可以在程序员职业生涯的不同阶段对我们有很大帮助。通常,受到限制的不是平台本身,而是谈论限制的人的知识。这篇文章将告诉你,凭借常识和创造力,你可以让 MetaTrader 5 平台变得更加有趣和通用,而无需创建疯狂的程序或类似的东西,并创建简单但安全可靠的代码。我们将利用我们的创造力修改现有代码,而不删除或添加源代码中的任何一行。
开发回放系统(第29部分):EA 交易项目——C_Mouse类(三)
在改进了C_Mouse类之后,我们可以专注于创建一个类,该类旨在为我们的分析创建一个全新的框架。我们不会使用继承或多态性来创建这个新类。相反,我们将改变,或者更好地说,在价格线中添加新的对象。这就是我们在这篇文章中要做的。在下一节中,我们将研究如何更改分析。所有这些都将在不更改C_Mouse类的代码的情况下完成。实际上,使用继承或多态性会更容易实现这一点。然而,还有其他方法可以达到同样的结果。
开发回放系统 — 市场模拟(第 25 部分):为下一步做准备
在本文中,我们将会完结开发回放和模拟系统的第一阶段。尊敬的读者,有了这样的成就,我确认该系统已经达到了高级水平,为引入新功能铺平了道路。目标是进一步丰富该系统,将其转变为研究和开发市场分析的强力工具。
开发回放系统 — 市场模拟(第 24 部分):外汇(V)
今天,我们将去除阻止基于最后成交价进行模拟的限制,并将专门针对这类模拟引入一个新的切入点。整个操作机制将基于外汇市场的原则。该过程的主要区别在于出价(Bid)和最后成交价(Last)模拟的分离。不过,重点要注意,用于随机化时间,并将其调整为与 C_Replay 类兼容的方法在两类模拟中保持雷同。这很好,因为一种模式的变化会导致另一种模式的自动改进,尤其遇到处理跳价之间的时间。
MQL5中的范畴论(第18部分):自然性四边形
本文通过介绍自然变换这一主题中的一个关键支柱,继续我们的范畴理论系列。我们研究看似复杂的定义,然后深入研究本系列“面包和黄油”的示例和应用程序;波动性预测。
MQL5 中的范畴论 (第 16 部分):多层感知器函子
本文是我们系列文章的第 16 篇,继续考察函子以及如何使用人工神经网络实现它们。我们偏离了迄今为止在该系列中所采用的方式,这涉及预测波动率,并尝试实现自定义信号类来设置入仓和出仓信号。
开发回放系统 — 市场模拟(第 23 部分):外汇(IV)
现在,创建发生在我们将跳价转换为柱线的同一点。以这种方式,如果在转换过程中出现问题,我们就能立即注意到错误。这是因为在快进期间,在图表上放置 1-分钟柱线的代码,也同样在正常表现期间用于定位系统放置柱线。换言之,负责此任务的代码不会在其它任何地方重复。如此这般,我们获得的系统就能更好的维护和改进。
MQL5 中的范畴论 (第 15 部分):函子与图论
本文是以 MQL5 实现范畴论,着眼于函子之系列的续篇,但这次是作为图论和集合之间的桥梁。我们重新审视日历数据,尽管它在策略测试器中存在使用局限,但在相关性的帮助下,可利用函子来预测波动性。
开发回放系统 — 市场模拟(第 22 部分):外汇(III)
虽然这是关于这个主题的第三篇文章,但我必须为那些还不了解股票市场和外汇市场之间区别的人解释一下:最大的区别在于,在外汇中没有、或者更确切地说,我们得不到交易过程中有关一些实际发生关键处的信息。