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

 
Artyom Trishkin:

Carpeta de almacenamiento: Archivo --> Abrir carpeta de datos --> MQL4\Experts\Here.ex4

Si este es el caso, pero EA no es visible en el navegador, entonces ... enhorabuena - se ha quedado sin programas posibles en el navegador. Tienes que borrar algo. Desafortunadamente, MetaTrader4 tiene un límite en el número de programas que el Navegador puede ver. Me encontré con este problema al crear un gran número de indicadores. Para no borrar muchos de ellos simplemente copié el código en un archivo de prueba y lo compilé y ejecuté - así es como siempre probé los indicadores que necesitaba en un archivo - borré el contenido del archivo, puse un nuevo código en él, compilé y probé - terminado. Luego el siguiente - borró el contenido del archivo, insertó un nuevo código en él ..., y así sucesivamente en un círculo ...

Gracias. Echaré un vistazo... Volveré a escribir aquí... No hay mucho en cuanto a software...
 
Artyom Trishkin:

Carpeta de archivos: Archivo --> Abrir carpeta de datos --> MQL4\Experts\Here.ex4

Si todo es igual, pero el EA no es visible en el navegador, entonces ... Enhorabuena, se ha quedado sin programas posibles en el navegador. Tienes que borrar algo. Desafortunadamente, MetaTrader4 tiene un límite en el número de programas que el Navegador puede ver. Me encontré con este problema al crear un gran número de indicadores. Para no borrar muchos de ellos simplemente copié el código en un archivo de prueba y lo compilé y ejecuté - así es como siempre probé los indicadores que necesitaba en un archivo - borré el contenido del archivo, puse un nuevo código en él, compilé y probé - terminado. Luego el siguiente - borró el contenido del archivo, insertó un nuevo código en él ..., y así sucesivamente en un círculo ...

copiado en el directorio de datos - exps, indicadores, scripts - no es suficiente. En el NAVIGADOR ...julio - no.

En la carpeta, desde la que arranco el terminal, también está presente. No en NAVIGATOR.




ARTEM - GRACIAS. HE REINICIADO EL TERMINAL - ESTÁ AHÍ.



 

Quiero crear un array y poner valores en el array creado, pero quiero alimentar los valores a través de variables de función, etc. Ejemplo.

int q=8,w=9;

int mas[2]={q,w}. Lo que deberíamos hacer es mas[0]=q,mas[1]=w. ¿Hay alguna forma de sustituir las variables que ya almacenan los cálculos necesarios y ponerlas en un array? ¿Es posible hacerlo con macros?

 
Seric29:

Quiero crear un array y poner valores en el array creado, pero quiero alimentar los valores a través de variables de función, etc. Ejemplo.

int q=8,w=9;

int mas[2]={q,w}. Lo que deberíamos hacer es mas[0]=q,mas[1]=w. ¿Es posible crear un array sustituyendo las variables que ya almacenan los cálculos necesarios y ponerlas en el array? ¿Es posible hacer esto con macros?

No se puede. A principios de esta semana, alguien lo discutió en el hilo "bugs, errores, preguntas" - el resultado es imposible.

 
Igor Makanu:

No se puede, a principios de la semana en el hilo "bugs, bugs, preguntas" alguien lo discutió - el resultado es no

Ya veo. He visto a alguien utilizar una macro para asignar el número de columnas al declarar un array, aunque pasar valores de columnas o filas al inicializar un array mediante una variable está prohibido en mql, pero alguien lo hizo mediante una macro. Aquí está el temahttps://www.mql5.com/ru/forum/95351.

#define ODD 5

doble Max_D1[ODD];

double Low_D1[ODD];

 
Seric29:

Ya veo. He visto a alguien usar una macro para asignar el número de columnas al declarar un array, aunque pasar columnas o filas al inicializar un array mediante una variable está prohibido en mql, pero alguien usó una macro para hacerlo. Aquí está el tema https://www.mql5.com/ru/forum/95351.

#define ODD 5

doble Max_D1[ODD];

double Low_D1[ODD];

¿y qué sentido tiene esta acción? ¿se puede inicializar un array con variables en lugar de con constantes? - la respuesta es no.

Su macro hará el trabajo manual de asignar un valor variable a cada elemento de la matriz, pero el punto no cambia por esto

 
Igor Makanu:

y el punto de esta acción? ¿cómo hizo la pregunta? ¿se puede inicializar un array con variables en lugar de con constantes? - la respuesta es no.

Su macro hará el trabajo manual de asignar un valor variable a cada elemento del array, pero la esencia no cambiará.

Bueno, pensé que sería posible hacer algo con él.

 
Igor Makanu:

y el punto de esta acción? ¿cómo hizo la pregunta? ¿se puede inicializar un array con variables en lugar de con constantes? - la respuesta es no.

Su macro hará el trabajo manual de asignar un valor variable a cada elemento de la matriz, pero el punto no cambia por esto.

¿Puedes crear una función que devuelva un valor constante para resolver este problema?

 
Seric29:

¿Se puede crear una función que devuelva un valor constante para resolver este problema?

no puedes

Confundes las nociones de inicialización y asignación de un valor - la esencia que tienen es la misma, pero los momentos (cuando) de uso son diferentes. La inicialización es en la cadena donde describes un array - allí lo inicializas con constantes y la asignación, cuando asignas valores arbitrarios a un array(elementos del array) en cualquier lugar después de describirlo

No sé cómo explicar lo que preguntas y por qué escribo que no puedes

Al utilizar arrays no existe ese problema que planteas, al parecer desde el principio de la escritura de código no asumiste el uso de un array, y ahora sólo tienes que reescribir el código o asignar un valor variable a cada elemento del array manualmente

A veces, para no "multiplicar" las variables, puedo usar un array si el array tiene más de 3-4 elementos, el peligro de confundir el número de elementos del array mientras se escribe el programa es alto; uso valores constantes fijados con #define - el código es legible y no puedes cometer un error, algo así:

#define  open   0
#define  take   1
#define  loss   2
#define  profit 3
void OnStart()
  {
  double order[4];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

quizás no entiendo la falta de ambigüedad de su pregunta:
Seric29:

Tal pregunta quiero crear un array e inmediatamente poner valores en el array creado, pero los valores que quiero alimentar a través de variables funciones, etc. Ejemplo.

int q=8,w=9;

int mas[2]={q,w}. Lo que deberíamos hacer es mas[0]=q,mas[1]=w. ¿Es posible crear un array sustituyendo variables que ya almacenan los cálculos necesarios, y ponerlo en un array? ¿Es posible hacer esto con macros?

al describir una matriz? - ¿es necesario inicializar con variables? - contestado 2 veces arriba

o asignar varios valores de variables a un array? - la respuesta tampoco es posible, pero debido a una sintaxis inválida:

no puede aplicar variables entre llaves, es decir {1,2,3} - esto será omitido por el compilador, pero {a,b,c} - no puede hacerlo, porque el compilador esperará una operación aritmética(lógica) u operador = (lvalue, rvalue) ... Por lo tanto, debe estudiar la sintaxis del lenguaje, pero puede que no se trate de las capacidades del lenguaje.

 
Igor Makanu:

No, no puedes.

Mezclas los conceptos de inicialización y asignación de valores - la esencia que tienen es la misma, pero los momentos (cuando) de uso son diferentes; la inicialización es en la cadena donde describes un array - allí lo inicializas con constantes y la asignación es, después de describir un array, asignas cualquier valor a un array (elementos del array) en el lugar que quieras.

No sé cómo explicar lo que preguntas y por qué escribo que no puedes

Al utilizar arrays no existe ese problema que planteas, al parecer desde el principio de la escritura de código no asumiste el uso de un array, y ahora sólo tienes que reescribir el código o asignar un valor variable a cada elemento del array manualmente

A veces, para no "multiplicar" las variables, puedo usar un array si el array tiene más de 3-4 elementos, el peligro de confundir el número de elementos del array mientras se escribe el programa es alto; uso valores constantes fijados con #define - el código es legible y no puedes cometer un error, algo así:

Pues sí, hay un uso híbrido de los elementos declarados en el programa. Por ejemplo yo declaro parámetros de entrada y de estos parámetros necesito tomar variables globales y buscar a través de ellos, pero hay un problema parámetros de entrada no puede ser una matriz, el 2 º ejemplo escribo una función y comienza a procesar a través de bucles, aquí también es mejor utilizar una matriz, comienzo argumentos a una matriz y de nuevo la matriz de variables es imposible y tienen que como escribió anteriormente un valor en cada celda, el 3er ejemplo sería bueno ser capaz de utilizar como argumentos de la función utilizando una matriz (aquí está en ciernes) En cuanto al uso de arrays en lugar de variables, sí que hace que los programas sean compactos y yo también lo hago así. Se puede escribir en variables en el momento de la inicialización en C++, tal vez no se pueda en la versión 12 inferior, y aquí lo abarataron, lo que llevó a tales consecuencias. En general, entiendo y agradezco las respuestas.

Razón de la queja: