Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Yura, tu ejemplo con una vuelta, por supuesto, es lógico. Pero atención que en este caso todos los ifs se ejecutan siempre, a diferencia del caso con muchos retornos, cuando la salida de la función se obtiene inmediatamente después de alcanzar la cadena con la condición.
ForexTools, gracias, he adoptado tus ideas sobre el formato.
Matemática, porque el operador condicional "if" también tiene un truco como "else".
if(expresión1) operador1;
else if(expresión2) operator2;
else if(expresión3) operator3;
si no, operador4;
Y entonces el operador se ejecuta después de la primera condición verdadera y ya está. Todos los ifs no se ejecutan más. Si se encuentra una condición verdadera, se ejecuta el operador correspondiente y el programa continúa después de esta construcción (no hay más búsqueda en la construcción).
No estoy discutiendo, Sergei. Me refería al diseño de Jura.
Hay otra pregunta interesante para "espolear" la discusión: ¿En qué medida las limitaciones de la plataforma afectan al estilo de escribir un programa MQL? Por ejemplo: el código es más fácil de escribir, entender/leer y mantener si los cálculos lógicamente aislados se realizan en funciones separadas. Pero cada llamada a una función (especialmente en un intérprete, como MQL) es una operación que consume tiempo. Una sola llamada, por supuesto, no es crítica, pero la mayoría de nosotros tenemos que escribir este tipo de cosas dentro de un bucle (for int i=0; i<Bars; i++), etc. Y aquí empezamos a decidir qué es más importante - un código bonito (en forma de funciones - para que luego entendamos lo que escribimos) o la velocidad de su ejecución (copiando fragmentos similares - para que tu bucle pueda funcionar todo el tiempo antes de que llegue el siguiente tick).
Está claro que en cada caso - la decisión de la línea de la media áurea es diferente, pero.... ¿Quién resuelve este problema?
He publicado los resultados de un breve estudio en el mismo hilo de la primera página. Con mi cantidad de cálculos (es pequeña) estoy bastante contento con las funciones - incluso con una línea de longitud. Pero también hay otras opiniones aquí en el hilo.
Probablemente tenga un efecto. Solía considerar la antigua lengua de Trubo Pascual como ideal. Allí es posible estructurar las funciones, es decir, la declaración de funciones en funciones. C no lo permite. Y esto es exactamente lo que estoy tratando de hacer ahora, pero esencialmente en la plataforma C. Por supuesto, esto es sólo una apariencia externa.
¿Más preciso ahora, Sergei?
Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях.
¿Cómo diablos es eso? Personalmente, empecé a aprender lenguajes de programación en mi época con C. Ahora conozco dos: C y C++. Y debo decir que no me atrae en absoluto estudiar otros idiomas. ¿Por qué tengo que declarar la función en la función? Personalmente, como he crecido sólo en C y C++, no entiendo este método.
Pero ahora lo entiendo. Si tengo funciones hasta el sexto orden de llamada, no siempre me resulta conveniente agrupar todas las funciones de diferentes órdenes de llamada en un solo montón. Se pierde la visión global de la estructura de la convocatoria. Y en Trubo Pasqualee, todo es conveniente con esto: unas pocas funciones principales que realizan el procesamiento clave, y todas las pequeñas subfunciones están escondidas dentro.
Pero probablemente sea una cuestión de costumbre. Hace tiempo que no escribo nada en él, y la verdad es que no me arrepiento.
¿Por qué hay que declarar una función en una función? Personalmente, como he crecido exclusivamente en C, C++ no entiendo este método.
"Hay muchas cosas en el mundo, amigo Horacio, que nuestros sabios nunca han soñado" ;)
Hay una belleza en ello: la encapsulación en la encapsulación, por así decirlo. Pero, en serio, es una herramienta realmente útil, si la usas sabiamente, como todo lo demás.
Matemáticas Yo pensaba que la antigua lengua de Trubo Pascual era perfecta.
Estoy pensando en volver a él, al menos en forma de DLL en Delphi. Estoy cansado de trabajar en MQL para hacer cosas simples pero necesarias (por ejemplo, un diálogo trivial con el comerciante).
- ¿Cuál es la fuerza, hermano?
- ¡La fuerza está en las clases, hermano!
No creo que se haya inventado todavía nada mejor que las clases. Declarar funciones privadas dentro de la clase, y funciones públicas para trabajar con ella. Es bonito y potente. Heredar funciones y variables, pensar en la jerarquía. Encapsular los datos creando estructuras de datos complejas. Procesar los datos utilizando los algoritmos universales de la biblioteca de plantillas estándar. Francamente hablando, la encapsulación es muy pobre en MQL4. Hay que guardar diferentes tipos de datos por separado, lo que da lugar a errores. A menudo tenemos que vigilar la indexación de las matrices (un error terriblemente molesto). Creo que esto se detendrá en MQL5.