Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 124
![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
¡Hola !
¿Me pueden decir cómo repintar las barras sin usar plantillas en mt4?
¿O cómo aplicar una combinación de colores?
Voy a simplificar un poco la respuesta para evitar confusiones. El signo (&) indica que el argumento de una función puede cambiar su valor en tiempo de ejecución y volverá al lugar desde donde se llamó a la función con un valor diferente. En este caso, la función SaveOrder puede cambiar el contenido de las matrices g_arrstBuyOrderInfo y g_arrstSellOrderInfo, así como las variables g_nBuyOrdersCnt y g_nSellOrdersCnt.
Gracias. Se aclara un poco más. No está claro cómo se puede averiguar todo esto sin remitirse al foro. No he encontrado esas explicaciones en los tutoriales.
Por favor, denme más consejos:
1) El compilador escribe - 'g_nBuyOrdersCnt' - declaración sin tipo ; 'g_nSellOrdersCnt' - declaración sin tipo. ¿Estoy en lo cierto al suponer que g_nBuyOrdersCnt y g_nSellOrdersCnt deben declararse globalmente para evitar un error del compilador?
2) Compilador:las expresiones 'for' no están permitidas en un ámbito global. Aquí no está claro.
3) En la funciónvoid SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt), el compilador escribe: la declaración de 'arrstOrderInfo' oculta la declaración global. véase la declaración anterior de 'arrstOrderInfo'. Tampoco está muy claro.
4) 'nOrderCnt' es un identificador no declarado. ¿Por qué no se declara en ningún sitio?
¡Hola !
¿Me pueden decir cómo repintar las barras sin usar plantillas en mt4?
¿O cómo aplicar una combinación de colores?
Si se hace mediante programación, ver las funciones ChartSetInteger() y ChartGetInteger().
Gracias. Empieza a tener un poco más de sentido. No está claro cómo se puede averiguar todo esto sin remitirse a un foro. No he podido encontrar esas explicaciones en los libros de texto.
Por favor, denme más consejos:
1) El compilador escribe - 'g_nBuyOrdersCnt' - declaración sin tipo ; 'g_nSellOrdersCnt' - declaración sin tipo. ¿Estoy en lo cierto al suponer que g_nBuyOrdersCnt y g_nSellOrdersCnt deben declararse globalmente para evitar un error del compilador?
2) Compilador:las expresiones 'for' no están permitidas en un ámbito global. Aquí no está claro.
3) En la funciónvoid SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt), el compilador escribe: la declaración de 'arrstOrderInfo' oculta la declaración global. véase la declaración anterior de 'arrstOrderInfo'. Tampoco está muy claro.
4) 'nOrderCnt' es un identificador no declarado. ¿Por qué no se declara en ningún sitio?
Así es como debería estar todo en el código si se mira el código en su conjunto:
Una última cosa: sigo sin entender de dónde vienen los.n y los.f y qué son.
El operador "punto" indica el acceso a un miembro de una estructura o clase. En este caso, se trata de una estructura.
Las letras n y f son una forma de especificar el tipo de datos almacenados en una variable. Al fin y al cabo, con un gran número de variables, es imposible recordar el tipo de cada una. Y si en un nombre de una variable habrá una indicación de su tipo, la necesidad de recordar desaparece por sí misma. n es un signo de un número entero (de Numeric), f es un número real (de float - número de punto flotante). Esta forma de escribir los nombres de las variables se llama notación húngara.
El operador punto indica el acceso a un miembro de una estructura o clase. En este caso, una estructura.
Las letras n y f son una forma de especificar el tipo de datos que se almacenan en una variable. Al fin y al cabo, con un gran número de variables, es imposible recordar el tipo de cada una. Y si en un nombre de una variable habrá una indicación de su tipo, la necesidad de recordar desaparece por sí misma. n es un signo de un número entero (de Numeric), f es un número real (de float - número de punto flotante). Esta forma de notación de los nombres de las variables se llama notación húngara.
¡¡Ahí está!! ¡¡¡Resulta queg_ yg_n no son sólo una abreviatura, sino prefijos que dicen que son variables enteras globales y globales!!! Ugh... Y no pude entender por qué esos guiones en las designaciones de las variables... ¿Cómo es posible que un principiante, que no está familiarizado con estas sutilezas, escriba código utilizando matrices, estructuras, etc.? Pensé que mi sencilla estrategia podía escribirse en un lenguaje simple, sin sumergirse en las zonas salvajes.
¿Podría darme un enlace a un tutorial detallado (ampliado) sobre mcl4 para estudiarlo junto a sus consejos?
¿Y podría escribir el código anterior sin utilizar la notación húngara para la comparación? ¿Está seguro de que la plataforma MT4 lo entiende claramente?
Y una pregunta sobre el código: ¿para qué sirve elcontinue;?
Si un pedido no se selecciona en la primera iteración, no se seleccionará en las siguientes y el ciclo continuará indefinidamente? Porque el número de pedidos no cambia. ¿No sería más correctoromper con un mensaje de error?Gráficos del menú contextual, propiedades, colores... ¿lo has probado?
¡¡¡Gracias ya lo he encontrado !!!
Si se hace mediante programación, ver las funciones ChartSetInteger() y ChartGetInteger().
¡¡¡Gracias por encontrarlo ya con tu ayuda!!!
¡¡Ahí está!! ¡¡¡Resulta queg_ yg_n no son una simple abreviatura, sino prefijos que dicen que son variables globales y enteras globales!!! Ugh... Y no pude entender por qué esos guiones en las designaciones de las variables... ¿Cómo es posible que un principiante, que no está familiarizado con estas sutilezas, escriba código utilizando matrices, estructuras, etc.? Pensé que mi sencilla estrategia podía escribirse en un lenguaje simple, sin sumergirse en las zonas salvajes.
Para hacer algo, hay que profundizar en las sutilezas. No hay otra manera.
¿Podría darme un enlace a un tutorial detallado (ampliado) sobre mcl4 para estudiar junto a sus consejos?
Sólo conozco un libro de texto sobre MQL4: el de Sergey Kovalev.
¿Y podría escribir el código anterior sin utilizar la notación húngara para la comparación? ¿Está seguro de que la plataforma MT4 lo entiende claramente?
Acostúmbrate a un formato de código adecuado de inmediato )) La notación húngara ha sido inventada por programadores bastante experimentados.
Y una pregunta sobre el código: ¿para qué sirve elcontinue;?
Entonces, si un pedido no se selecciona en la primera iteración, no se seleccionará en las siguientes y el bucle seguirá hasta el infinito? Porque el número de pedidos no cambia. ¿No sería más correctoromper con un mensaje de error?Si no conseguimos seleccionar un pedido, no significa que no podamos seleccionar el siguiente. Por lo tanto, es razonable continuar el bucle.
El hecho de no seleccionar un pedido no significa que no se pueda seleccionar el siguiente. Por lo tanto, es razonable continuar el ciclo.
¿Y no es necesario mostrar un mensaje de error? Probablemente sería útil saber por qué no se encuentra una orden y cómo evitarlo?