[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 3

 
artmedia70:
Mostrar todo el código


El caso es que si se quita la comparación MA, ¡funciona!

Si lo vuelves a enchufar, ¡NO funciona en absoluto!

int Stoch_1,Stoch_2,Ma_1,Ma_2;


int start()
  {
Ma_1=iMA(NULL,PERIOD_M5,5,0,MODE_LWMA,PRICE_CLOSE,1) ;
Ma_2=iMA(NULL,PERIOD_M5,15,0,MODE_LWMA,PRICE_CLOSE,1) ; 

Stoch_1=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_MAIN,1); 
Stoch_2=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
Print (Ma_1,"___",Ma_2);  // печатает 134 (GBPJPY)

if ( Hour()>10 && Hour()<20) 
 {
  if ( Ma_1 > Ma_2)       // если убрать строку- работает. Оставить - не работает       
      {
                      

//               if (Stoch_1>Stoch_2)


 { SetVLine(Blue, "", 0, 0, 1);} 
 
}}
     
     
  if ( Hour()>10 && Hour()<20) 
   {
  if ( Ma_1<Ma_2)       // если убрать строку- работает. Оставить - не работает    
     {
                               
 
 // if (Stoch_1<Stoch_2)                      
 

              {SetVLine(Red, "", 0, 0, 1);} 
  
  
}  }

} return(0); //}
//---------------------------
//+----------------------------------------------------------------------------+
void SetVLine(color cl, string nm="", datetime t1=0, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_VLINE, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_STYLE, st);
  ObjectSet(nm, OBJPROP_WIDTH, wd);
  }
 
artmedia70:

MA_1 y MA_2 deben ser del tipo double.

¿Cuál es tu tipo?


"Pero siempre he sido la reina de corazones" (c) "12 sillas"

y siempre los he puesto en int

 
rigonich:
Sí, como te han dicho más arriba, si las variables son de tipo int darán 1 para las euras, porque al convertir1,3075 al tipo int da 1, y probablemente estés imprimiendo tus variables y no los valores medios.


gbkznm.... ¡¡¡Qué vergüenza!!! ¡exactamente! int es un número ENTERO y double es un punto flotante....

¡vergüenza!

 
lottamer:

y siempre los he metido en el int

¡Estoy lleno de conocimientos! :)))
 

¡¡¡TODO PARECE FUNCIONAR!!!

¡¡¡MUCHAS GRACIAS!!!

Pensé que era más de .... :))))))

 
TarasBY:
Conocimiento - ¡Pantalones completos! :)))


Me arrepiento......
 
lottamer:


"Pero siempre he sido la reina de corazones" (c) "12 sillas"

y siempre los he tenido en el int


Las variables de tipo int son números enteros, y cuando se les asigna un número con una parte fraccionaria, el número se redondea primero al número entero más cercano, y luego el valor de ese número se asigna a una variable int.
 
Si pones una variable doble en una int, ya sé lo que pasará. Y si hacemos la operación inversa? int adoble no será peor, ¿verdad?
 

Enséñame, por el amor de Dios, a trabajar con comentarios:

1. si un comentario ya está hecho, o se está haciendo, ¿cómo puedo no pegarlo, sino pasar a hacer otro comentario, si, por ejemplo, la pregunta ya ha sido contestada?

2. si se inserta un código, ¿cómo puedo pasar a insertar texto plano después de insertarlo? Enter continúa introduciendo el texto como código.

3. al copiar, algunas cosas las inserta por defecto, por ejemplo, al copiar desde la ayuda, lo copiado se inserta como un enlace.¿Cómo puedo pegar lo copiado como texto plano?

 
lottamer:
Si pones una variable doble en una int, ya sé lo que pasará. Pero, ¿qué pasa si haces la operación inversa? int adoble no lo hará peor, ¿verdad?
Una variable sólo puede colocarse en un lugar determinado de la memoria del ordenador, que tiene su propia dirección y tamaño.Lo que se dice es asignar a una variable de tipo double el valor de un número de tipo int.Esto es posible, el valor de esta variablese representará como un número de tipo double con una parte fraccionaria igual a 0