Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1217

 

Hola a todos, tengo una pregunta sobre MQL4

Por defecto, la matriz está indexada desde 0 y en orden ascendente

PREGUNTAS Y RESPUESTAS

¿Con qué función, o construcción del lenguaje, se puede indexar la matriz anterior por 10 valores con valores enteros arbitrarios y en cualquier orden? Por ejemplo, como se indica a continuación. Te agradecería mucho que me demostraras este método con un código adecuado.

Gracias.

 
ANDREY:

Hola a todos, tengo una pregunta sobre MQL4

Por defecto, la matriz está indexada desde 0 y en orden ascendente

Q:

¿Con qué función, o construcción del lenguaje, puedo indexar la matriz anterior a 10 valores con valores enteros arbitrarios y en cualquier orden? Por ejemplo, como se indica a continuación. Te agradecería mucho que me demostraras este método con un código adecuado.

Gracias.

Barajar aleatoriamente, el buffer o los índices(MathRand)

 
Valeriy Yastremskiy:

En el indicador de la estructura de alerta. La 5ª línea desde abajo esAlerta(b);

Esto parece ser el número de milisegundos desde que el sistema se inició)

Gracias.
 
Taras Slobodyanik:

Barajar aleatoriamente, el buffer o los índices (MathRand)

En cuanto a la ordenación de los índices en secuencia aleatoria, entiendo que se hace mediante la función MathRand().

Mi pregunta es qué función puede ayudarme a reemplazar los valores de índice, que están por defecto (0,1,2,3,4,5,6...9) con los valores de índice necesarios para mí, por ejemplo ( 45,90,119,120,234,336,338,564,607,901). No necesito esta operación para escribir un indicador.

Gracias.

 
ANDREY:

En cuanto a la disposición de los índices en una secuencia arbitraria, entiendo que se hace con la función MathRand().

La pregunta Y con ayuda de qué función puedo reemplazar los valores del índice, que están por defecto (0,1,2,3,4,5,6...9) con los valores del índice necesarios para mí, por ejemplo ( 45,90,119,120,234,336,338,564,607,901). No necesito esta operación para escribir un indicador.

Gracias.

Crear un segundo búfer - búfer de índice.
Rellénalo con valores mixtos, de 0 a size_buffer - que son los índices)

...o simplemente tomar un número aleatorio y usarlo para obtener el valor del buffer.
 
Taras Slobodyanik:

Crea un segundo búfer: un búfer de índice.
Rellénalo con valores barajados, desde 0 hasta size_buffer - que son los índices)

...o simplemente tomar un número aleatorio y usarlo para obtener el valor del buffer.

Gracias por la ayuda.

Este es un código sencillo

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

En 10 minutos el array se llenará con valores de precios con índices de 0 a 9.
Si no le importa, por favor, cambie el código para que el array se llene con los mismos valores, pero los índices de este array estén en el siguiente orden 45,90,119,120,234,336,338,564,607,901

Todavía no es necesario barajar los valores del índice.
Gracias por la ayuda.

Simplemente no tengo ningún indicador en mis estrategias. No estoy familiarizado con los topes. Por lo que tengo entendido el buffer es un elemento de un indicador.

 
ANDREY:

Gracias por su ayuda.

Este es un código sencillo

En 10 minutos el array se llenará con valores de precios con índices de 0 a 9.
Si no le importa, por favor, cambie el código para que el array se llene con los mismos valores, pero los índices de este array sean los siguientes: 45,90,119,120,234,336,338,564,607,901

Todavía no es necesario barajar los valores del índice.
Gracias por la ayuda.

Simplemente no tengo ningún indicador en mis estrategias. No estoy familiarizado con los topes. Por lo que tengo entendido el buffer es un elemento de un indicador.

El índice 901 significa que hay 902 elementos en la matriz.
Mass[45]=Max[0].....Mass[901]=Max[9]
 
Valeriy Yastremskiy:
El índice 901 significa que hay 902 elementos en la matriz.
Mass[45]=Max[0].....Mass[901]=Max[9]

No... Hay 10 elementos en la matriz. Y estos 10 índices de estos 10 elementos deben ser denotados por estos valores en esta secuencia (0)45, (1) 90, (2) 119, (3) 120, (4) 234, (5) 336, (6) 338, (7) 564, (8) 607, (9) 901

Entre paréntesis están los valores anteriores de los índices. Deben ser sustituidos por nuevos valores sin paréntesis.

de elementos de la matriz puede ser indexado por cualquier secuencia de números, y no en el orden 0,1,2,3,4........100

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

No... hay 10 elementos en el array. Y estos 10 índices de estos 10 elementos deben ser denotados por estos valores en esta secuencia (0)45, (1) 90, (2) 119, (3) 120, (4) 234, (5) 336, (6) 338, (7) 564, (8) 607, (9) 901

Entre paréntesis están los valores de los índices anteriores. Deben ser sustituidos por nuevos valores sin paréntesis.


Es decir, puedo indexar cualquier número de elementos de una matriz por una secuencia arbitraria de números, no en el orden 0,1,2,3,4........100

Uníndice(lat.index significa lista, registro, indexador o dedo índice) es un número, letra u otra combinación de símbolos que indica dónde se encuentra un elemento en una matriz.

El índice 45 indica el 45º elemento de la lista, el índice 90 indica el 90º elemento.

 
ANDREY:

No... hay 10 elementos en el array. Y estos 10 índices de estos 10 elementos deben ser denotados por estos valores en esta secuencia (0)45, (1) 90, (2) 119, (3) 120, (4) 234, (5) 336, (6) 338, (7) 564, (8) 607, (9) 901

Entre paréntesis están los valores del índice anterior. Deben ser sustituidos por nuevos valores sin paréntesis.


Es decir, puedo indexar cualquier número de elementos del array por cualquier secuencia de números, y no en el orden 0, 1, 2, 3, 4........100

No lo entiendo, el índice del array es un índice de 0 a N. Y lo que quieres es más bien un diccionario con hashes. No sé cómo hacerlo en un array y no creo que se pueda hacer en un array normal. Hay una biblioteca de clases genéricas con diccionarios en MT. Eso debería ayudar.

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