[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 198
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
En un indicador me encontré con la siguiente construcción:
int R; //la variable se declara a nivel global
Encontré la misma variable con el símbolo & en una función definida por el usuario así
void Function(int A, int B, int &R) {R = A*B}
¿Puede alguien decirme por qué se hace esto y dónde puedo leer sobre ello en detalle?
En un indicador me encontré con la siguiente construcción:
int R; //la variable se declara a nivel global
Encontré la misma variable con el símbolo & en una función definida por el usuario así
void Function(int A, int B, int &R) {R = A*B}
¿Puede alguien decirme por qué se hace esto y dónde puedo leer más al respecto?
El tutorial está aquí, ¡y Google manda!
¡Tutorial aquí y google rules!
No entiendo qué cambiaría si fuera así:
void Función(int A, int B) {R = A*B}
La variable R se declara globalmente y será visible dentro de la función de todos modos. ¿En qué casos es necesario pasar parámetros por referencia?
No entiendo qué cambiaría si fuera así:
void Función(int A, int B) {R = A*B}
La variable R se declara globalmente y será visible dentro de la función de todos modos. ¿En qué casos es necesario pasar parámetros por referencia?
Lee el libro de texto, la documentación, busca en Google, aquí.
"Al llamar a la función de intercambio, se crean nuevas variables a y b y se les asignan los valores 3 y 5. Estas variables no tienen ninguna relación con las variables p y q y su modificación no cambia los valores de p y q. Este método de paso de parámetros se llama paso de valores.
Para que una función pueda cambiar los valores de las variables declaradas en otras funciones, debe especificar que el parámetro que se pasa no es sólo un valor constante sino una variable, debe pasar los valores por referencia. Para ello, la función swap debería haberse declarado de la siguiente manera:
void swap(int & a, int & b)
Los ampersands antes del nombre de la variable significan que esta variable no es una variable local, sino una referencia a la variable especificada como parámetro cuando se llama a la función. Ahora, cuando se llama a swap(p,q), las variables a y b son sinónimos de las variables p y q, y el cambio de sus valores hace que los valores de p y q cambien. Pero no puedes llamar a una función como swap(3,5) porque 3 y 5 son constantes, y no puedes hacer que las variables sean sinónimos de las constantes".
Lee el tutorial, la documentación, google, aquí.
"Cuando se llama a la función de intercambio, se crean nuevas variables a y b y se les asignan los valores 3 y 5. Estas variables no tienen ninguna relación con las variables p y q, y su modificación no cambia los valores de p y q. Este método de paso de parámetros se llama paso de valores.
Para que una función pueda cambiar los valores de las variables declaradas en otras funciones, debe especificar que el parámetro que se pasa no es sólo un valor constante sino una variable, debe pasar los valores por referencia. Para ello, la función swap debería haberse declarado de la siguiente manera:
void swap(int & a, int & b)
Los ampersands antes del nombre de la variable significan que esta variable no es una variable local, sino una referencia a la variable especificada como parámetro cuando se llama a la función. Ahora, cuando se llama a swap(p,q), las variables a y b son sinónimos de las variables p y q, y el cambio de sus valores hace que los valores de p y q cambien. Pero no puedes llamar a una función como swap(3,5) ya que 3 y 5 son constantes y no puedes hacer que las variables sean sinónimos de las constantes".
Gracias por la información
Se puede, pero hay que poner al día el EA
Sí, lo entiendo :) Es que a menudo se prueba alguna estrategia, una versión de prueba, sólo para ver cómo funciona una idea. A veces los errores se revelan bajo una luz completamente diferente. Y no tengo tiempo que perder, si tengo que componer y ver con prisa.
¿Hay alguna forma de cerrarlo de forma contundente, para que no copie lo que escribe en el archivo de registro? Pregunta al respecto.
Es comprensible:) Es que muchas veces sólo se prueba una estrategia, una versión de prueba, sólo para ver cómo funciona la idea. A veces, los errores salen a la luz de una manera completamente diferente. Y no tienes tiempo que perder, si necesitas componer y ver con prisa.
¿Hay alguna forma de cerrarlo de forma contundente, para que no copie lo que escribe en el archivo de registro? Pregunta al respecto.
¿Cómo se puede confiar en un EA que funciona con errores?
Necesita algo más: cambiar la variable interna del programa, el punto de referencia para dibujar el indicador, y luego volver a calcular y dibujar la línea después de pulsar la combinación de teclas.
Por cierto, ¿por qué MT no quiere ganchos?
Gracias por su comprensión):
Gracias por su comprensión):
Así que... Haz dos scripts - cuélgalos en las teclas que necesites - y en ellos añade una Variable Global del terminal - que tu Asesor Experto leerá periódicamente - y cambia el Barshift... :-)
Si puedes - puedes hacer lo mismo a través de objetos gráficos ... por ejemplo durante la inicialización del EA, se muestran dos marcas de texto - y si una de ellas se pierde (usted ha seleccionado una de ellas con el ratón durante el trabajo del EA - presionado la tecla Del) - entonces el contador de su Barsheift será incriminado de una manera u otra :-) - restaurar la marca borrada en la pantalla....