[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 204

 
borilunad:
¡Hola Allis! La impresión debe ser prescrita donde no hay lectura de la garrapata! Puse en la impresión si hay un error, y si se abrió, y así se prescribe en el libro de registro que se abrió, y sólo una vez!

Sí, eres un mago)) Gracias.
 
Allis:

Eres un mago)) Gracias.
Exactamente, en la programación estoy lejos de ser un "Mago", sólo estoy aprendiendo, pero en algunas otras ramas, tal vez!) Gracias.
 

Buenas tardes a todos. Hay un indicador (superior en la figura) que dibuja sus valores (+1, 0, -1) en la barra número 0, pero el cálculo se realiza por la barra número 1. Necesito escribir un indicador que cuente el número de barras en cada bloque continuo separado de +1 y -1 del indicador superior y todo el historial (la media en la figura, la altura del gráfico de barras en unidades correspondientes al número de barras).He hecho un indicador (abajo en la figura), pero empieza a dibujarse sólo en el momento de la instalación en la ventana (línea vertical azul).¡Ayuda quien pueda!


Código

int start()
  {
    
    int i;
      
    for(i=1;i<Bars-34-1;i++)                                               
     {
      double AO_Sig_Sig_1 =iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i);                           
      double AO_Sig_Sig_2 = iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i+1);
      
                                  
      if((AO_Sig_Sig_1!=AO_Sig_Sig_2)) break;                                                                
     }
         
    i=i*(AO_Sig_Sig_1);         
               
    if(i>0)            
     {
      UpMapBuffer[0]=i;
     }
    else
     {
      UpMapBuffer[0]=0;
     } 
         
    if(i<0)         
     {
      DnMapBuffer[0]=i;
     }
    else
     {
      DnMapBuffer[0]=0;
     }          
                 
      
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
borilunad:

¡Este es el resto de la división! ¡Mira en los pasos de aritmética y en tu impresora!

Póngalo y sólo verá los dos resultados alternativamente:

 int x = MathRand() % 2;
  Print("x =",x);


No entiendo la lógica. En el libro que leí:

Si quieres calcular el resto de la división de la variablea por la variable by escribir el resultado en la variable ostatok, el operador de asignación tiene el siguiente aspecto:

ostatok = a % b;

Resultaque en nuestro caso, cuandoMathRand() sedivide por 2, el valor de x debe ser 0 o 1. ¿Por qué debería ser 0 o 1 de repente? Por ejemplo, aparecerá un número 9 al azar. 9 % 2 = 4.5. El resto de es igual a 4.
 
hoz:


Algo que no entiendo la lógica. En el libro que leí:

Resultaque en nuestro caso, cuandoMathRand() sedivide por 2, debería haber un valor de x igual a 0 o 1. ¿Por qué debería ser 0 o 1 de repente? Por ejemplo, aparecerá un número 9 al azar. 9 % 2 = 4.5. El resto de es igual a 4.

Cuando algo no cuadra, basta con un par de clics para responder...

P.D. ostatok = 9 % 2 = 1.

 
TarasBY:

Cuando algo no cuadra, basta con un par de clics para responder...

P.D. ostatok = 9 % 2 = 1.


Bueno, está escrito:

"Ladivisión con resto(división en módulo,encontrar el resto de la división,el resto de la división) es unaoperaciónaritmética que da como resultado dosnúmeros enteros:un cociente incompleto yel resto de la división de un número entero por otronúmero entero."

9 : 2 = 4,5 Son números dobles.

Si cortas la parte fraccionaria, es 4. ¿De dónde sacaste el 1?

 
hoz:


Hay algo en la lógica que no entiendo. En el libro que leí:

Resultaque en nuestro caso, cuandoMathRand() sedivide por 2, el valor de x debe ser 0 o 1. ¿Por qué tiene que salir 0 o 1 de repente? Por ejemplo, aparecerá un número 9 al azar. 9 % 2 = 4.5. El resto de es igual a 4.

Victor, no confundas int con doble. Así queint x = MathRand() % 2; ¡da 0 o 1! No puede dar 0,1 ni 0,9, ni 1,1 ni 1,9, porque los decimales en int se redondean y ¡se descartan los menores de 0,5! Y el signo % significa el resto de la división, no el signo de división. El signo de división es /.

Pongo tu ejemplo con 9 y obtengo un único resultado, 1, porque no hay aleatoriedad:

  int x = 9 % 2;//MathRand()
  Print("x =",x);

Tú lo preguntas:

9 : 2 = 4,5 Son números dobles.

Si descartas la parte fraccionaria, obtienes 4. ¿De dónde sacaste 1?

Respondo: ¡entonces 0,5 se redondea a 1!

¡Lo que es interesante, cuando puse un punto y cero (2,0) a 2, el compilador me dio un error diciendo que % requiere sólo un entero!

Así que aunque pongas doble x, sigue saliendo un int entero. Gracias, Víctor, por tus dudas. ¡Gracias a ellos y a vosotros he realizado una interesante investigación, que ampliará mis posibilidades de transformaciones matemáticas! ¡Te debo una copa (virtual)! :))

 
hoz:


Bueno, eso es lo que dice:

"Ladivisión con resto(división en módulo,hallar el resto de la división,resto de la división) es unaoperaciónaritmética que da como resultado dosnúmeros enteros:un cociente incompleto yel resto de la división de un número entero entre otronúmero entero."

9 : 2 = 4,5 Son números dobles.

Si cortas la parte fraccionaria, es 4. ¿De dónde sacaste el 1?

¿Cuál es el número entero más cercano a 9 que es divisible por 2 sin resto? Luego resta ese número del divisor (9). ¿Qué has conseguido?

P.D. Si fallas, puedes imprimir el resultado: Print ("ostatok = ", 9 % 2);

 

laveosa 07.03.2013 21:15

Hola, ¿pueden decirme cómo sustituir Symbol() por "EURUSD" en Ordersend() ¿o qué?

 
Mathemat:

laveosa 07.03.2013 21:15

Hola. Me pueden decir cómo reemplazar Symbol() por "EURUSD" en Ordersend() ¿o qué?

NULL