新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1840

 
Vitaly Muzichenko #:

复制到一个数组

如何获得一个数组中的最大高度?

另外复制CopyHigh并从这个数组中获得最大的。我明白,通过......它......但唯一的办法是在循环中尝试过来。

 
Alexey Viktorov #:

另外复制CopyHigh,并从这个数组中获得最大的。我明白,通过......它......但另一个选择是只有循环的。

我这么做了,但这是额外的复制。使用一个循环也是不可取的。

我把它留给CopyHigh

 
Vitaly Muzichenko #:

我做了,但这是一个额外的副本。穿过环路也不是一个选项。

那我就通过CopyHigh 留下吧。

我已经想了很久了。我得出的结论是,如果我们需要从MqlRates 数组中寻找最小/最大值,最好将所需数据复制到不同的双数组中。

 
Vitaly Muzichenko #:

复制到一个数组

如何获得一个数组中的最大高度?

CopySymb[i].high
 
Vitaly Muzichenko #:

复制到一个数组

如何获得阵列中的最大高度?

你可以直接写在代码中。

MqlRates CopySymb[];
double maxHigh;
int iMaxHi, len;  

if((len = CopyRates(mSymbol,PERIOD_CURRENT,0,6,CopySymb))<0) return;

iMaxHi = 0;
maxHigh = CopySymb[0].high;

for (int i = 1; i < len; i++)
  if(CopySymb[i].high > maxHigh) {
    maxHigh = CopySymb[i].high;
    iMaxHi = i;
  }

Print(iMaxHi, ": ", maxHigh);

而且,ArrayMaximum对MqlRates数组不起作用,这也是可以的。

 
Mihail Matkovskij #:

你可以直接写在代码中。

但如果你想一想?

即使在这个简短的代码中,也有残酷的错误。

 
Maxim Kuznetsov #:

如果你考虑一下呢?

即使在这个简短的代码中,也有残酷的错误。

在网上写了代码。看了一遍,修复了所有的错误,我想。将代码粘贴到脚本中,如果有错误,编译器会显示出来。

 
Mihail Matkovskij #:

在网上写了代码。看了一遍,修正了所有的错误,我想。将代码插入脚本,如果有错误,编译器会显示错误。

编译器没有办法解决,你只需要知道:CopyXXX的结果中可能有0和EMPTY_VALUE。非常少,但很好。EMPTY_VALUE是DBL_MAX,即最大值。这就是你会发现的。

没有检查从外部接收的数值的正确性。

 
Maxim Kuznetsov #:

这个问题无法用编译器解决,你只需要知道:CopyXXX的结果也可以有0和EMPTY_VALUE。很少,但经常。EMPTY_VALUE是DBL_MAX,即最大值。这就是你会发现的。

没有对从外部收到的数值的正确性进行检查。

你认为CopyRates在数组高中 会返回0、EMPTY_VALUE还是DBL_MAX?你是认真的吗?:)

也许你可以给我看一个发生这种情况的例子?

 
Mihail Matkovskij #:

你认为CopyRates会在数组高中 返回0、EMPTY_VALUE或DBL_MAX?你是认真的吗?:)

也许你可以给我看一个发生这种情况的例子?

当ArrayMaximum遇到0、EMPTY_VALUE或DBL_MAX时,在用CopyHigh填充的数组双数中,它将做什么

你的声明中的逻辑在哪里?