[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 306

 
drknn:

一个 "无限 "长度的数组可以在一个指标中声明。声明它,然后在循环中立即将找到的值写进数组。唯一的问题是如何将必要的选择转移到专家顾问/脚本?有一些工具,但我们需要评估其复杂性。也许做2次运行真的会更容易--在第一次运行中,我们计算过滤值的数量,然后改变数组的维度,在第二次运行中,我们把值输入数组?

谢谢,但与指标的变体不合适--在将获得的样本转移到专家顾问之前,将样本条件从专家顾问转移到指标上有问题。
 
PapaYozh:

声明一个大于最大要求尺寸的数组。


正是如此 :)如果我们把尺寸增加许多倍,它就能发挥作用。例如,我们事先知道,过滤的数值不能超过一千。让我们声明 有几千个单元的数组,我们就完成了 :)

但它会占用一些必要的内存。:(

 
drknn:


正是如此 :)如果我们把尺寸增加许多倍,它就能发挥作用。例如,我们事先知道,过滤的数值不能超过一千。让我们声明有几千个单元的数组, 我们就完成了 :)

但它会占用一些必要的内存。:(


如果"我们事先知道过滤后的数值不能超过一千",那么 声明 大小为1000的数组 就足够了。
 
splxgf:

https://docs.mql4.com/ru/math/MathPow 不?或者说初级运算是问题的一个条件。那么选项http://bpascal.ru/download/desc/436.php,如果你用手做所有事情,那么用自己的函数实现指数和对数。

是的,完全按照条件。谢谢你的链接,这正是我所需要的。
 
Elenn:
下午好,一些建议:循环搜索满足某些条件的值。找到的值被写入一个数组中。事先不知道会找到多少个值。 因此,要声明的数组的大小是未知的。从时间和资源的角度来看,我宁愿不进行两次运行(这样我就可以在第一次运行中计算找到的值的数量,在第二次运行中声明数组并将数据写入数组中)。有什么办法能在一次运行中获得所需的结果吗?
每找到一个值,你就可以增加一个单元格的大小,这就是数组。但这并不是非常快。你可以通过增加几个单元格的大小来进行优化,然后跳过几个迭代的大小调整。
 
PapaYozh:

如果你"事先知道过滤后的数值不能超过一千", 你可以直接声明一个大小为1000的数组。


但在发生不可抗力的情况下,应急计划又是什么呢?你会写代码通知错误并阻止专家顾问吗?好吧,一个人可能看不到--好吧,那一刻他只是在工作。

是的,的确,问题的解决方案不止一个。我认为最好的解决办法是Zhunko 建议的办法--在过滤循环中动态增加数组的维度。坦率地说,我对这个答案感到很高兴。我从来没有想过 :)

 
drknn:


我认为最好的方法仍然是Zhunko 建议的方法--在过滤循环中动态增加数组的维度。说实话,我对这个答案感到很高兴。我从来没有想过 :)

这个办法真的很新颖,我应该试试。但是当重新宣告阵列时,由于重新初始化,数据不会丢失吗?
 
Elenn:
这个解决方案真的很有创意,我们应该试试。但是当你重新声明数组时,数据不会因为重新初始化而丢失吗?

我经常这样做。我创建了一些初始阵列。然后(如果有必要)我用某个值将其最大化(一个不行,执行数组操作需要太长的时间),在工作中只需检查实际填充的数组 的大小。到目前为止,还没有出现任何问题
 
Vinin:

阵列操作完成的时间过长
任何数组操作都是长的,还是只有某些操作是长的?
 
Elenn:
执行任何数组操作都需要很长时间,还是只需要某些操作?

特别是调整一个数组的大小。最好是尽可能少地做这些事情