[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 705
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
¡Así de claro, mirar en el libro y no ver, funciona gracias! Siguiendo) con las preguntas. Todo sobre las mismas variables globales. He añadido la siguiente condición al indicador:
Quiero definir a qué variable global se le debe asignar un valor, dependiendo de la moneda en la que se base el indicador.
Entiendo que en la variable global GlobalVariableSet(valuta,param), el nombre (valuta) debe contener el valor que se le ha asignado anteriormente
llamar de nuevo a la variable global en el código del Asesor Experto
string valuta="valuta";
int i= GlobalVariableGet(valuta); // pero no obtengo el valor, .... Es decir, obtengo 0. ¿Puede ser que sea imposible cambiar el nombre de la variable global de esta manera?
Si un EA comprueba el valor guardado por el indicador, entonces sería lógico suponer que el valor del parámetro valuta debería corresponder al nombre del símbolo, es decir, EURUSD o GBPUSD.
En consecuencia, si el asesor comprueba el valor del símbolo actual, entonces
string valuta = Symbol();
int i= GlobalVariableGet(valuta);En primer lugar, de la ayuda
Devuelve el valor de la variable global existente o 0 en caso de error. Llame a GetLastError() para obtener información sobre el error.
¿Puede ver el contenido del GV, pero no puede recuperarlo?
Pues bien, las variables globales muestran tanto el nombre como el valor, .... No puedo obtener el valor de la variable global en mi código a través de la variable global (nombre del parámetro), tengo que especificar el nombre de la cadena, entonces no hay problema encuentra todo.
Pues las variables globales muestran tanto el nombre como el valor,..... No puedo obtener el valor de la variable global en mi código a través de (nombre-parámetro) de la variable global, tengo que especificar el nombre de la cadena, entonces no encuentra problemas.
Sustituir
if (symb==EUR) {valuta=EUR;}
a
if (symb=="EURUSD") {valuta="EUR";}
Si el EA comprueba el valor guardado por el indicador, entonces sería lógico suponer que el valor del parámetro valuta debería corresponder al nombre del instrumento, es decir, EURUSD o GBPUSD...
En consecuencia, si el asesor comprueba el valor del símbolo actual, entonces
string valuta = Symbol();
int i= GlobalVariableGet(valuta);Así es como funciona)) Es más fácil de lo que parece )
¡Un gran agradecimiento a todos los que nos visitan y ayudan!
Amigos, decidme en qué he metido la pata... No puedo entenderlo. El indicador lee los datos, pero luego no funciona. No lo encuentro. Quizá alguien pueda decirme qué es lo que no entiendo:
El diario siempre muestra los datos de la matriz de valores del indicador, pero luego se detiene...
... sólo una célula cero... y sólo cero... Ayuda por favor...
Lo siento, ha habido un error ..... aquí está el original
Odyssey, si no los tienes, deberías añadirlos :))
Amigos, decidme en qué he metido la pata... No puedo entenderlo. El indicador lee los datos, pero luego no funciona. No lo encuentro. Tal vez alguien pueda decirme qué es lo que no entiendo:
El diario siempre muestra los datos de la matriz de valores del indicador, pero luego se detiene...
... sólo una célula cero... y sólo cero... Ayuda por favor...
Artyom, encontró el primer error hasta ahora:
Los arrays PeakUP[] y PeakDN[], están declarados sin cantidad especificada de elementos, es decir, los has creado sin celdas en absoluto, y más adelante en un código intentas escribir algo en ellos, pero como no contienen en sí mismos elementos, naturalmente en ellos no se escribe nada, y en la impresora constantemente cero. Como no se sabe exactamente cuántos picos y valles habrá, recomiendo aumentar dinámicamente el número de elementos de estas matrices cuando lleguen nuevos datos, las zonas corregidas se marcan en rojo.
ArraySize() devuelve el número total de elementos de la matriz, pero como la indexación empieza en cero, el número real de elementos es ArraySize() - 1.
...como hacer, o al menos que hay que especificar en él, para que abra órdenes en otros pares. No quiero ejecutar varios EAs ((
Artyom, de momento he encontrado el primer error:
Los arrays PeakUP[] y PeakDN[], están declarados sin cantidad especificada de elementos, es decir los has creado sin celdas en absoluto, y más adelante en el código intentas escribir algo en ellos, pero como no contienen elementos en sí mismos, naturalmente no se escribe nada en ellos, y en la impresora constantemente cero. Como no se sabe exactamente cuántos picos y valles habrá, recomiendo aumentar dinámicamente el número de elementos de estas matrices cuando lleguen nuevos datos, las zonas corregidas se marcan en rojo.
ArraySize() devuelve el número total de elementos de la matriz, pero como la indexación empieza en cero, el número real de elementos es ArraySize() - 1.