一个分讲习班,以填补FAQ(常问问题)。让我们帮助同志们! - 页 14

 
TheXpert:
而正确的做法是,我认为,总是向航站楼询问最新的信息。

订单(数组)的状态 在需要处理时被精确地查询到。

我并不是说我们可以不这样做,我们也不必事先得到一个masiew。并在OrderSelect后立即分析订单的需求状态,按魔术师、符号等过滤掉不需要的订单。

但你辩称,票据阵列是一个UG。说明原因。

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

塔拉斯建议,当所有关于订单的信息被写入数组时,可以选择 "超"。我只能在不需要这一切信息的立场上同意这一点。而在简化版中,在大多数情况下,只需要门票就可以了。

 
TheXpert:
我不建议这样做。更多的时候,根本就不需要一系列的票据。而正确的做法是,我认为,总是向航站楼索取尽可能多的最新信息。
在一个数组中,你会得到信息,有条件地生活在1个勾中。你还需要什么 "新鲜 "的信息?我使用自己的做法,当我有2-4个多货币账户(我指的是演示账户),不允许为不必要的事情 "打扰服务器"。

而一般来说,这是你和我个人的观点。而用户必须始终被赋予选择权--谁的论点更合理。;)

P.S. 而且我只对常见问题中提出的问题给出了我的答案。:)

 

OK,IMHO UG,因为IMHO 拥有最新的订单信息是正确的。而且,IMHO, 你可以在95%的时间内不使用订单阵列。

你想 -- 补充一下,我只是在说我的看法。

 

我们这样说吧。

- 从便利性和模型的抽象性来说,使用数组更好。
- 为了加快工作速度--没有阵列。

信息的相关性 与此毫无关系。在这两种变体中--有或没有阵列--相关性都是100%的 新鲜。

 
sergeev:

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

塔拉斯建议使用 "超 "选项,即把所有关于订单的信息都写到阵列中。我只能在不需要所有这些信息的立场上同意这一点。 而在简化的变体中,大多只需要门票。

阿列克谢!我远远没有想到,在FAQ中介绍这个问题(获得 "自己 "订单的票据阵列),你的意思是关于 "不需要所有这些信息的立场" - 喜欢玩耍吗?
还是我误解了什么?
 
TarasBY:
阿列克谢!我远远没有想到,通过将这个问题引入FAQ(获得 "自己 "订单的票据阵列),你的意思是 "不需要所有这些信息的立场" - 喜欢玩?还是我误解了什么?


由于某些原因,你在 "你的票 "的概念中除了票之外还包括了所有的属性。

但我肯定已经把你的建议作为 "只需一张票 "功能的延伸。

也经常需要这样做,特别是在分析和比较历史 订单数据 时。

 
sergeev:


我们这样说吧。

- 从便利性和模型的抽象性来说,使用数组更好。
- 为了加快工作速度--没有阵列。

信息的相关性 与此毫无关系。在这两种变体中--有或没有阵列--相关性都是100%的 新鲜。

我不会对第二个问题("为了加快工作速度--没有数组")过于草率。
简单的逻辑表明,为获得 "新鲜信息 "而对服务器进行的额外访问就是额外的时间。而且,它在时间上无法与从阵列中获取相同的信息竞争。
有一位代码速度方面的专家--维克多(Vinin),他的意见会很有趣
 
TarasBY:
关于第二个问题("没有阵列来加速工作"),我不会太急于断定。简单的逻辑表明,为获得 "新鲜信息 "而对服务器进行的额外访问就是额外的时间。而且,它在时间上无法与从阵列中获取相同的信息竞争。有一个代码性能专家维克多(Vinin),他的意见将是有趣的!



再一次,在使用订单属性 时,没有服务器可供联系!这就是我们的工作。

在交易中,最重要的规则是相关性(以避免变成TheXpert写的UG)。
所以,如果你在每个函数中都参考订单列表,并重新创建一个数组,肯定会导致速度减慢。它将导致阵列填充。

因此,我们可以在数组的实际化和重复的OrdeSelect(已经在票面上)上省钱。

如果你有1-2个工作订单,这个阵列并不关键,但如果你有50-100个,那就已经很重要了。

 
我再多说几句:基于我之前提出的 "减少服务器负载 "的概念(我更确切地称之为 "代码速度优化"),我在Start()的开头,在一个单独的数组中获取所有价格(如果我需要几个工具)。而如果我需要进行交易操作,我就做RefreshRates()。

我并没有把这种方法强加给任何人,我只是看到了它背后的道理,并在我的设计中使用这一原则。

P.S. 这并不是要在这个话题上发起争论,它只是对上述内容的一个论证。

 
sergeev:

因此,如果你在每个函数中参考订单列表并重新创建数组,肯定会导致速度下降。因为阵列的填充。

我说过吗?如果EA是在每个tick 上工作,ticks数组将在每个tick上填充一次。然后代替通常的采样:
    for (int li_int = li_total - 1; li_int >= 0; li_int--)
    {
        if (OrderSelect (li_int, SELECT_BY_POS))
        {
        .......
        }
    }
我从
中选择
for (int li_TIC = 0; li_TIC < gi_cnt_Tickets; li_TIC++)
{

}

或:
    for (int li_SMB = 0; li_SMB < ArraySize (gsa_Symbols); li_SMB++)
    {
    }
这取决于我对这个或那个功能感觉更舒服。
我必须同意,这种方法的合理性在多币种系统中更加明显,而这种系统是少数。