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

 

大家好,我有一个关于MQL4的问题

默认情况下,数组的索引从0开始,以升序排列

问与答

通过哪个函数或语言结构,上述数组可以用任意整数值和任意顺序的10个值进行索引?例如,如下图所示。如果你能用适当的代码演示这种方法,我将非常感激。

谢谢你。

 
ANDREY:

大家好,我有一个关于MQL4的问题

默认情况下,数组的索引从0开始,以升序排列

Q:

用哪个函数,或语言结构,我可以用任意整数值和任意顺序对上述数组进行索引,以获得10个值?例如,如下图所示。如果你能用适当的代码演示这种方法,我将非常感激。

谢谢你。

随机 洗牌 缓冲区或索引(MathRand)。

 
Valeriy Yastremskiy:

在警报结构的指标中。从底部第5行是Alert(b)。

这似乎是系统启动后的毫秒数)

谢谢你!
 
Taras Slobodyanik:

随机 洗牌 缓冲区或索引(MathRand)。

关于随机序列中的索引排列,我知道这是用MathRand() 函数完成的。

我的问题是,什么函数可以帮助我把默认的索引值(0,1,2,3,4,5,6...9)替换成我需要的索引值,例如(45,90,119,120,234,336,338,564,607,901)。我不需要这个操作来写一个指标

谢谢你。

 
ANDREY:

关于按任意顺序排列索引,我理解是用MathRand() 函数完成的。

问题是,在哪个函数的帮助下,我可以将默认的索引值(0,1,2,3,4,5,6...9)替换为我需要的索引值,例如(45,90,119,120,234,336,338,564,607,901)。我不需要这个操作来写一个指标

谢谢你。

创建第二个缓冲区--索引缓冲区。
用混合值填充它,从0到size_buffer--这就是索引)

...或者直接取一个随机数,用它来获取缓冲区的值。
 
Taras Slobodyanik:

创建第二个缓冲区--一个索引缓冲区。
用洗过的值填充它,从0到size_buffer--这就是索引)

...或者直接取一个随机数,用它来获取缓冲区的值。

谢谢你的帮助。

下面是一个简单的代码

double MaX[10];
int a;
void OnTick()
{
if (Minute()!=Min)
{
if (a==9)
{
a=0;
}
a++;
MaX[a]=Bid;
Min=Minute();
}
}

10分钟后,该数组将被索引为0至9的价格值填满。
如果你不介意,请修改代码,使该数组被填满相同的值,但该数组的索引按以下顺序排列45,90,119,120,234,336,338,564,607,901

现在还不需要对索引值进行洗牌。
谢谢你的帮助。

我只是在我的策略中没有任何指标。我对缓冲器不熟悉。据我所知,缓冲器是指标的一个元素。

 
ANDREY:

谢谢你的帮助。

下面是一个简单的代码

10分钟后,该数组将被填满价格值,索引从0到9。
如果你不介意,请修改代码,使该数组被填满相同的值,但该数组的索引如下:45,90,119,120,234,336,338,564,607,901

现在还不需要对索引值进行洗牌。
谢谢你的帮助。

我只是在我的策略中没有任何指标。我对缓冲器不熟悉。据我所知,缓冲器是指标的一个元素。

索引901表示阵列中有902个元素。
Mass[45]=Max[0].....Mass[901]=Max[9]
 
Valeriy Yastremskiy:
索引901表示阵列中有902个元素。
Mass[45]=Max[0].....Mass[901]=Max[9]

不...数组中共有10个元素。而这10个元素的这10个索引必须用这个序列中的这些值来表示 (0)45,(1) 90,(2) 119,(3) 120,(4) 234,(5) 336,(6) 338,(7) 564,(8) 607,(9) 901

括号内是指数的前值。它们应该被替换成不带括号的新值。

数组元素 都可以由任何 序列的数字来索引,而不是按照0,1,2,3,4的顺序........100。

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
ANDREY:

不...数组中共有10个元素。而这10个元素的这10个索引必须用这个序列中的这些值来表示 (0)45,(1) 90,(2) 119,(3) 120,(4) 234,(5) 336,(6) 338,(7) 564,(8) 607,(9) 901

括号里是以前的指数值。它们应该被替换成不带括号的新值。


也就是说,我可以通过一个任意的 数字序列来索引数组中 的任何数量的元素,而不是按照0,1,2,3,4的顺序........100

索引(lat.index 指的是列表、注册表、索引器或索引指)是一个数字、字母或其他符号的组合,表示一个项目 在数组中的位置

索引45表示列表中的第45个元素,索引90表示第90个元素。

 
ANDREY:

不...数组中共有10个元素。而这10个元素的这10个索引必须用这个序列中的这些值来表示 (0)45,(1) 90,(2) 119,(3) 120,(4) 234,(5) 336,(6) 338,(7) 564,(8) 607,(9) 901

括号内是指数的前值。它们应该被替换成不带括号的新值。


也就是说,我可以通过任何 数字序列来索引任何数量的数组元素,而不是按照0、1、2、3、4的顺序........100

我不明白,数组索引是一个从0到N的索引。而你想要的更像是一个带有哈希值的字典。我不知道如何在数组中做到这一点,我认为你不能在普通数组中做到这一点。在MT中,有一个带有字典的通用 类库。这应该有帮助。

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2017.12.07
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...
原因: