//+------------------------------------------------------------------+int indexMax[];
int indexMin[];
int sizeArray = ArraySize(opens);
int size = 0;
int n = 30;
for(int i = n; i < sizeArray; i + n)
{
ArrayResize(indexMax, size + 1);
indexMax[size] = ArrayMaximum(opens, i - n, i);
indexMin[size] = ArrayMinimum(opens, i - n, i);
size++;
}
//+------------------------------------------------------------------+
我没有检查过,但这似乎是获取蜡烛图开盘(opens)最小值和最大值索引 的方法。
虽然也可以一次性获得价格,但不能获得指数。
double PriseMin = opens[ArrayMinimum(opens, i - n, i)];
intArrayMaximum(
constvoid& array[], // массив для поиска int start=0, // с какого индекса начинаем поиск int count=WHOLE_ARRAY// количество проверяемых
);
这段代码
double open[];
int copy = CopyOpen(_Symbol, PERIOD_CURRENT, 0, 100, open);
int arrMaximum = ArrayMaximum(open, 85, 20);
下午好。在 Mql5 上编写智能交易系统时,我遇到了一个问题。有一个数组,其中包含当年开盘烛台的值。在该数组的每个烛台上,我需要创建一个 n 个烛台数组(例如 30 个),以检查高点和低点。类似于 "之 "字形指标。
我写了这段代码,但却出现了一个错误:"数组超出范围",或者最大值和最小值在整个数组中,但不在所需的 30 个蜡烛周期内。
也许我需要创建另一个数组,以便在ArrayMaximum() 和 ArrayMinimum()函数 中进行检查,但我对嵌套循环和数组大小感到困惑。
请给我一点提示。
if(i+30<=ArraySize(opens))
以下是 数组外的输出结果
该错误是由于注意力不集中造成的。修复它并不能解决问题。
如何创建一个包含 30 个蜡烛图开盘价的数组,以搜索其中的高点和低点?
数组最大值
ArrayMaximum
返回 最大值的 最大值的索引,而不是价格。
我没有检查过,但这似乎是获取蜡烛图开盘(opens)最小值和最大值索引 的方法。
虽然也可以一次性获得价格,但不能获得指数。
我在任何地方都没有找到带步骤的 mql 循环示例。这简化了整个问题。
只有 ChatGPT 建议我这样写:
我将进一步尝试。代码可以运行。谢谢。
如果不执行ArrayResize,就会出现 "数组超出范围 "的错误。
该错误是由于注意力不集中造成的。修复它并不能解决问题。
如何创建一个包含 30 个蜡烛图开盘价的数组,并在其中搜索高点和低点?
问题出在哪里?声明一个数组 temp[],将 30 个元素复制到数组中,然后查找最小值/最大值的索引。如果最后小于 30,就会复制还剩下多少。在这种情况下,我宁愿使用 while() 循环。
问题出在哪里?声明一个数组 temp[],将 30 个元素复制到数组中,然后查找最小值/最大值的索引。如果最后小于 30,就会复制还剩下多少。在这种情况下,我宁愿使用 while() 循环。
是的,你可以这么做。我脑子不清楚,所以想请教一下。
是的,你可以这么做。我脑子不清楚,所以想请教一下。
在静态数组中,数组的大小是恒定的,不能改变;而在动态数组中,数组的大小可以改变,但数组的大小是恒定的!也就是说,数组的大小是已知的,从 0 到末尾的元素索引也是已知的。<= 是超出范围的,因为从 0 开始的元素索引和最后一个元素的索引比数组大小少一个单位。
一切尽在掌握))))
在静态数组中,大小是恒定的,不能改变;而在动态数组中,大小可以改变,但数组的大小是固定的! 也就是说,数组的大小是已知的,元素的索引是从 0 到末尾。<= 就因为元素的索引从 0 开始,而最后一个元素的索引小于数组大小的一个单位而超出了范围。
一切尽在掌握))))
你这话 是什么意思?你是否认为要从一个数组复制一些元素到另一个数组(某个 temp[]),应该在复制之前设置数组的大小 ArrayResize(temp, new_size); ?????
是的,你可以这么做。我脑子不清楚,所以想请教一下。
你甚至不需要一个临时数组。
这段代码
最多只能搜索剩余的 15 个元素,尽管它被设置为搜索 20 个元素。
所以你最好使用 while() 循环,而不要担心数组剩余项的数量。