El futuro de MQL5 es MQL5+ o incluso MQL6 - página 10

 
Me gustaría ver goto, se podría simplificar el código considerablemente, por no hablar de la legibilidad. después de todo, un bucle con una condición es esencialmente una salida prematura del bucle también.
 
dimka8:
Me gustaría ver goto, se podría simplificar el código considerablemente, por no hablar de la legibilidad. de hecho, un bucle con una condición es también una salida prematura del bucle.
No, no quiero :)
 
dimka8:
Me gustaría ver goto, se puede simplificar el código considerablemente, por no hablar de la legibilidad. de hecho, un bucle con una condición es también una salida prematura del bucle.

De dónde vienes...

 

Unas palabras:

Obligatoriedad de las plataformas cruzadas ....

 
Vasiliy Sokolov:

De dónde vienes...

de BASIC
 
Alexander Bereznyak:
de BASIC.

Hiasmo aún más simple.

¿qué pasa con los clásicos?

for(...) {
for (...) {
while (...) {
if (...) goto stop;
...
}
}
}
printf("error in program\n");
 

Sería estupendo introducir el concepto de proyecto. Con la adopción de la POO, todos los programas empezaron a constar de varios archivos. Es inconveniente ir constantemente a la pestaña con el archivo principal antes de compilar, si se edita un plugin. O una muleta: introducir un botón programable Compilar, al que se puede vincular el archivo maestro del proyecto con el que se está trabajando.

EMPTY_VALUE puede extenderse a todos los tipos que lo permitan (int, double, string, etc.). Es algo pequeño, pero se puede utilizar en muchos sitios y no inventarse nada.

En el probador, haz una herramienta de retícula como en MT.

Seguramente se puede inventar la variante con la superposición de varios indicadores en una ventana de indicadores bajo el gráfico de precios.


El confort se construye con pequeños detalles. Los desarrolladores no quieren realmente aceptar esta idea, y están constantemente globalizando algo. Tal vez deberíamos parar de vez en cuando y dedicar tiempo a las pequeñas correcciones: ¿la comodidad del usuario? ))))))

Ejemplos: Para medir algo en un gráfico tres veces, debe hacer clic tres veces en el botón del retículo (o pulsar una combinación de teclas). Las ventanas de los indicadores en ME bajo el gráfico no se pueden intercambiar: hay que quitar todos los indicadores y luego ponerlos en el orden correcto. De nuevo, para fijar varios indicadores, es necesario entrar en el menú - menú - seleccionar el indicador varias veces. Y por alguna razón hay una herramienta Lista de indicadores, que no simplifica este caso y no da nada nuevo.... Creo que todo el mundo va a dar estos ejemplos en MQL, en ME, en MT, en el probador sin pensar.... ¡Infierno! ¡Mucho alboroto! A pesar de la claridad y la sencillez del paquete, es muy incómodo, poco desarrollado.

https://www.mql5.com/ru/docs/basis/types/integer/enumeration es el artículo de ayuda sobre las transferencias. Está claro qué son y cómo son... Pero, ¿cómo utilizarlo y qué ventajas tiene? Dame un ejemplo sencillo si te da pereza escribirlo con palabras.

Creo que si realmente quieres mejorar algo, deberías establecer contacto con grupos regulares de usuarios que utilizan activamente el paquete en diferentes direcciones (programación, comercio manual, pruebas, etc.) y recoger sugerencias razonables de ellos para mejorar lo que tienes, en lugar de preguntar en una multitud donde todos querrán todo. De lo contrario, todo quedará en letras.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

En el depurador:

Por ejemplo, existe una expresión de la forma

(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle));

en la implementación actual de la depuración, el resultado del cálculo de la expresión en el depurador estará disponible si hace

CandleNumber=(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle));

y añadir la variable CandleNumber a la lista de observaciones mediante Shift+F9

Si quiero obtener un resultado del cálculo de una parte de la expresión, por ejemplo MathFloor(i/ticks_in_candle), añado esta expresión a la lista de vigilancia

Obtengo una expresión que no pudo ser evaluada.

Tal vez estoy haciendo algo mal, comparta su experiencia, pero el punto es que en la depuración no puedo ver no sólo los valores de las variables declaradas, sino también los resultados del cálculo de expresiones arbitrarias (por supuesto, estoy hablando de aquellas expresiones en las que todas las variables en el momento actual de la observación ya están inicializadas).

Además, quiero ver la información de los arrays en la depuración. Por ejemplo, tenemos el array UpTick[] y sólo un elemento del array está disponible para la supervisión en este momento.

Por qué no implementar la posibilidad de añadir un array a la supervisión con la apertura de una ventana modal separada donde todos los elementos con sus índices están disponibles:

valor del tipo de índice

0 int 1

1 int 2 etc.

Si la matriz es grande y requiere mucha memoria, limite el muestreo.

Y en general como resultado - para realizar una funcionalidad más amplia del depurador en términos de posibilidad de controlar expresiones arbitrarias, variables, matrices.

 
agvozdezkiy:
ExtiendeEMPTY_VALUE a todos los tipos que lo permiten (int, double, string, etc.). Es algo pequeño, pero se puede utilizar en muchos sitios y no hay que inventarse nada.

Todo el mundo lo ha inventado ya. Utiliza la constante NULL.

En el probador, cree una herramienta de retícula, como en MT.

Ejemplos: Para medir algo en el gráfico tres veces, hay que hacer tres clics en el botón de la cruz (o pulsar una combinación de teclas).

Déjame contarte un secreto: ya está implementado. Tienes que hacer clic en la rueda del ratón y será una cruz.

Probablemente se pueda idear una opción de superposición de varios indicadores en una ventana de indicadores bajo el gráfico de precios.

Es posible hacerlo desde hace mucho tiempo. Se arrastra el indicador desde el navegador a la ventana con el indicador ya adjunto.

Las ventanas de indicadores en ME bajo el gráfico no se pueden intercambiar: hay que quitar todos los indicadores y luego ponerlos en el orden correcto.

En mi opinión, no es lo más útil.

Hay que ir al menú - menú - seleccionar el indicador varias veces para configurar varios indicadores. Además, hay una herramienta Lista de indicadores por alguna razón, que no simplifica y no da nada nuevo en este caso....

Hay un navegador, favoritos, plantillas y perfiles. Todo se puede configurar. Lee la ayuda del terminal, ¡descubrirás muchas cosas nuevas!

https://www.mql5.com/ru/docs/basis/types/integer/enumeration - Artículo de ayuda sobre las transferencias. Está claro qué son y cómo son... Pero, ¿cómo utilizarlos y cuál es la ventaja? Pon un ejemplo sencillo, si te da pereza escribir con palabras.

Las enumeraciones se utilizan para hacer el código más legible y para eliminar las constantes y sustituirlas por entidades que resulten familiares a los humanos.

Por ejemplo, los valores de la enumeración ENUM_DAY_OF_WEEK pueden utilizarse para comparar con el valor day_of_week de la estructura MqlDateTime. Es decir, se puede escribir así

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == 0 )
           {
            // Что-то делаем в воскресенье
           }

O puedes escribirlo de otra manera:

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == SUNDAY )
           {
            // Что-то делаем в воскресенье
           }

SUNDAY es una constante con nombre de tipo int con valor 0.

¿Cómo crees que sería más claro para una persona que lee el código?
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Kozitsyn:

Las listas se utilizan para hacer el código más legible

Hay otra aplicación infinitamente útil. Por ejemplo:

enum ENUM_OPEN_DIRECTION {
     OPEN_BUY,       // только Buy
     OPEN_SELL,      // только Sell
     OPEN_BOTH,      // Buy + Sell
     OPEN_NONE       // не торговать
};
input ENUM_OPEN_DIRECTION  Trade_Direction = OPEN_BOTH;    // Направление торговли:

Y el usuario obtiene una lista desplegable con una selección de 4 elementos de lo que ha escrito allí en los comentarios - "Sólo comprar", "Sólo vender", etc. Muy útil para listar un conjunto de indicadores, marcos temporales, un conjunto de condiciones, etc. en la ventana de configuración del usuario