文章 "MQL5 — 您也可以成为该语言的大师" - 页 2

 

我自己现在正在经历这段旅程,因此下面我将从一个希望使用自己的算法在 Metatrader 金融市场上交易的交易者的角度,对文章主题做一些简要说明。请记住,交易员的主要目标是交易,而软件工程师的主要目标是编程。

1.最大的障碍将是趟过无关紧要的泥潭,如今的互联网学习已成为真正的沼泽。找到好的学习资源要比找到正确的学习资源花费更多的时间和精力。

2.据我所知,没有低成本学习 MQL 的好途径。Udemy 课程并不是那么好(经验之谈),只有在大幅打折(10 欧元或以下)时才值得购买。Youtube 视频:如果您在寻找特定的内容,有些频道还不错。有几个频道只给你最基础的东西。没有一个频道会发布系统的课程,教您所有需要了解的知识,而且不是免费的。大多数免费的好视频通常是付费课程的营销漏斗。这没有错,只是你需要注意。我无法评论付费课程,因为我从未学过任何课程。

3.在软件工程领域,MQL 根本不存在。有一两本书是全面教授 MQL 语言的。因此,即使您有耐心和时间 学习这些知识也会耗费您数月甚至数年的时间。而这些时间本可以用来交易。要在自己的真实账户上制作足够复杂、值得信赖的 EA 和指标,所需的实际知识要少得多。很多东西对于自己使用的代码来说根本没有必要。如果您想成为自由职业者或出售预包装的 MQL 代码,当然需要掌握更多的语言。 附带说明:即使您是一名交易员,也值得花时间和精力学习一般的软件工程(使用 C++ 或 C# 等大型语言之一,但不包括 MQL)。如果你的账户爆仓,作为编码员赚钱可能会让你避免挨饿,并慢慢积累资金 再次 进入游戏

4.本网站上的一套 MQL 参考网页是参考资料,而不是教科书。了解特定 MQL 语言元素的内部和外部是非常宝贵的。它是学习的噩梦(我知道,我试过了)。

5.我认为最好的方法是学习 C++ 的基础知识。C# 或 Java(不是 JavaScript,JS 像 Python,但比 Python 差!)也很适合,尽管要远一些 此外,在我看来,学习 C 语言并无益处。在 2023 年,C 语言将成为系统编程(操作系统、驱动程序等)的利基语言。C++ 包含了您需要的所有经典 C 语言。

6.MQL 的核心功能实际上就是 C++。在基本语言的基础上,增加了一大堆枚举、内置函数和 MT 平台交易专用类。当然,C++ 中不存在这些特定的交易元素。一旦您知道 C++ 中变量、常量、数据类型、函数和对象的一般行为方式,就很容易获得这些额外的特定 MQL 元素。您需要充分学习 OOP,了解它是什么、有什么作用,以及如何在程序代码中与函数一起使用MT 库 内置类中的对象。使用可用的类比自己编程、创建库、管理数十或数百个头文件(.mqh)等要容易得多。自己编程 OOP 就好比建立一个跨国汽车制造公司,只为制造一辆汽车,这样你就可以每天从家里开车去上班了。

7.忘掉 Python。我可以写好几页的篇幅来介绍它,但请相信我的话。 Python 简化了一些事情,却在另一些事情上制造了麻烦。Python 真正的问题在于它有太多的自由。C++ 严格的语法、静态类型以及最重要的编译器,最终导致代码非常清晰可靠。Python 的自由往往是下水淹死自己的自由。学习 C++ 的 "困难 "与其说是现实,不如说是神话。想想看:C++ 的 {} 和 ; 在 Python 中被替换为 : 和强制缩进,最终的努力结果是差不多的 您不需要学习整个 C++ 来掌握 MQL5。我一路学习 Python 到 OOP,然后在 16 个月后意识到自己仍处于算法程序员旅程的 0 点,然后重新学习了 C++(我忘记了将近 30 年前作为 STEM 本科生学习的 C++ 课程的 99%)。此后,我就能编写可用的 MQL5 EA 和指标了。

6.在许多方面,MQL5 比 MQL4 更接近 C++。这导致许多事情在 MQL5 中比 MQL4 更难。尽管如此,在 2023 年,我们仍然不建议初学者学习 MQL4。MQL4 的生命力来自于它在当时的用户群。即使两种语言相同,MT5 也配备了卓越的回溯器,而且可以下载独立的 MT 平台,并拥有永不过期的非经纪商附属模拟账户,让您尽情玩耍。如果需要,一旦掌握了 MQL5,很容易将 MQL5 EA 反向转换为 MQL4。指标需要更多的努力,但仍然可以做到。

7.以下是适合我的学习路径:

- 使用通用编程语言学习编程基础,使用 C++ 最简单,因为它最接近 MQL。所有编程课程都通过简单的控制台程序教授基础知识。MetaEditor 没有控制台。在终端日志中打印 "Helllo World!"远比直接在 控制台上使用 "cout >>"要难得多。您只能通过输入参数与 MQL 代码间接交互,而不能通过 "cin >>"实时交互。

- 一旦掌握了编程基础知识,就可以到 youtube 上查找视频,一步步建立一个完整的工作 EA 或指标(在撰写本文时有很多视频)。首先,观看整个视频,最有效的方法是关闭声音,打开字幕,并将 加速到 1.5 倍或 2 倍,以便掌握内容。然后,再次观看并输入代码,必要时暂停视频并倒带,同时打开声音。

- 不要参加更多编程课程--只需编写代码、编写代码、backtect backtest backtest。 遗憾的是,MQL 不提供单元测试功能(正确的软件工程不可或缺的),但如果有一些创造力,您可以开发自己的方法来使用 backtester 进行单元测试。 需要时,观看更多有关 特定主题的视频。本网站上的文章/帖子也同样有帮助。 根据需要经常按 MetaEditor 中的 F1 键。即使不需要,也要按一下,以便每天学习新知识或巩固已学知识。

 
Eric A. Kantchev 的演示版 来执行您想要的操作。如果您需要,可以在主宰 MQL5 之后,将 MQL5 的 EA 转换为 MQL4。指示器需要更多的努力,但却非常实用。

7.这就是对我有用的学习方法:

- 学习普通编程语言的编程基础,C++ 更简单,因为它是 MQL 的前身。所有编程课程都会教授简单的控制台程序。MetaEditor 没有控制台。在《终端日志》中输入 "Olá, Mundo!"(你好,世界!)的体验远不如直接在 控制台中输入 "cout >>"。您只能通过输入参数来间接地与 MQL 代码进行交互,而不能通过 "cin >>"来实时交互。

- 在掌握了程序的基本原理之后,请访问 youtube 观看视频,逐一了解如何构建一个完整的 EA 或功能指示器(目前已有许多视频)。首先,协助观看内部视频,以更高效的方式删除视频和图例,并将 加速至 1,5 倍或 2 倍,以欣赏视频内容。然后,重新启动并同时删除字幕,暂停视频并重新启动(如有必要)。

- 无需进行更多的程序设计 - 只需对代码进行编码、回溯测试和回溯测试。遗憾的是,MQL 不具备单机测试的便利性(这对软件工程是必不可少的),但只要有足够的创造力,您就可以开发出自己喜欢的方法来使用回溯测试器。 如需了解更多详情,请访问 。本网站的文章/帖子也可被删除。 请在 "元编辑器 "中按 F4 键。如果您想学习新知识或回顾每天所学的内容,请也按 F4 键。

谢谢你提供的证据。这或多或少就是我写这篇文章的初衷。因为很多人一开始都不知道该往哪个方向走,最终放弃了学习或研究,认为这是一件非常困难或不切实际的事情。

 
文章好好看
 
非常有帮助
 
MetaQuotes:

新文章 MQL5 — 您也可以成为该语言的大师已发布:

作者:Daniel Jose

我也想當大師

 
这篇文章很有价值,评论者的见解更有价值!
 
这很有帮助。感谢您的分享。
 
很好的建议。我以为用人工智能创建 EA 会很容易,但我错了。最好从聊天 GPT 中学习 C、C++。我是 Algo 交易的新手,不懂任何代码语言,但这仍然像游戏一样有趣。我非常感谢你的建议,我很喜欢玩这个游戏。
 

非常好的文章。它让我回到了童年,那时我在苹果 IIe 上用 DOS 语法绘制原始图形。

根据我后来的经验,MQL4 很容易学,因为它基本上是 C 语言的骨架版本。 多年后,我读了一本硬拷贝 MQL5 EA 编程书(现已绝版)的前 50 页,然后开始学习MQl5 编程。多年后,那本书仍然摆在书架上,书签就在第 50 页。所有这些都证明了文章作者提出的边做边学的建议。

虽然我曾涉猎过 Easylanguage 和 Python,也不止一次地涉猎过 MS Excel,但我还是坚持使用 MQL5,因为本地代码总是比 MT5 外部的管道或桥梁更快。此外,MQL5 的 "可选 "面向对象编程 (OOP) 元素对于我现在进行交易的期货交易所的自动交易是必不可少的。如果您想学习 MQL5,我建议您先阅读有关什么是 OOP 的入门读物。

比害怕学习一门新的编程语言更可怕的是害怕落后。

 
Sergey Pavlov #:
一篇赞扬自己是天才的文章:类似于 "我将教你如何从零开始成为编程大师,但事实证明,要做到这一点,你需要了解 C++,并有 23 年使用 C++ 的经验。而令人惊讶的是,有了这样的行李(C/C++),学习 MQL5 编程只花了 2 年时间。最后,"胡说八道","我是个天才,你 25 年后就能学会"。很遗憾,这样的文章发表在....。

一个巴西人花了 23 年时间用 C++ 写出 "Hello World!",这又怎样?我当然没有。也许他们会在他的故乡为他铸一座青铜纪念碑!所以我们默默地羡慕他。

我想说明的是,在将 int 类型隐式转换为 bool 时,false 的值实际上是零,而 true 则是与零不同的任何值。在 bool->int 转换时,一切都仅限于 0 和 1。

    bool b1 = 0, b2 = -5, b3 = 5;
    Print(b1,", ", b2,", ", b3);
    Print((int)true,", ", (int)false);

2025.04.15 01:48:32.862 BuySellStop (USDCAD,M15)        false, true, true
2025.04.15 01:48:32.862 BuySellStop (USDCAD,M15)        1, 0