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

 
Andrey Sokolov:

Saludos. ¿Podría decirme algo, por favor?

¿Es posible obtener el nombre de una variable en lugar de su valor? Por ejemplo, imprimir el nombre de una variable.

#define PRINTVAR(x) Print(" " ##x); Print(x)
void OnStart()
  {
      long anyvar=(long)TimeLocal();
      PRINTVAR(anyvar);
  
  }

resultado:

2020.08.24 14:46:05.394    test (USDCHF,H1)     anyvar
2020.08.24 14:46:05.394    test (USDCHF,H1)    1598280365

Posiblemente una característica de los inéditos :-) similar a la "C", pero aún no utilizable

 
Andrey Sokolov:

Es necesario obtener el nombre de la propia variable.

Sin conocer el nombre, y sin ningún rasgo distintivo, esto no puede hacerse. Puede, por ejemplo, obtener los nombres de todas las variables iguales a 5 e imprimir sus nombres, encontrados, impresos. O los nombres de todas las variables de cadena. Pero en cualquier caso se trata de una enumeración variable.

 
Maxim Kuznetsov gracias
 
Andrey Sokolov:
Maxim Kuznetsov Gracias


Sí, también se trata de seleccionar una variable por su nombre.

Por ejemplo, hay variables a1, a2, a3, a4, a5, etc. También tienes que buscar entre estas variables, elegir cuál tiene "a" y 5, y utilizarla.

entonces casi no hay manera. Los nombres de las variables sólo son accesibles desde el preprocesador (#macros).

Debemos cambiar la lógica interna, por ejemplo, utilizar un array de nombres en lugar de variables. Entonces, tanto la clave como el valor están disponibles a la vez. O utilizar SQLite en caso de almacenamiento a largo plazo. O combinarlos :-)

Pero es así, sin conocimiento de algoritmo, consejo en vano.

 
Andrey Sokolov:

Sí, también se trata de seleccionar una variable por su nombre.

Por ejemplo, hay variables a1, a2, a3, a4, a5, etc. Tenemos que enumerar también estas variables, elegir cuál tiene "a" y 5, y utilizarla.

Escribe los nombres en una matriz y recorre la matriz.

 

Buenos días a todos! Mi pregunta es sobre el probador de MT4, lenguaje mql4
Por favor, dígame cuál es mi error al inicializar una matriz. He creado un array unidimensional con 750 elementos. He inicializado los 750 elementos con el valor 50,0.

Significa que en el primer tic y en los siguientes, el primer elemento del array con el índice 0 debe tener el valor 50.0 y el último elemento del array con el índice 749 debe tener el valor 50.0.

De hecho, resulta que el último elemento del array tiene valor 0. Y el primero, como debe ser, es el 50,0.

La pregunta. Cómo hacer que todos los valores del array (incluido el último) tengan el valor 50.0 después de la inicialización

Este es mi código

doble S_L[750]={50,0};

void OnTick()
{
if (Day()==4&&Month()==1&&Year()==2010&&Hour()==0&&Minute()==0)

Print("00749======= ",S_L[749]," =0= ",S_L[0]);

}

En la parte inferior del valor de Print() del diario

2020.08.24 17:43:55.427 GBPUSD,M1: 52255 eventos de tick (1440 barras, 53256 estados de barra) procesados en 0:00:00.047 (tiempo total 0:00:02.422)

2020.08.24 17:43:55.407 2010.01.04 00:00:53 TESTER(B.ORG) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:52 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:50 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:47 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:45 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:43 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:41 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:40 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:37 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:35 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:32 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:30 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:28 TESTER(B.ORDERS) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:26 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:25 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:22 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:20 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:17 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:15 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:13 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:11 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:10 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:07 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:05 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:02 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00 TESTER(B.ORDERS) GBPUSD,M1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.385 2010.01.01 00:00:00 Prueba de comprobación(B.ORD.) iniciada


Gracias por la ayuda


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

Aquí está la mía.

¿Dónde?)

 
Alexey Viktorov:

¿Dónde?))

En la parte superior en mi post editado. Gracias por la respuesta.

 

ANDREY:

Pregunta. ¿Cómo puedo hacer que todos los valores de mi matriz (incluido el último) tengan un valor de 50,0 después de la inicialización?

int OnInit()
{
   ArrayInitialize(S_L, 50.0);
}
 
Igor Makanu:

Gracias por el consejo. Por cierto, quería aclarar..... En el tutorial de Kovalev dice que el array puede ser inicializado simultáneamente con su declaración (como hice yo), sin ninguna función especial. Sé que el tutorial de Kovalev está algo desfasado. P. ¿Entiendo correctamente que ahora en mql4 los arrays deben ser inicializados sólo con una función?

ArrayInitialize(S_L, 50.0)

Gracias.

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...
Razón de la queja: