Características del lenguaje mql5, sutilezas y técnicas - página 234
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
Mides la duración y obtienes el resultado. Me pasó esto en TRADE_ACTION_MODIFY.
¿desde dónde, hasta dónde, qué y en qué condiciones se midió?
sólo OrderSendAsync MODIFY y a la operación inmediatamente siguiente 5 seg.
resultado muy extraño, aterrador, improbable - tenemos que volver a comprobar las pruebas
¿desde dónde, hasta dónde, qué y en qué condiciones se midió?
sólo OrderSendAsync MODIFY y a la operación inmediatamente siguiente 5 seg ????
muy extraño, aterrador, improbable resultado - tenemos que volver a comprobar las pruebas
Medí el tiempo antes y después de la función, calculé la diferencia y obtuve 5 segundos. En los asesores de combate todo se mide, por lo que hay más información para resolver una situación anormal. Vi esto.
Era necesario crear estructuras a las que se pudieran aplicar distintas reglas de actuación en su interior, pero que se manipularan entre sí como idénticas.
La técnica utilizada se formalizó en este ejemplo.
Por desgracia, no entendía por qué los lenguajes de programación orientada a objetos no tienen interfaces para los métodos estáticos.
Tengo que crear tal horror.
¿Cómo te lo imaginas?
Cualquier función tiene su dirección en el segmento .text.
Cualquier función miembro (método), implícitamente acepta este puntero como su primer parámetro.
Los métodos estáticos no aceptan este puntero y son esencialmente "azúcar" sintáctico, siendo, de facto, funciones ordinarias.
Cuando se llama a una función virtual, la dirección de la función ejecutable se toma de la tabla de funciones virtuales, cuyo puntero está implícitamente contenido en la clase en la que se declara la función virtual. La inicialización del puntero a la función ejecutable se produce al crear una instancia del objeto, la lógica es así (lo escribo en mql a propósito para que quede claro a todos los neófitos:
Naturalmente, en la realidad, no todo es así, pero el mecanismo de inicialización del puntero a la función es exactamente así. En consecuencia, no hay manera, de la palabra "en absoluto", para hacerlo de la manera que desee en un lenguaje compilado.
C++ tiene esa magia de las plantillas:
Cualquier función tiene su dirección en el segmento .text.
Cualquier función miembro (método) acepta implícitamente este puntero como primer parámetro.
Los métodos estáticos no aceptan este puntero y son esencialmente "azúcar" sintáctico, siendo de facto funciones ordinarias.
Cuando se llama a una función virtual, la dirección de la función ejecutable se toma de la tabla de funciones virtuales, cuyo puntero está implícitamente contenido en la clase en la que se declara la función virtual. La inicialización del puntero a la función ejecutable se produce al crear una instancia del objeto, la lógica es así (lo escribo en mql para que quede claro a todos los neófitos:
Naturalmente en la realidad no es así, pero el mecanismo de inicialización del puntero a la función es exactamente así.
¡Gracias por la explicación detallada con un ejemplo!
¿Cuál es tu idea al respecto?
Si te refieres a mi lamento sobre las posibilidades de las interfaces. Quiero imponer sólo restricciones sintácticas a las clases/estructuras. Es decir, sólo en la etapa de compilación, como ocurre con el mismo modificador const. Por autocontrol, en definitiva.
No hay manera, de la palabra "en absoluto", para hacer lo que quieres en un lenguaje compilado.
Escribí una muletilla arriba. Quería tener algo ya incorporado para estos casos.
Foro sobre negociación, sistemas automatizados de negociación y ensayo de estrategias de negociación
Nueva versión de MetaTrader 5 build 3950: retirada/relleno en el terminal y actualización del informe comercial
fxsaber, 2023.09.19 23:25
¿Cómo deshacerse de los errores?La primera vez __LINE__/__COUNTER__ se pasan dentro de los markos como texto, la segunda vez - números.
Se me ocurrieron dos soluciones para evitar este error.
1. A través de la clase base:
2. A través de una clase anidada: