Características del lenguaje mql5, sutilezas y técnicas - página 54
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
Características de las estructuras heredadas
Si quiere saber si la bandera "Ilimitado" está activada en Configuración --> Gráficos --> Barras máximas en la ventana, utilice esta construcción:
Cuando no quiero que un método público se ilumine (al escribir un punto después del nombre del objeto, por ejemplo), hago que este método sea un operador público. Sin embargo, no siempre es posible utilizar esa muleta.
Cuando no quiero que un método público se ilumine (al escribir un punto después del nombre del objeto, por ejemplo), hago que este método sea un operador público. Sin embargo, no siempre es posible utilizar esa muleta.
¿Hay algún ejemplo en el código? Por favor.
¿Hay algún ejemplo en el código? Por favor.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Peculiaridades del lenguaje mql5, sutilezas y trucos
fxsaber, 2017.09.08 13:20
¿No es esto
¿No es esto lo mismo?Y esto.
¿No es lo mismo?No, claro que no. Campos Valor1, Valor2, ... son muchos; GetValue1() y GetValue2() son los mismos. No es racional realizar cálculos adicionales en cada GetValue. No tiene sentido realizar cálculos incluso en un GetValue llamado más de una vez.
No he podido averiguar cómo poder establecer el tamaño de un campo de matriz de una estructura simple. Así que hice esta muleta.
Usé macros, para abreviar. En MQL5 probablemente no hay otra manera. ¿Es esta una solución normal en C++? Como la plantilla <typesize S>.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Bibliotecas: MT4Orders
fxsaber, 2017.09.14 08:52
El disparador SL/TP fue publicado en el foro incluso antes de las banderas MQL5 Reason. Su lógica mostraba claramente que cuando los niveles SL/TP/SO de una posición abierta son aceptados por el servidor de operaciones, la orden de mercado correspondiente se genera y está en la tabla de órdenes abiertas de MT5 hasta que se ejecuta.
Por lo tanto, en MT5, incluso en MQL5 puro, la modificación/eliminación de dichas órdenes no es posible, y la lógica de trading en MT5 requiere comprobar si una orden abierta está realmente congelada o no.
...Podemos ver que durante más de un cuarto de segundo la orden TP estuvo colgada entre las abiertas. Cualquier intento de modificar/borrarlo habría provocado errores.
Tenga en cuenta esta característica de MT5.
Cuando no quiero que un método público se ilumine (al escribir un punto después del nombre del objeto, por ejemplo), hago que este método sea un operador público. Sin embargo, no siempre es posible utilizar esa muleta.
En realidad es una especie de mega muleta. ¿Cómo va a analizar más tarde su código que contiene operadores tan poco informativos que no puede entender lo que hacen?
Debe ser un error de diseño. Si una clase no está pensada inicialmente para ser modificada desde el exterior, sino que sólo contiene métodos Get, debería ser la misma. Todas las modificaciones se realizan a través de las clases que se heredan de él.
Otra variante conveniente sería la herencia protegida, cuando la clase base contiene todos los métodos y la clase heredada muestra sólo los métodos Get. Y cuando sea necesario, puedes lanzarlo a la clase base. Pero el Metaeditor aún no ha corregido el error, todos estos métodos serán volcados a la lista aunque no estén disponibles.
No es racional hacer cálculos adicionales en cada GetValue. Incluso un GetValue llamado más de una vez no necesita realizar cálculos.
Entonces, ¿qué le impide utilizar el método Recalcular()? Si eso es lo que hace que la clase funcione lógicamente, porque la propia clase no puede definir cuándo es necesario recalcular, significa que la clase está controlada por un usuario.