EA 算法的工作原理
在本章中,我们将讨论算法如何与您 EA 的各个部分协同工作以及它的行为方式。
您的 EA 的模块化系统
Section titled “您的 EA 的模块化系统”您的 EA 由算法交互的模块组成。正是因为模块化设计,您才能创建任何 EA。 模块分为三类:
- 阻止开仓的模块
- 用于开仓的模块
- 用于平仓的模块
了解更多关于模块的信息。 正如您在上图中所看到的,算法将与一个或多个模块进行交互。在下一章中,我们将详细介绍这一点。
您的 EA 的行为
Section titled “您的 EA 的行为”您的 EA 算法将根据其状态表现出不同的行为:
- 没有未平仓订单
- 有一个或多个未平仓订单
没有未平仓订单
Section titled “没有未平仓订单”当没有未平仓订单时,EA 所做的就是等待 Open Signal(开仓信号)。当信号激活时,它将开仓,除非 Prevent Open(阻止开仓) 模块阻止了它。
一个或多个未平仓订单
Section titled “一个或多个未平仓订单”当有未平仓订单时,您的 EA 将评估是否应该平仓,基于 SL/TP 是否被触及或 Close Signal(平仓信号)是否已激活。 当 SL/TP 被触及或 Close Signal 激活时,它将首先检查在平仓当前订单后是否会(假设性地)开立新订单。 这通过评估 Open Signal(考虑阻止开仓的模块)和 Close Signal 来完成。因此,与没有未平仓订单时相同的过程会被评估。如果(假设性地)不会开立新订单,则该订单将被平仓。 此外,EA 将评估是否需要开立额外的订单。额外的订单只有在 Open Signal 激活时才会被开立,即在至少处理了 1 个报价后变为非活跃状态后重新激活。
- 当订单的 SL 或 TP 被触及,或通过 Close Signal 时,订单将被平仓。所有用于平仓的模块都可以影响订单的 SL/TP。SL 设置在订单下方(从买入角度来看),只能被同一个或另一个模块向上移动。TP 则相反:只能被向下移动。SL/TP 值目前不会发送给经纪商。
- 只有当订单在平仓后不会立即重新开立时,订单才会被平仓,因为如果算法平仓后,另一个订单会立即被开立,您将损失另一次往返的佣金/点差。为了验证这种情况,在平仓前会重新评估 Open Signal,同时考虑 Prevent Open 模块。例如,当订单在开仓后几秒钟内需要平仓时,Open Signal 很可能仍处于活跃状态。这可以通过使用 Prevent Open 模块来应对,例如 Time gap between orders(订单间时间间隔) 模块。这样做时,在平仓后 Open Signal 将被阻止,因此订单可以被平仓。
- 当使用 *Multiple order Open module(多订单开仓模块)*时,当 Open Signal 从活跃(开立了前一个订单)变为非活跃并再次激活时,将开立额外的订单。