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

 
WinProject:
Gracias) De su respuesta, concluyo que para cada tipo de objeto tengo que hacer una función separada. Pensé que de alguna manera sería posible hacer un inicio separado de las funciones para construir objetos, unido al bucle Mientras que la función principal para leer el archivo. ¿Qué te parece Switch?

Probablemente no me he metido lo suficiente en el asunto.

La primera, la construcción de todos los objetos gráficos, no plantea ningún problema ni duda. Pero debo haber entendido mal la segunda. Aparentemente la pregunta no era sobre cómo organizar el trabajo con un botón para muchos tipos de objetos, sino un botón para un tipo de objetos. En ese caso, haría una estructura con los parámetros del objeto y varias matrices de estructuras, una matriz por cada tipo de objeto. Y, respectivamente, vincularía estas matrices de estructuras a los botones de los tipos correspondientes.

A continuación, al pulsar el botón, se eliminará el tipo de objeto correspondiente. Y cuando se suelte el botón, los objetos serán restaurados por los parámetros que están en el array de la estructura.

Así que será necesario leer el archivo sólo una vez al inicio.

 
Alexey Viktorov:

Probablemente no me he metido lo suficiente en el asunto.

La primera, la construcción de todos los objetos gráficos, no plantea ningún problema ni duda. Pero debo haber entendido mal la segunda. Aparentemente la pregunta no era sobre cómo organizar el trabajo con un botón para muchos tipos de objetos, sino un botón para un tipo de objetos. En ese caso, haría una estructura con los parámetros del objeto y varias matrices de estructuras, una matriz por cada tipo de objeto. Entonces, yo vincularía estas matrices de estructuras a los botones de los tipos correspondientes.

A continuación, al pulsar el botón, se eliminará el tipo de objeto correspondiente. Y cuando se suelte el botón, los objetos serán restaurados por los parámetros que están en el array de la estructura.

Por lo tanto, será necesario leer el archivo sólo una vez al inicio.

Muchas gracias por la respuesta, intentaré hacer las dos variantes, a través de banderas como sugiere STARIJ y tu variante también es interesante para probar. Intentaré hacer menos preguntas, ¡es feliz de que se respondan!)
 
STARIJ:

Las banderas son variables. O bool: false=vacío, true=elevado o int - entonces hay muchas banderas en un número a la vez: 0 - todo omitido, 1=primero más bajo, 2=segundo más bajo, 3=primero y segundo más bajo, 4=tercero más bajo, 5=tercero más bajo y primero, 6=tercero más bajo y segundo, 7=primero, segundo y tercero más bajo, 8=cuarto más bajo.... Bueno, eso es en código binario. ¿Cómo lo averiguas?

Gracias, me pareció encontrar una buena explicación en la red, lo probaré. Lo extraño es que en este sitio ni en la documentación, ni en el tutorial, probablemente asumió que todos los que vinieron aquí ya tienen conocimientos de programación.
 
WinProject:
Muchas gracias por la respuesta, intentaré hacer las dos variantes, a través de banderas como sugiere STARIJ y tu variante también es interesante para probar. Intentaré hacer menos preguntas, ¡es bueno tener respuestas!)

Puede que las banderas no sean malas, pero se pierde el objetivo

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta que los novatos tengan sobre MQL4, ayuda y discusión sobre algoritmos y códigos

WinProject, 2018.01.26 18:17

Buenas noches, una vez más busco ayuda. Mi EA tiene una función principal en OnInit, que lee un archivo, e inmediatamente construye diferentes objetos gráficos de acuerdo a diferentes condiciones. También en el gráfico hay un botón que, al ser pulsado, acciona la función de eliminar estos objetos, por ejemplo, las etiquetas de texto. Cómo hacer, que después de la prensa del botón ha eliminado las etiquetas de texto, cuando el botón se libera es posible iniciar no toda la función que construirá completamente todos los objetos, pero para construir sólo las etiquetas de texto. Lo único que se me ocurre es crear por separado para cada tipo de objeto un análogo de la función principal con todas las acciones relacionadas con la apertura y lectura del archivo, pero quiero utilizar alguna solución inteligente, pero no sé cuál y cómo, ¿en la función principal o en las funciones de los botones?

En ese caso es más fácil implementar la lectura del archivo en una función separada definida por el usuario y llamarla varias veces, para no multiplicar la creación de un mismo código varias veces. Pero por mucho que se intente, la lectura de archivos se mantendrá cuando se utilicen las banderas. Y no hay ninguna diferencia en lo que se comprueba al crear objetos borrados: su ausencia o el estado de la bandera por tipo de objeto. Al fin y al cabo, el tipo de objeto viene determinado por el botón vinculado a un tipo concreto, esto es la bandera.
 

¿Pueden decirme cómo obtener el valor de la hora actual en MQL5 ?
He creado un objeto de la estructura MqlDateTime, no da nada

 
Roman Sharanov:

¿Pueden decirme cómo obtener el valor de la hora actual en MQL5 ?
He creado un objeto de la estructura MqlDateTime, no da nada

La estructura tiene que ser rellenada con la fecha-hora.
 
Artyom Trishkin:
La estructura debe ser llenada con la fecha-hora.

¿Usar TimeCurrent()? No entiendo cómo.

 
Roman Sharanov:

¿usar TimeCurrent()? no entiendo cómo

TimeToStruct()
 
Artyom Trishkin:
TimeToStruct()

Ah, lo tengo, funciona, ¡gracias!

 

https://docs.mql4.com/ru/basis/types/casting

Penúltimo ejemplo,color en representación RGB como cadena."Convertir dos estructuras copiando el contenido" no funciona.

#property script_show_inputs
input color          testColor=clrBlue;// задайте цвет для тестирования
//--- структура для представления цвета в RGB
struct RGB
  {
   uchar             blue;          // синяя составляющая цвета
   uchar             green;         // зеленая составляющая цвета
   uchar             red;           // красная составляющая цвета
   uchar             empty;         // этот байт не используется
   string            toString();    // функция для получения в виде строки
  };
//--- функция для вывода цвета в виде строки
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- структура для хранения встроенного типа color 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- переменная для хранения в RGB
   RGB colorRGB;
//--- переменная для хранения типа color
   builtColor test;
   test.c=testColor;
//--- приведение двух структур путем копирования содержимого
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

El compilador genera el siguiente error... ('=' - operación ilegal usar test.mq4 34 12 )

¿He copiado algo mal o hay un error en la muestra? Por favor, aconséjeme.

Приведение типов - Типы данных - Основы языка - Справочник MQL4
Приведение типов - Типы данных - Основы языка - Справочник MQL4
  • docs.mql4.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL4 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
Razón de la queja: