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

 

No, sólo puede haber un resultado. pasar los valores por referencia :

double _bid = 0, _ask = 0;

Print(_bid,":",_ask);

ResFunction(_bid,_ask);

Print(_bid,":",_ask);


void ResFunction(double &x, double &y){
   x = Bid;
   y = Ask;
   return;
}
 
abeiks:

¡Hola!

Empezaré con un ejemplo sencillo, ya que de lo contrario será difícil de explicar.

Bien, debido al hecho de que en ambos casos el mismo valor es devuelto por sus subrutinas - precio de la oferta, entonces una de estas dos funciones puede ser eliminada del código. Si los valores devueltos son diferentes, puede, por ejemplo, ensamblarlos en una cadena - devolver desde la subrutina estos dos valores, separados por algún separador, como el punto y coma. Y devolverlo como una cadena. Luego, en el código principal, extrae 2 valores de la cadena y los convierte a doble.
 

Envía algo al subprograma para que pueda entender lo que se necesita.

 
abeiks:

¡Hola!

...

Hola! Como la gente ya ha comentado su pregunta, me gustaría preguntarle: ¿Son los campeones de 2008 ?

Si es así, ¿podría hablarnos de su GRAAL, sin revelar todos los "secretos de la corte de Madrid" y sin contarnos "todos los cuentos de los bosques de Viena"? Sólo hay que levantar el velo un poco... ¡Puede - en esta rama, estoy seguro, la gente lo encontrará útil!

Yo mismo me estoy preparando activamente para el Campeonato...

Gracias.

 
drknn:

Por favor, dígame, ¿por qué se pone a cero una variable cuando se declara una función? Está aquí:


Así que este es el valor por defecto si no se establece explícitamente cuando se llama, o estoy equivocado?
 
Skydiver:

Entonces, ¿es así como se establece el valor por defecto en caso de que no se establezca explícitamente cuando se llama, o estoy equivocado?


No lo sé. Pero me interesa. Lo comprobaré.

P.D.

¡Funciona!

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start(){
  Alert("func1(100) вернула значение = ",func1(100),"  func1() вернула значение = ",func1());
  return(0);
}
//+------------------------------------------------------------------+
int func1(int i=25){
        return(i);
}

 
Skydiver:
Intenta preimprimir cada valor en cada iteración del bucle. El tamaño de su matriz es pequeño, por lo que no habrá mezcla de datos.
 

¿Cómo puedo hacer que la diferencia entre órdenes abiertas del mismo signo sea de 1 barra?

 
GarKain:

¿Cómo puedo hacer que la diferencia entre las órdenes de apertura del mismo signo sea de 1 barra?


Tenemos que comparar la hora de apertura de una posición con la hora de apertura de la barra actual Time[0]. Si la hora de apertura de una posición es mayor o igual a la hora de apertura de la barra, el Asesor Experto no abrirá una nueva posición. Cuando aparezca una nueva barra, Time[0] cambiará su valor a un tiempo posterior y esta comparación mostrará que la posición aún no se ha abierto en la barra actual (nueva) y podemos operar.

Por cierto, su pregunta también puede desglosarse en 2 subpreguntas:
1. En la barra actual se abrió una posición y se logró cerrar, pero seguimos esperando una nueva barra.
2. Se abrió una posición en la barra actual y se logró cerrar, por lo que podemos abrir una posición de nuevo en la misma barra (es decir, podemos abrir 1 posición en la misma barra simultáneamente).

 
FAQ:

No, sólo puede haber un resultado:


Gracias, lo intentaré.