Sí, gracias. Pero como pregunté, ¿eso implica que en otro lenguaje no lo es? Si fuera la única forma de llevarlo a cabo usando MQ/MT4 u otro constructo de lenguaje entonces asumo que no tendrían que molestarse en declararlo.
Supongo que estoy preguntando los "detalles técnicos" como dijiste en ese post. Sólo por curiosidad, no por necesidad.
En cuanto a la sintaxis, EL lenguaje MQL5 para programar estrategias de trading es muy similar al lenguaje de programación C++, excepto por algunas características
no hay aritmética de direcciones;
no hay operador goto;
no se puede declarar una enumeración anónima
los constructores de clases y estructuras no pueden tener parámetros;
no hay herencia múltiple.
Así, puedo dar a entender que en C++ ocurrirá lo contrario... Gracias de todos modos, Gordon.
[...] ¿implica eso que en otro idioma no lo es? [...]
No implica nada, pero concretamente tanto en C como en C++ los arrays se pasan por referencia también (técnicamente se pasa un puntero al primer elemento del array, ese puntero se pasa por valor).
¡Muy interesante ! Desafortunadamente, los EA necesitan parámetros, y a veces muchos, así que no podemos evitarlos [...]
Las extensiones son, en efecto, inevitables. Aunque son de ámbito global, no son lo mismo que las variables globales (no confundir con las GV's); específicamente - no se recomienda cambiar su valor a través del código, por lo tanto no deben ser utilizadas para pasar información entre funciones de todos modos (ver aquí -> https://www.mql5.com/en/forum/123535).
Estoy usando reglas de nomenclatura para GlobalVariable : Mucho más fácil de manejar y evitar algunos errores.
Esta discusión es sobre las variables definidas en el ámbito global (declaradas fuera de la función especial start(), init(), deinit()) y no sobre las VG... No mezcles las dos cosas.
tal vez se pueda engañar a una función para que devuelva dos valores combinándolos de manera que se puedan descombinar de nuevo en la función de llamada
tal vez se pueda engañar a una función para que devuelva dos valores combinándolos de manera que se puedan descombinar de nuevo en la función de llamada
¿Por qué resolver un problema que no existe? ¿Por qué reinventar la rueda? ¿Por qué inventar un código poco claro que sólo funcionaría en casos limitados?
Aquí hay una explicación simplificada -> https://www.mql5.com/en/forum/117210. Los arrays se pasan siempre por referencia en MQL4.
Sí, gracias. Pero como pregunté, ¿eso implica que en otro lenguaje no lo es? Si fuera la única forma de llevarlo a cabo usando MQ/MT4 u otro constructo de lenguaje entonces asumo que no tendrían que molestarse en declararlo.
Supongo que estoy preguntando los "detalles técnicos" como dijiste en ese post. Sólo por curiosidad, no por necesidad.
En cuanto a la sintaxis, EL lenguaje MQL5 para programar estrategias de trading es muy similar al lenguaje de programación C++, excepto por algunas características
Así, puedo dar a entender que en C++ ocurrirá lo contrario... Gracias de todos modos, Gordon.
Lo siento, pero no es una respuesta "técnica" :) ¿Podría decir por qué es mejor pasar una variable por referencia en lugar de una variable global?
Muchas razones que prefiero no repetir, en lugar de eso te remitiré a aquí -> https://en.wikipedia.org/wiki/Global_variable y aquí -> http://www.c2.com/cgi/wiki?GlobalVariablesAreBad (puedes buscar en Google para más... Es un concepto ampliamente aceptado y hay mucha información en la red).
[...] ¿implica eso que en otro idioma no lo es? [...]
Muchas razones que prefiero no repetir, en su lugar voy a referirme a aquí -> https://en.wikipedia.org/wiki/Global_variable y aquí -> https://www.mql5.com/go?link=http://www.c2.com/cgi/wiki?GlobalVariablesAreBad (puedes buscar en Google para más... Es un concepto ampliamente aceptado y hay mucha información en la red).
¡Muy interesante! Desafortunadamente, EA necesita parámetros, y a veces muchos, así que no podemos evitarlos y tenemos que tener cuidado por todas las razones mencionadas en https://www.mql5.com/go?link=http://www.c2.com/cgi/wiki?GlobalVariablesAreBad
Estoy usando reglas de nomenclatura para GlobalVariable : Mucho más fácil de manejar y evitar algunos errores.
Gracias Gordon.
¡Muy interesante ! Desafortunadamente, los EA necesitan parámetros, y a veces muchos, así que no podemos evitarlos [...]
Las extensiones son, en efecto, inevitables. Aunque son de ámbito global, no son lo mismo que las variables globales (no confundir con las GV's); específicamente - no se recomienda cambiar su valor a través del código, por lo tanto no deben ser utilizadas para pasar información entre funciones de todos modos (ver aquí -> https://www.mql5.com/en/forum/123535).
Estoy usando reglas de nomenclatura para GlobalVariable : Mucho más fácil de manejar y evitar algunos errores.
Sólo una pregunta: ¿hay algún lenguaje de programación que tenga funciones que devuelvan múltiples resultados?
tal vez se pueda engañar a una función para que devuelva dos valores combinándolos de manera que se puedan descombinar de nuevo en la función de llamada
algo así como
a = 10;
b = 20;
a = a*1000
c = a+b // 10020
return(c);
entonces en la función de llamada
b = c%1000 // 20
a = c-b/1000 // 10
tal vez se pueda engañar a una función para que devuelva dos valores combinándolos de manera que se puedan descombinar de nuevo en la función de llamada
algo como esto
[...]¿Por qué no?
¿Por qué no?