文章 "基于交易模块创建多个 EA 交易"

 

新文章 基于交易模块创建多个 EA 交易已发布:

在 MQL5 中使用面向对象方法这一做法,极大简化了多币种/多系统/多时间表 EA 交易的创建过程。不妨想象一下单个 EA 交易采用多个交易策略、使用一切可用工具以及利用所有可能的时间表进行交易的情形!此外,EA 交易还方便使用测试程序进行测试,并且对于所有策略而言,该交易包含了一个或多个资金管理工作系统。

作者:Василий Соколов

 

瓦西里,老实说,我期待着更好的结果。在这部著作中,您成功地让读者对您建议的含义感到困惑。

但您本可以更简单地称呼它--"如何在 MT5 终端中使用 MQL4 逻辑交易智能交易系统"。这才是您应该注意的。
如果您将重点放在这个基石上,它就会更加简洁易懂。

因此,首先加载动态列表及其在此特殊情况下的应用。然后是虚拟订单表。

MQL4 的整个逻辑在 MQL5 中使用两种方法 的功能得到了解决!
1. 从终端历史中恢复止损和止盈单
2. 当其中一个被执行时,进一步控制它们。当其中一个被触发或主订单被删除时,进一步控制它们。

在解释完这两个基本功能 后,继续讲解动态数组 和构建 "models-mql4-experts"。

虽然挂单并不比市价单复杂,但它们只是延迟了真正止损单和止盈单下 达的时间。

由于某些原因,他们给读者加载了无用的文件<Time.mqh>, 其功能实现得并不漂亮。

然后是订单计数和批量控制功能。

他们似乎想把您与专家合作的所有知识都写进文章里,却把文章的目的掩盖了。

好吧,关于给定的模型 - 我不明白您是如何在订单上使用止损和止盈的。无论是在 IACD 还是在 Bolinger 中,我都没有发现止损的使用。

总的来说,我不喜欢读这篇文章。有很多不必要的重量,埋葬了一个聪明的想法。

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 

是的,如果不从账户历史(或自己的文件)中恢复交易列表,它就会变成测试者的玩具。

 
udmurt2:

您没有介绍挂单 工作,这一点非常糟糕。

有挂单工作,但写在文章的最后。(您可能没有耐心读完:))。

总的来说,这篇文章真的很难理解。在信息表述方面,文章的结构可以更好。

 

to:Udmurt2

您认为我文章中 MQL4 专家的逻辑在哪里?从您写的评论中,我感觉到您完全不了解材料。当然,这在很多方面都是我的错,也许我真的应该把文章写得更好一些。

--------------------------------

您对改进文章结构有什么具体建议吗?

我同意,很多事情都被 "抛在了脑后"。把这个版本视为 1.0。以下是计划引入的内容:

1.基于数据文件的数据序列化;

2.通过订单历史重建模型交易历史;

3.根据挂单全面描述模型; 4;

4. 使用相互计算订单的复杂系统描述交易模型;

5.动态控制每个模型的效率(从模型列表中删除低效模型)。

6.从交易模型中撤出外部功能,如资本管理功能。

7.7. 支持多线程(由于 MT5 内部并行化,目前已部分使用)。

...

正如您所看到的,仍需考虑的材料非常全面,是时候再写一篇文章了,可以说是第二部分。无论如何,这篇文章不是一篇橡皮文章,我相信我为自己设定的任务已经完成。在这里,Udmurt2 尤其错了。建议方法的基础是动态列表,而不是挂单(在他看来是出于某种原因)。这就是为什么对它们如此关注。总的来说,没有什么策略是不使用挂单就无法解决的。不过,我提出的方法并不限制使用模拟相同止损和止盈的挂单。不过,在这种情况下需要额外的检查和程序子系统,特别是描述 Trade() 事件的结构将非常有用。虽然没有这样的结构(因为 MQL5 正在开发中),但我认为为不存在的可能性编写控制系统完全是一种疯狂的行为。

顺便说一下,在最简单的情况下,您可以在几个小时内从文件中编写一个交易恢复器。不过,这篇文章并没有考虑这个问题,因为我希望这个解决方案是经过深思熟虑的,而不是草率编写的。无论如何,这将是第二部分要解决的许多有趣问题之一。

MQL5 正在开发中。建议的方法和 MQL5 一样,也将随着时间的推移而发展,并获得机遇。在某些人看来,现阶段的 MQL5 可能只是测试人员的玩具。在这种情况下,我们可以说 MetaTrader 5 也是模拟账户的玩具。但相信我,用不了多久,MT5 就会成为事实上的标准,而我提出的方法也将成为多货币/多时区/多系统交易的强大解决方案。现在最主要的是了解基础知识。这些基础知识就是我在本文中概述的内容。一旦理解了它们,你就可以利用挂单和在文件中记忆交易的所有优势,轻松编写自己的交易模型。

 
对了,还有一件事。我最初是为自己编写交易引擎的,因为我是一名活跃的 MTS 交易员。我需要这样一个引擎,以便将来能在真实账户 的工作中使用。现在还没有真实账户,而且还没有完全过渡到 MT5。因此,我仍有时间考虑并在提议的模型中实现在真实账户上进行交易所需的功能。无论如何,我相信由于高度封装和灵活的内存管理,可以实现高度的可扩展性和通用性。在拟议方法的基础上,可以创建许多有趣的服务子系统,例如:针对列表中每个交易模型的效率控制系统、针对每个模型的单独资本化系统(已经实现)、有条件地将交易模型纳入/移除列表的系统(如果市场具有某些形式化的属性,而该模型在这些属性下是高效或低效的,它就会被动态地纳入列表或从列表中移除)。此外,该算法可以同时处理数百个模型(未来计划通过标准方法引入多线程)。请告诉我,还有哪种方法具有这样的灵活性和可控性?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
C-4:

您认为我文章中 MQL4 专家的逻辑在哪里?

请打开开头阅读:

下面是我们需要解决的主要任务:

  1. 专家顾问应同时基于多个交易系统进行交易。同时,一个交易系统和多个交易系统的交易应该同样容易;
  2. Expert Advisor 中包含的所有交易系统不得相互冲突。每个交易系统必须只处理自己对总头寸的贡献,只处理自己的订单;
  3. 任何一个综合系统都必须同样易于在一个工具的时间框架内或同时在所有时间框架内 进行交易。
  4. 任何汇总系统都必须同样易于同时在一种交易工具和所有可用工具上进行交易。

通过所有这些要点,MT4 终端的逻辑清晰明确

1. 由于神奇的无净头寸功能,它可以同时引导多个智能交易系统。
2. 由于同样的神奇功能和无净头寸功能,智能交易系统不会相互冲突。
3.所有交易均可在任何时间框架内进行
4.所有交易均可在任何工具上进行。

问题:您写了哪些 MT4 终端中没有的新内容?

我在上面写道,您可以从 MQL4 的基础上建立您的推理,并开发其实现。

您对改进文章结构有什么具体建议吗?

我会以循序渐进的方式构建文章,从通过 magik-ticket 计算止损点到创建交易智能交易系统模型--MQL4
,然后再转到控制多个智能交易系统的方法。(列表/非列表随心情使用)

将此版本视为 1.0。以下是计划介绍的内容:
2.通过订单历史重建模型交易历史;
3.根据挂单对模型进行全面描述;
4. 使用相互计数的复杂订单系统对交易模型进行描述;

第 2-4 点是您应该在这篇文章中立即解决的问题。其他所有问题都来自邪恶的那篇文章,可由程序员自行决定或在第二篇文章中解决。

在这里,Udmurt2 尤其错得离谱。建议方法的基础是动态列表,而不是挂单(在他看来是出于某种原因)。这就是为什么对它们如此关注。
不管您怎么看,但这种方法的基础(您最初的任务和本文的目的)不是列表,而是在 MT4 Expert Advisors 的逻辑上传播 MT5 净头寸,并通过 magik-ticket 处理其止损。

动态列表只是其控制和核算方法之一。

请告诉我,还有哪种方法具有这样的灵活性和可控性?

任何 MT4 专家:)))

 

C-4:

在某些人看来,现阶段的 MetaTrader 5 只是测试人员的玩具。在这种情况下,我们可以说 MetaTrader 5 现在也是模拟账户 的玩具。

没错)

但 MT 正在最终定稿。文章中提出的代码可能是为真实账户编写的。


顺便问一下,Championship Expert Advisor 如何?它是否遭受过重启?

 

瓦西里,你一定是工作太辛苦了。有时候,你需要回到起点,重做一切。我已经千百次地确信,人们倾向于将一切都复杂化。 我向您提出一个友好的建议--重新编写关于 MT4 终端与线性设备操作母逻辑的基础课程。很多事情都会变得更加清晰。
否则,我将不得不写第二篇文章:)

 
komposter:

是的。)

但 MT 正在最后敲定。而文章中提出的代码本可以立即编写,以备不时之需。

顺便问一下,冠军 EA 怎么样?它受到重启的影响了吗?


有,但不严重。当然,它有一个内置的初始化/取消初始化事件处理程序。 不过,有一点我没有考虑到:初始化和取消初始化可以在非工作时间进行,例如周六,这也是锦标赛组织者的安排。只需几行代码就能解决这个问题,但我没有意识到这样一个阴险的组合(好吧,你不可能把所有事情都考虑进去),所以在某个地方损失了很多东西。

我将在最近的将来尝试编写一个简单的数据序列化,并将其插入到文章中(原则上需要两天时间)。有了它,我们就可以在实时账户(模拟账户和真实账户)上使用这个成熟的产品了。所以你说这是测试人员的玩具。要在真实账户上可靠使用,它只缺少 5-6% 的维护代码。

我们还计划引入这样一种东西:假设有一个抽象的交易模型。它只使用挂单(止损、止盈、进场点)。在引擎中将有两种使用方法:所有进入点都将是虚拟的,不会被经纪人发现。第二种方式:所有止损点和入场点都是挂单,以提高可靠性。有趣的是,每种模式都有两种类型的虚拟化(挂单和虚拟)。即:switchvirtual_orders=true; - 所有订单都是虚拟的,不会被经纪人发现;switchvirtual_orders=false; - 所有订单都会神奇地变成挂单。最棒的是,不需要模型提供特殊支持,一切都将在引擎级别实现。模型只需指定进入点的订单类型,止损和止盈类型将根据 virtual_orders 开关独立选择。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

致:Udmurt

请不要告诉我应该做什么,不应该做什么。我不为你的利益服务,也不为你工作。

我认为我们的谈话是无稽之谈,因为您甚至没有完全理解您自己言论的实质。证明给我看,你真的了解 MQL4,并写出了关于它的交易专家,例如,同时交易 500 种不同的交易模型。让我们以 5 种策略 * 20 种工具 * 5 种时间框架为例。当您的 Expert Advisor(智能交易系统)至少能在测试版中清晰地运行时,我才会承认您所说的过激的废话并非真正的废话,而是一个聪明人的有用之言。现在我想请您帮个忙:不要无缘无故来烦我,没有这个专家的源代码也不要试图与我交流。