Características del lenguaje mql5, sutilezas y técnicas - página 201
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
Para estos casos, aquí hay algunas macros auxiliares.
1. a veces quieres determinar dentro de tu macro si un parámetro ha sido establecido o no. IS_PARAMETER_SET(p) define una expresión, que devuelve true si p está establecido (incluso si la variable de cadena ==NULL).
Atención: ¡¡¡la expresión se evalúa después del preprocesamiento en tiempo de compilación!!!, es decir, no se puede utilizar para implementar algo como #ifdef IS_PARAMETER_SET(p) #else (esto también se aplica a otras macros a continuación)
2. Si necesita convertir explícitamente el valor de un parámetro en una cadena, para evitar un error de compilación con un parámetro no especificado, puede utilizar __EVAL_STR(p). Si p no está definido o está definido explícitamente con un literal NULL, devuelve "". No es aplicable a las matrices, estructuras y clases.
La conversión explícita de un parámetro a un número es __EVAL_NON_STR(p). Si p no está establecido, devuelve 0. ¡No funciona cuando p es una cadena!
Código y ejemplos de uso:
El siguiente código en la cuenta demode RannForex-Server puede reproducir inmediatamente esta situación ejecutando este asesor.
Resultado.
Por cierto, el script muestra (no siempre la primera vez) un error en la ejecución sincrónica de OrderSend.
Después de la ejecución de OrderSend durante unas decenas/centenares de milisegundos, el precio de la orden es el antiguo, y no el que fue colocado con éxito por OrderSend.
Volviendo al tema de los billetes idénticos, podemos sacar algunas conclusiones.
Si alguien ha conseguido reproducirlo en otro servidor de comercio, por favor comparta el nombre.
Cadena de búsqueda: Oshibka 010.
Volvemos a la cuestión de la ejecución parcial.
1. Por favor, aclare el punto 3: "Puede cerrar la posición que ha formado sin eliminar el aplazamiento parcial. Pero si después la orden se activa, se abrirá una operación con un ticket igual al de la posición que cerró antes. Es decir, puede darse una situación en la que se cierre una posición con una determinada entrada. Y luego vuelve a aparecer una posición con el mismo billete".
En este caso, ¿era POSITION_IDENTIFIER igual a POSITION_TICKET o no?
2. Anteriormente, en el hilo "POSITION_TICKET != POSITION_IDENTIFIER" demostró una lógica diferente de MT5.
https://www.mql5.com/ru/forum/227423/page2#comment_6543129Conclusiones
Si asumimos que esto es un comportamiento normal de MT5, y no una peculiaridad del hack del broker, entonces
Según su experiencia, ¿hay algún patrón general en los casos/modos de trabajo que utiliza MT5?
3. En definitiva, ¿ha habido alguna situación real en la que "POSITION_TICKET != POSITION_IDENTIFIER"?
Cuando se llama a una macro, es posible omitir un parámetro (saltárselo), y a veces se quiere permitir específicamente que una macro funcione con un parámetro no especificado.
¿Así que resulta que un parámetro no especificado en cualquier macro es tratado por el compilador como una cadena vacía?
En cierto modo, sí, aunque tal vez "como un espacio vacío" sea una palabra mejor. Difícil de articular claramente :-(.
Pero #p se convierte definitivamente en cadena ==""
En cierto modo, sí, aunque tal vez "como un espacio vacío" sea una palabra mejor. Difícil de articular claramente :-(.
Pero #p se convierte definitivamente en cadena ==""
Gracias, un matiz interesante.
@fxsaber
Busque este tema, por favor: https://www.mql5.com/ru/forum/170952/page201#comment_21964923
Volvemos a la cuestión del rendimiento parcial.
1. Por favor, aclare el punto 3: "Puede cerrar una posición formada sin eliminar la opción de venta parcial. Pero si después la orden se activa, se abrirá una operación con un ticket igual al de la posición que cerró antes. Es decir, puede darse una situación en la que se cierre una posición con una determinada entrada. Y luego vuelve a aparecer una posición con el mismo billete".
En este caso, ¿era POSITION_IDENTIFIER igual a POSITION_TICKET o no?
2. Anteriormente, en la rama "POSITION_TICKET != POSITION_IDENTIFIER" demostró una lógica diferente de MT5.
https://www.mql5.com/ru/forum/227423/page2#comment_6543129Según su experiencia, ¿ha mostrado algún patrón general en qué casos/modos de operación se aplica el esquema de MT5?
3. En definitiva, ¿ha habido alguna situación real en la que "POSITION_TICKET != POSITION_IDENTIFIER"?
Ambos enlaces hablan de diferentes implementaciones de la ejecución parcial. Esto lo determina el software del broker, no MT5.
Nunca se ha encontrado una falta de coincidencia entre el billete y el documento de identidad.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Bibliotecas: Uso
fxsaber, 2021.05.01 14:17
GetMicrosecondCount puede arrojar un valor menor que en la llamada anterior (sin desbordamiento de ULONG). Ejemplos de estas situaciones.Cada línea es obtenida por diferentes EAs en tres terminales MT4.
Y en MT5 ocurren este tipo de cosas, pero con mucha menos frecuencia en MT4.
Ten cuidado.