Errores, fallos, preguntas - página 2021
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Jugando al bicho
El resultado es el siguiente
Reinicia.
Es decir,SYMBOL_TRADE_TICK_VALUE devuelve ceros en la primera ejecución si no se utiliza Sleep();
HI Sobre el tema del símbolo invisible en Market Watch. Si intenta abrir el gráfico del USDJPY (pulse Enter e introduzca "USDJPY") antes de iniciar el script, no funcionará. Si después de ejecutar el script funciona. Aunque la vigilancia del mercado no ha cambiado.
Jugando al bicho
El resultado es el siguiente
Reinicia.
Es decir,SYMBOL_TRADE_TICK_VALUE devuelve ceros en la primera ejecución si no se utiliza Sleep();
HI Sobre el tema del símbolo invisible en Market Watch. Si intenta abrir el gráfico del USDJPY (pulse Enter e introduzca "USDJPY") antes de iniciar el script, no funcionará. Si después de ejecutar el script funciona. Aunque la vigilancia del mercado no ha cambiado.
Añade este bucle al principio del script
Y ver cuántos símbolos se imprimen.
En la primera ejecución, el acceso a AUDJPY sólo añade AUDUSD y USDJPY a la visión general del mercado y sólo en la segunda llamada a través de estos pares obtiene la propiedad del símbolo. Esto es lo que está causando el problema con OrderCalcMargin en mi caso.
Se ha escrito sobre ello muchas veces. Por alguna razón no lo corrigen.
Hola a todos.
Ayuda para un principiante, por favor.
Se ejecuta la función para encontrar el máximo del precio. ¿Cómo es posible calcular y devolver al código el NÚMERO DE BARRA con un precio máximo determinado?
Añade un bucle como este al principio del script
Y ver cuántos caracteres se imprimen.
En la primera ejecución, el acceso a AUDJPY sólo añade AUDUSD y USDJPY a la visión general del mercado y sólo en la segunda llamada a través de estos pares obtiene la propiedad del símbolo. Esto es lo que está causando el problema con OrderCalcMargin en mi caso.
Creo que se va a resolver cómo hacerlo.
He recibido la respuesta del Servicio de Atención al Cliente. Lo arreglaré.
Gracias.
En cuanto al error "alrededor" de OrderCalcMargin() hizo una Aplicación al SR
Es difícil estar seguro cuando hay unacontradicción directa en la ayuda de MQL4/5:
...Recuerde que los parámetros se pasan al revés en la función, es decir, primero se calcula y se pasa el último parámetro, luego el penúltimo, y así sucesivamente. El parámetro que viene primero después del paréntesis de apertura se calcula y se pasa a su vez.
.. .Nótese queel orden de las expresiones x1,..., xn está garantizado.
¿Cuál es la contradicción? Es al revés y ya está. No hay ninguna declaración contraria.
- Estas dos recomendaciones se encuentran en secciones separadas de la ayuda.
Cuando se lee bajo
"Llamada a una función con argumentos x1, x2,..., xn"
elorden de las expresiones x1,....,xn está garantizado, ¿en qué orden estás pensando?
¿Sobre el orden x1,...,xn o sobre el orden xn,....,x1 ?
- Estas dos recomendaciones se encuentran en secciones separadas de la ayuda.
Cuando se lee bajo
"Llamada a una función con argumentos x1, x2,..., xn"
elorden de las expresiones x1,....,xn está garantizado, ¿en qué orden estás pensando?
¿El orden x1,...,xn o el orden xn,....,x1 ?
Sí, tienes razón, es confuso.
Sin embargo, creo que es una mala práctica establecer la lógica del propio algoritmo en un orden particular de los argumentos en cualquier caso. Más aún cuando estos cálculos de derecha a izquierda confunden la comprensión del código. Por eso, si quieres aplicarlo, debes hacerlo sólo en algunos lugares no críticos como la impresión.
El orden de cálculo de las expresiones en Print() es de derecha a izquierda. Más o menos... Adiós... También lo he comprobado de antemano :)
Referencia MQL5\N-Básicos del lenguaje\N-Operacionesy expresiones\N-Otras operaciones
Llamada a una función con argumentos x1, x2,..., xn
Tenga en cuenta que el orden de las expresiones x1,..., xn está garantizado.
Demuestra una vez más la utilidad de la palabra clave inline de C++ (aquí se opinó que está supuestamente obsoleta).
Entre otras cosas, inline significa en realidad que el programador se niega a utilizar el orden de cálculo de los parámetros de la función y si el compilador decide hacer una función inline, el compilador puede utilizar el orden de cálculo hacia delante como más eficiente (el orden de cálculo inverso es obviamente eficiente sólo para las funciones invocables).
Al mismo tiempo, si el compilador decide incrustar una función no inline, debería utilizar el orden inverso (general) de evaluación, aunque esto conlleve una pérdida de eficiencia (porque el programador asumió este orden sin haber declarado la función inline)
inline también sería apropiado en MQL, donde el orden de cálculo no puede ser controlado explícitamente