文章 "轻松快捷开发 MetaTrader 程序的函数库(第 二十五部分):处理交易服务器返回的错误" - 页 2

 
Artyom Trishkin:

关于魔数值中记录的信息:

您可以为每个组使用不同的魔法来创建不同的组。例如,如果顾问的魔法号码是 123,那么第一组的魔法号码就是 124,第二组的魔法号码就是 125,第三组的魔法号码就是 126,以此类推。
程序库提供了另一种创建不同组的方法--每个子组的编号直接存储在神奇数字值中。然后,EA 的魔法编号也是一个组标识符,但它被放在一个名为 MagicID 的独立组中,即 EA 的魔法编号标识符。还有两个组。每个组都有 15 个子组。每个子组都有自己的标识符。

这样,在使用组时就有了更大的 灵活性。

例如:我们想将挂单网格移动到价格后面--将它们添加到子组 1 的组 1 中。组 1 移动到价格后面。子组 1 沿 MA 移动。现在,我们想通过抛物线 SAR 将其中一些订单移动到价格(第 1 组)后面。我们将它们归入子组 2。然后,第 1 组跟随价格移动,但第 1 子组按 MA 移动,而第 2 子组按抛物线 SAR 移动。

订单被触发,转为头寸--您可以设置自己的组来修改止损,并在该组中设置自己的子组按不同值修改。修改算法在子组中编写。

总的来说,这是一种花式操作。您也可以使用简单的魔术,但必须自己发明跟踪不同组的逻辑。

关于第二个问题:

有一个 CSelect 类。它可以从程序中获取,并提供了从所有现有集合(账户、事件、订单、符号)中进行选择和搜索的方法。

您可以根据所有条件将每个集合中的对象选入一个列表。在创建的列表中,您可以通过细化标准进行重新选择,也可以找到选择标准的最大值和最小值。

不过,以后还会有自定义功能(稍后),可以快速方便地访问所有集合的所有属性,并在其中进行搜索。

但现在--只能通过 CSelect 在需要时使用。该类是静态的,因此可以通过"::: "访问其方法。例如,CSelect::ByOrderProperty()。

是的,顺便说一下,在测试 EA 中就有一个使用该类的例子,例如在其尾部函数中:

我想出了 CSelect,但事实证明,我必须在每个需要汇总值的地方做出选择:比如,我需要计算一个仓位网格的总利润,以便对其进行追踪,这是一个函数。而在另一个功能中,我需要在开仓或平仓一个订单后调整网格的总吸纳量,为此我需要总利润和总成交量。

在其他地方,我需要决定是打开一个新的网格还是继续当前的网格--我需要知道在这一组中我已经打开了多少订单。

所有这些值都是通过运行列表计算出来的,可以通过一系列 CSelects 来选择。但是,由于我需要在不同的地方使用它们,因此每次我都必须启动一个聚合构造,在 tick 开始时重新计算,然后在所有地方使用它们。

我想,如果能在库中添加这样一个结构,并能根据一组选择标准(如符号、魔法(带组)、订单类型)来分配它,那将会很好。

并让它收集简单的统计数据:订单数量、总成交量、总利润......顺便说一下,既然我们已经选择了订单集合,那就可以让它收集这些数据。

否则,要么每次都创建一个辅助结构,要么在每个地方都使用 CSelects 和迭代。

 
rigal:

我想出了 CSelect,但事实证明,我必须在每个需要汇总值的地方做出选择:例如,我需要计算一个仓位网格的总利润,以便对其进行追踪,这是一个功能。而在另一个功能中,例如,我需要在开仓或平仓某个订单后调整网格的总吸纳量,为此我需要总利润和总交易量。

在其他地方,我需要决定是打开一个新的网格还是继续当前的网格--我需要知道在这一组中我已经打开了多少个订单。

所有这些值都是通过运行列表计算出来的,可以通过一系列 CSelects 来选择。但是,由于需要在不同的地方使用这些值,因此每次我都必须启动一个聚合结构,在 tick 开始时重新计算,然后在所有地方使用。

我想,如果能在库中添加这样一个结构,并能根据一组选择标准(如符号、魔法(带组)、订单类型)来分配它,那将会很好。

并让它收集简单的统计数据:订单数量、总成交量、总利润......顺便说一下,这是一个订单集合,因为我们已经对它进行了采样。

否则,要么每次都创建一个辅助结构,要么在每个地方都使用 CSelects 和迭代。

你打算让库本身的计算变得更繁重?那里已经有很多东西需要计算了。

为什么不直接在 EA 而不是库中进行你建议的计算呢?在哪里计算都一样。但有人需要(你),有人不需要。为什么他需要不必要的计算?

为了避免每次都在不同的函数中计算相同的内容,您应该在 "智能交易系统 "中创建全局列表,将您需要的信息放在其中。在单独的函数中,只在需要时才使用这些公共列表,从中获取只在函数内部需要的数据,并将其返回。
库提供了一组数据,可以任意组合选择这些数据,还提供了解决从头开始无法快速完成的任务的工具。

 
Artyom Trishkin:

你的意思是要降低图书馆本身的计算权重?那里已经有很多计算在进行了。

为什么不直接在 EA 而不是库中进行你建议的计算呢?在哪里计算都一样。但有人需要(你),有人不需要。他为什么需要额外的计算?

为了避免每次都在不同的函数中计算相同的内容,您应该在 "智能交易系统 "中创建全局列表,您可以将所需的信息放在其中。在单独的函数中,只在需要时才使用这些公共列表,从中获取只在函数内部需要的数据,并将其返回。
库提供了一组数据,提供了以任意组合方式选择这些数据的可能性,并提供了解决从头开始无法快速完成的任务的工具。

好吧,我建议让它变得可有可无。

开始 "订阅"。

但如果您觉得这个想法不值得考虑,我一定会自己编写封装程序。

再次感谢已经完成的工作--以及所有仍在计划中的工作(我在这里和那里对继续开发图书馆的计划持保留意见)。

 
rigal:

好吧,我建议选择性计数。

进行 "订阅"。

但如果你们觉得这个想法不值得考虑,我一定会自己写包装。

再次感谢你们已经完成的工作,并感谢你们正在进行的其他工作(我在这里和那里都看到了关于继续开发该库计划的保留意见)。

计划中会有类似的功能。是的,我们还有很多计划要做,目前只完成了不到三分之一。
 
我在密切关注)