[¡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 701

 
IgorM:


tu perro al pasar los parámetros a la función, si lo pasas como SaveDataIND(double TempIND[])

double TempIND[ ] es en realidad una nueva matriz para la función, pero sin derecho a cambiar los parámetros, intente SaveDataIND(double & TempIND[])

¡¡No, no lo es!! Parece que el perro se comió un trozo de carne después de todo... Gracias, Igor.
 

¿Es posible hacer que se pueda pasar en una función qué indicador utilizar, para que en la cadena

TempIND[j]=iAD(NULL,PERIOD_M5,j);     

no es un indicador específico, sino que se pasa como un parámetro de la función?

 
Pues bien, haz un conmutador o algo así y escribe tus posibles indictores asignándoles índices.
 
Mathemat:
Pues bien, haz un conmutador o algo así y escribe tus posibles indictores asignándoles índices.
Gracias, Alexey, ese pensamiento se me ocurrió primero... Pensé que tal vez alguien sugeriría algo más extremo... :)
 
artmedia70:

¿Es posible hacer que se pueda pasar en una función qué indicador utilizar, para que en la cadena

no es un indicador específico, sino que se pasa como un parámetro de la función?



Pero, ¿qué sentido tiene? Estas acciones no suelen realizarse - normalmente los datos se envían a la función, y la función que llama prepara los datos/array

parece que tu construcción ArrayResize(TempIND,nBars); no es correcta, al menos en otros lenguajes de programación, el compilador no lo pasaría por alto ya que tienes double TempIND[50]; - es decir, el array está declarado como estático y debería ser dinámico (es decir, sin dimensiones) - double TempIND[];

ZS: y confusión con los nombres de las variables en la función - no olvides que si hay una variable global (global en el cuerpo del EA), la variable declarada dentro de la función con el mismo nombre será completamente diferente:

int my_int = 100;

///////////
int my_func(){

int my_int = 123;
Print("my_func my_int = ",my_int);
return(0);
}

int start(){
Print("start_func my_int = ",my_int);
return(0);
}
esto se suele llamar el ámbito de las variables - cambiar el nombre de lo que está en la función su nombre es decir, void SaveDataIND(double myTempIND[], int nBars) - menos confusión será
 
artmedia70:

¿Dónde se inicializa Lot?

Entonces, sólo después de comprobar el alce, cambiar Lots_New como se ha escrito antes, o asignarle el valor = Lot;



Gracias. ¡Todo está funcionando!
 
IgorM:


Pero, ¿qué sentido tiene? Estas acciones no suelen realizarse: los datos suelen enviarse a la función, y la función que llama prepara los datos/array

Parece que tienes mal la construcción ArrayResize(TempIND,nBars); al menos en otros lenguajes de programación el compilador no lo pasaría por alto porque tienes double TempIND[50]; - es decir, el array está declarado como estático, mientras que debería ser dinámico (es decir, sin dimensionalidad) - double TempIND[];

ZS: y confusión con los nombres de las variables en la función - no olvides que si hay una variable global (global en el cuerpo del EA), la variable declarada dentro de la función con el mismo nombre será completamente diferente:

esto se suele llamar ámbito de las variables - renombrar las cosas en función de sus nombres, es decir, void SaveDataIND(double myTempIND[], int nBars) - menos confusión será

1. Entonces, Igor, ¿debo escribir mi propia función absolutamente idéntica para cada indicador?

2. Gracias, lo he arreglado por si acaso...

3. no me confunde - puedo ver qué matriz se está utilizando y dónde, es de alguna manera más fácil para mí invertirlo, pero cuando tengo un montón de nombres, definitivamente me confundiré... Aunque... Probablemente debería acostumbrarme a escribirlo bien...

 
cyclik33:

Gracias. ¡Todo está funcionando!
De nada, vuelve... :)
 
T-G 13.07.2010 22:56 am Corrección | supresión
artmedia70:
Comprueba la apertura de una nueva vela. Si es nuevo, se abre, si es viejo, no...
¿cuál es la mejor manera de hacerlo?
 
T-G:
T-G 13.07.2010 22:56 modificado | eliminar
artmedia70:
Comprueba la apertura de una nueva vela. Si es nuevo, se abre, si es viejo, no...
¿Cuál es la mejor manera de hacerlo?

static int time = Time[0];

si (tiempo < Tiempo[0]){

// vela vieja

} si no {

// nueva vela

tiempo = Tiempo[0];

}