市场模拟:MQL5 中的 SQL 入门(五)
在上一篇文章中,我展示了如何添加查询机制。这是必要的,以便在 MQL5 代码中能够充分利用 SQL,并使用 SQL SELECT 查询来检索结果。但还有一个函数需要实现,即 DatabaseReadBind 函数。由于要正确理解这个函数需要稍作详细解释,因此决定不在上一篇文章中介绍,而是在今天的文章中详述。鉴于这个主题内容较多,让我们直接进入下一节。
梦境优化算法(DOA)
这是一种基于种群的优化算法,其灵感源自一种尚存争议、研究较少的现象 —— 人类梦境的机制。该算法拥有一个具备不同“记忆”的智能体种群,用余弦波调制移动步长,并采用独特的99/1时间分配比例。让我们看一下这些特性会如何影响交易策略的优化效率。
决斗者算法
如果您的交易策略能像真实的决斗者一样互相较量、彼此学习,会怎样?决斗者算法(Duelist Algorithm)是一种新的优化方法:在该算法中,不同的参数组合会像决斗者一样相互较量,争夺最优解的位置。
市场模拟:MQL5 中的 SQL 入门(一)
在今天的文章中,我们将开始学习如何在 MQL5 代码中使用 SQL。我们还将探讨如何创建数据库。或者更准确地说,如何使用 MQL5 内置的功能来创建 SQLite 数据库文件。我们还将了解如何创建表,以及如何通过使用主键和外键来建立表之间的关系。所有这些都将再次使用 MQL5 来完成。我们将看到,通过使用一个有助于封装底层实现细节的类,创建代码是多么容易,这些代码稍后可以迁移到其他 SQL 实现中。而且,最重要的是,我们将看到,在使用 SQL 时,我们可能会在不同阶段面临出错的风险。这是因为,在 MQL5 代码中,SQL 代码总是被放置在字符串中。
市场模拟(第 22 部分):SQL 入门(五)
亲爱的读者,在你放弃并决定不再学习 SQL 之前,请允许我提醒你,我们目前所使用的只是最基本的内容。我们尚未探讨 SQL 的一些功能。一旦你理解了这些功能,你会发现 SQL 远比它看起来要实用得多。不过,由于创作过程是动态的,我们最终很可能会改变我们正在构建的方向。我们将更多地展示如何在 SQL 中创建不同的内容,因为这对你来说确实非常重要且有用。仅仅认为自己比整个程序员和开发人员社区更有能力,只会导致时间和机会的浪费。别担心,因为接下来的内容将会更加有趣。
科学家群体优化(CoSO):算法实现
我们继续讨论“科学家群体优化”这一主题。不应将 CoSO 视为现成的解决方案,而应将其视为一个有前景的研究平台。经过适当开发,CoSO 可以在那些适应性和应变能力至关重要、计算时间不是关键的任务中找到自己的定位。
从新手到专家:报表 EA — 搭建工作流程
经纪商通常会根据预定的时间表定期提供交易账户报表。这些公司通过其 API 技术,可以访问您的账户活动和交易历史,从而为您生成业绩报表。同样,MetaTrader 5 终端会存储您交易活动的详细记录,这些记录可以使用 MQL5 来创建完全定制的报表,并定义个性化的交付方式。
通过套接字将 MetaTrader 的 Tick 信息从 MQL5 服务传输到 Python 应用程序
有时候,并非所有东西都能用 MQL5 语言编程实现。即使有可能在 MQL5 中转换现有的高级库,那也将是一项耗时的任务。本文试图证明,我们可以通过使用套接字将 MetaTrader 服务中的买卖报价和时间等 tick 信息传输到 Python 应用程序中,从而绕过对 Windows 操作系统的依赖。
科学家群体优化(CoSO):理论
元启发式方法中交易策略有效优化的秘诀。科学家群体优化算法是一种新型的基于种群的算法,其灵感来源于科学界的运作机制。与传统的自然启发式隐喻不同,CoSO 模型展现了人类科学活动的独特方面:在期刊上发表成果、竞争资助以及组建研究团队。
市场模拟:仓位视图(三)
在之前的文章中,我们提到过有时需要为 ZOrder 属性设置一个值。但是为什么呢?原因在于,许多向图表添加对象的代码根本不使用(或者更准确地说,不定义)此属性的值。关键在于,我并不是来规定每个程序员应该或不应该做什么,或者他们应该或不应该如何编写代码的。亲爱的读者,我在此向您以及所有真正想了解这些过程内部运作原理的人展示,幕后究竟发生了什么。
从新手到专家:使用MQL5实现动态新闻标题(9)—— 新闻交易中的单图表多品种管理
新闻行情往往伴随着剧烈波动,交易者需要在极短时间内管理多个持仓与交易品种。在本文中,我们将把多品种功能集成到新闻标题EA中,以集成多品种功能的方式应对多品种交易的挑战。接下来我们一起探讨,如何借助MQL5算法交易,让多品种交易变得更加高效、强大。
您应该了解的MQL5向导技巧(第七十九部分):在监督学习中使用鳄鱼震荡指标和A/D震荡指标
在前一篇文章中,我们完成了对鳄鱼震荡指标与集散量(A/D)震荡指标组合的研究,分析二者在原生信号模式下的应用效果。这两个指标互为补充:鳄鱼震荡指标属于趋势指标,A/D震荡指标属于量能指标。本文作为续篇,研究如何利用监督式学习,优化前文所探讨的各类特征形态。我们采用的监督学习模型为卷积神经网络(CNN),该模型结合核回归与点积相似度,对卷积核和通道进行尺度配置。一如既往,我们将逻辑写在自定义信号类文件中,该文件可配合MQL5向导来生成EA。
竞争性学习算法(CLA)
本文介绍了竞争性学习算法(CLA),这是一种基于模拟教育过程的新型元启发式优化方法。该算法将解的种群组织为若干班级,班级中包含学生,而每个班级中最优的学生充当教师。其中代理通过三种机制进行学习:跟随班级中的最优解、利用个人经验以及在班级之间共享知识。
使用MQL5实现Firebase数据的增删改查
本文提供一份循序渐进指南,带您掌握Firebase的CRUD(创建、读取、更新、删除)操作,重点聚焦实时数据库与Firestore。您将学习如何使用Firebase SDK方法高效管理Web与移动端应用的数据,涵盖新增记录、查询、修改以及删除数据条目。文中提供实用代码示例,并且介绍了实时场景下的数据结构设计与处理最佳实践,帮助开发者依托Firebase灵活的NoSQL(非关系型)架构,开发动态、可扩展的应用程序。
市场模拟(第 24 部分):仓位视图(二)
在本文中,我将展示如何以最简单、最实用的方式使用指标来跟踪交易服务器上的未平仓位。我将逐步演示,以表明您并不一定需要将所有这些操作都转移到 EA 中。你们中的许多人可能因为这样或那样的原因已经习惯了这样做。事实上,这并不完全合理,因为随着这种实现方式的演变,您将清楚地看到,您可以为此目的创建或实现不同类型的指标。
市场模拟(第 23 部分):仓位视图(一)
接下来我们将要介绍的内容,在理论和概念方面要复杂得多。我会让这些材料尽可能简单易懂。编程部分本身相当简单明了。但是,如果你不了解背后的理论,那么在将回放模拟系统改进或调整以适应不同于我将要展示的任务时,你就几乎没有任何可用于进一步改进或适配系统的实际依据。我不希望你只是编译和使用我提供的代码。我希望你能学习、理解,并且如果可能的话,能够创造出更好的东西。
Python-MetaTrader 5 策略测试器(第一部分):交易模拟器
Python 提供的 MetaTrader 5 模块支持通过 Python 在 MetaTrader 5 客户端发起交易,但存在一个重大缺陷:该模块不具备 MetaTrader 5 客户端自带的策略测试器功能。在本系列文章中,我们将搭建一套框架,实现基于 Python 环境的交易策略回测。
人工原子算法(A3)
本文介绍如何在 MQL5 中实现人工原子算法(A3)—— 一种受化学过程启发的元启发式优化算法。该算法只有两个可调参数:紧凑性和较小的种群规模,这保证了较高的运行速度,同时保持了足够的解质量。
从新手到专家:用MQL5实现动态新闻头条(八)—— 新闻交易快捷交易按钮
虽然算法交易系统可以实现自动化操作,但许多新闻交易者与剥头皮交易者更倾向于在高影响力新闻事件和快节奏行情中主动掌控交易,这就要求具备快速的订单执行与管理能力。这一点凸显了对直观前端交互工具的需求 —— 这类工具需集成实时新闻推送、财经日历数据、指标分析、AI分析以及高响应交易控件。
价格行为分析工具包开发(第34部分):借助高级数据采集管道将原始市场数据转化为预测模型
你是否曾错过市场突然的尖峰行情,或者在行情发生时措手不及?预判实时行情的最佳方法是从历史形态中学习。为了训练一个机器学习模型,本文首先向您展示如何在 MetaTrader 5 中创建一个脚本,用于摄取历史数据并将其发送到 Python 进行存储 —— 为您的尖峰检测系统奠定基础。继续阅读,了解每个步骤的实际操作。
使用机器学习检测与分类分形模式
在本文中,我们将探讨一个有趣的话题:利用机器学习进行分形分析和市场预测。这只是迈向探索金融价格图表上形成的各种分形结构的最初几步。我们将利用相关性来发现模式,并使用 CatBoost 算法对这些模式进行分类。
在 MQL5 中实现保本机制(第 2 部分):基于 ATR 和风险回报比的保本机制
本文将完成 MQL5 中基于 ATR 和风险回报比(RRR)的保本机制实现,并从零开始开发一个类,使得在无需重新输入参数的情况下即可轻松切换保本模式。为评估每种保本类型的有效性,我们将进行多次回测,并在算法交易的背景下分析它们各自的优缺点。
协方差矩阵自适应演化策略(CMA-ES)
本文探讨了一种最有趣的非梯度优化算法,该算法能够学习理解目标函数的几何特性。我们将重点关注对 CMA-ES 的经典实现,并稍作修改 — 用幂律分布代替正态分布。我们将深入探究算法背后的数学原理以及实际实现方式,并验证 CMA-ES 在哪些方面无懈可击,以及在哪些方面应避免使用。
市场模拟(第 24 部分):SQL 入门(七)
在上一篇文章中,我们完成了对 SQL 的必要介绍。而且,在我看来,我们已经恰当地阐明了我们想要展示和解释的关于 SQL 的内容。这样做是为了让任何前来查看正在构建的市场回放/模拟系统的人,至少能对那里可能发生的情况有所了解。关键在于,对于那些 SQL 能完美处理的事情,编程是没有意义的。
您应该了解的MQL5向导技巧(第七十六部分):利用AO形态与包络通道进行监督学习建模
本文承接前一篇文章。之前我们介绍了动量震荡指标(AO)与包络通道组合指标,本篇将探讨如何通过监督学习对该组合进行优化增强。动量震荡指标与包络通道是一组在趋势识别与支撑/阻力判断方面彼此互补的指标组合。我们采用的监督学习模型为卷积神经网络(CNN),该网络通过点积核函数与跨时间注意力机制自适应调整卷积核与通道维度。与之前相同,相关逻辑封装在自定义信号类文件中,可配合MQL5向导组装成智能交易系统(EA)。
市场模拟(第 23 部分):SQL 入门(六)
在本文中,我们将探讨如何可视化一个数据库,并借此了解其结构。这是通过分析数据库的内部结构来实现的。虽然乍一看这似乎没有必要,但如果我们真的想成为数据库管理员,那么这样做是完全合理的。毕竟,有些人以维护和设计数据库为生。
开发多币种 EA(第 27 部分):多行文本显示组件
如果需要在图表上显示文本,我们可以使用 Comment() 函数。但它的功能相当有限。因此,在本文中,我们将自行开发一个组件 — 一个全屏对话框,该对话框能够显示多行文本,支持灵活的字体设置和滚动功能。
您应该了解的MQL5向导技巧(第七十二部分):MACD与OBV组合形态的监督学习应用
本文将承接前一篇文章,之前我们介绍了MACD与OBV指标组合,本文将探讨如何通过机器学习对这一指标组合进行优化增强。MACD属于趋势指标,OBV属于成交量指标,二者为互补指标组合。本文采用卷积神经网络机器学习方案,通过有理二次核来设定网络卷积核尺寸与通道数量,从而对这套指标组合的预测结果进行微调优化。与之前类似,所有逻辑都封装在自定义信号类文件中,可配合MQL5向导直接生成智能交易系统(EA)。
数据科学与机器学习(第四十五部分):利用Facebook的Prophet模型进行外汇时间序列预测
Prophet模型由Facebook研发,是一款稳健的时间序列预测工具,能够自动捕捉趋势、季节性与节假日效应,且几乎无需人工调整。该模型已被广泛应用于需求预测与商业规划。在本文中,我们将探讨Prophet模型在外汇交易品种波动率预测中的效果,展示其如何应用于传统商业场景之外的任务。
市场模拟(第 21 部分):SQL 入门(四)
你们中的许多人可能比我更有数据库工作经验,因此可能会有不同的看法。由于有必要解释数据库为何以这样的方式设计,以及SQL为何具有这样的形式 — 尤其是主键和外键为何出现 — 因此有些内容必须保持一定的抽象性。
回溯搜索算法(BSA)
如果一款优化算法能够记住它过往的搜索路径,并利用这些记忆去找到更优解,会是怎样的效果?回溯搜索算法(BSA)正是这样做的 —— 在全局探索与重访已验证可靠区域之间取得平衡。本文将为您揭开该算法的原理奥秘,思路简洁、参数极少、结果稳定。
市场模拟(第 20 部分):SQL 入门(三)
尽管我们可以在包含约 10 条记录的数据库上执行操作,但当我们处理包含超过 15000 条记录的文件时,这样学习效果会更好。也就是说,如果我们试图手动创建这样一个数据库,这项任务将十分艰巨。然而,即便出于教育目的,也很难找到这样一个可供下载的数据库。但实际上,我们无需采取这种手段 — 我们可以用 MetaTrader 5 为自己创建一个数据库。在今天的文章中,我们将探讨如何做到这一点。
海豚回波定位算法(DEA)
在本文中,我们将深入探讨 DEA 算法:一种受海豚利用回声定位捕食的独特能力启发而设计的元启发式优化方法。从数学基础到 MQL5 中的实际实现,从原理分析到与经典算法的对比,我们将详细剖析为什么这一相对较新的方法值得在面临优化问题的研究者工具箱中占有一席之地。
老鹰策略(ES)
老鹰策略是一种模拟老鹰两阶段捕猎策略的算法:通过曼特尼亚(Mantegna)方法实现的莱维(Levy)飞行进行全局搜索,与利用萤火虫算法进行的密集局部开发交替进行,这是一种在数学上合理的探索与开发平衡方法,也是一种将两种自然现象融合为单一计算方法的生物启发式概念。
基于购买力平价(PPP)和 IMF 数据确定公允汇率
用 Python 构建基于购买力平价(PPP)的汇率分析系统。作者利用 IMF 数据开发了一套包含 5 种公允汇率计算方法的算法。这是一份关于外汇基本面分析、经济数据处理以及与交易系统集成的实用指南,全部代码开源。