阵列超出范围,需要帮助 - 页 3

 

认可

在这期间

 
Dark Kchlyzov:

不明白吗?

一个星期或一个月,最近的最小值是多少天?
 
我明白了,在整个期间
 
Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1

历史上最近的最小值小于Low_1_Level ,这将是 。

运行该代码,看看它是如何工作的。

 
Dark Kchlyzov:

我在整个期间都没有错误

我将日志附在后面

附加的文件:
20201209.log  3729 kb
 
MakarFX:

我在整个期间都没有错误

我把日志附在后面。

似乎没有错误,但在日志中出现了

你的日志中19:31:53.126 2016.12.15 00:00:00 Array EURUSD,H1: i = 456 Bar_data_D1 [i][2] = 1.04789

因为我的价格Min_D:104789比low_D1 1.03660高,按照惯例不可能是这样。

如果我替换了for循环,就会有一个错误,而且是正确的。

实际上表达式2只是掩盖了一个错误

i<ArrayRange(Bar_data_D1,0)
 for(int i = 1; ;i++)
    {
     Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
     if( Bar_data_D1 [i][2] < Low_D1_Level)
       {
        Min_D_Level = Bar_data_D1 [i][2];break;
       }
    } 


 
Dark Kchlyzov:


有一个问题。为什么你从第一个元素开始循环,而不是从零开始?

 
Dark Kchlyzov:

如果你不介意给我一个例子,如何正确书写?

我有一些交易经验,但我才开始学习MQL4。

如果你使用MqlRates,那么声明一个数组。

MqlRates Bar_data_D1[];

也就是说,你得到的是一个一维数组而不是一个二维数组。MqlRates是一个标准的结构(在MQL4参考中的 "Basics of Language"-"Data Types"-"Structures, Classes, Interfaces "中描述)。在这种情况下,它有你需要的所有字段。你可以这样称呼他们。

Bar_data_D1[i].high; Максимум свечи
Bar_data_D1[i].low; Минимум свечи

i是数组的索引。

以同样的方式,你可以创建自己的结构来记录蜡烛图的参数。它将比Mqlrates小两个字段(spread和real_volume),你不需要这些。该结构将看起来像这样。

struct BarData
{ 
   datetime time;         // время начала периода 
   double   open;         // цена открытия 
   double   high;         // наивысшая цена за период 
   double   low;          // наименьшая цена за период 
   double   close;        // цена закрытия 
   long     tick_volume;  // тиковый объем 
};

声明此类结构的数组看起来像这样。

BarData Bar_data_D1[];

访问该结构的成员与访问MqlRates结构的 成员类似。

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Структура исторических данных - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ihor Herasko:

正是如此!

 
Ihor Herasko:

如果通过MqlRates,你像这样声明数组。

也就是说,你得到的是一个一维数组而不是一个二维数组。MqlRates是一个标准的结构(在MQL4参考中的 "语言基础"-"数据类型"-"结构、类、接口 "中描述)。在这种情况下,它有你需要的所有字段。你可以这样称呼他们。

i是数组的索引。

以同样的方式,你可以创建自己的结构来记录蜡烛图的参数。它将比Mqlrates小两个字段(spread和real_volume),你不需要这些。该结构将看起来像这样。

声明此类结构的数组看起来像这样。

对该结构成员的访问与对MqlRates结构 成员 访问相似。

好的,我明天就去试试 !

谢谢你的帮助。当我想出办法时,我会让你知道。