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

 

Una función no encajaba:

bool wC_Redraw()
   {
   if(wC_iStop != -1)
      {
      ObjectDelete(wC_sName);
      return(true);
      }
   if(wC_bFirst)
      if( ! ObjectSetText(wC_sName, "1"))
         return(false);
   int iTimeframe = tlC_GetTimeframe();
   double dLockPrice = tlC_GetPriceLock();
   datetime datMoveTime[2];
   datMoveTime[0] = iTime(NULL, iTimeframe, wC_iMoveBar[0]);
   if(datMoveTime[0] == 0)
      return(false);
   if( ! ObjectMove(wC_sName, 0, datMoveTime[0], wC_dMovePrice[0]) )
      return(false);
   
   if(dLockPrice == MYEMPTY)
      {
      datMoveTime[1] = iTime(NULL, iTimeframe, wC_iMoveBar[1]);
      if(datMoveTime[1] == 0)
         return(false);
      if( ! ObjectMove(wC_sName, 1, datMoveTime[1], wC_dMovePrice[1]) )
         return(false);
         
      if(wC_bScarp)
         {
         if( ! ObjectSet(wC_sName, OBJPROP_RAY, false) )
            return(false);
         if( ! ObjectSet(wC_sName, OBJPROP_STYLE, SCARP_LINE_STILE) )
            return(false);
         if( ! ObjectSetText(wC_sName, "0"))
            return(false);
         //ObjectSet(wC_sName, OBJPROP_COLOR, SCARP_LINE_COLOR);    
         return(true);
         }
      else
         ObjectSet(wC_sName, OBJPROP_RAY, true);
      }
   else
      if( ! ObjectMove(wC_sName, 1, datMoveTime[0], dLockPrice) )
         return(false);
      
   if( ! tlC_Save())
      return(false);
   
   return(true);
   }
 
alsu:

No, por el momento t3. La cuestión es que t3 es el primer tick de la barra, y eso significa que, al no haberse realizado aún los cálculos sobre él, el valor de IndicatorCounted() no ha tenido aún tiempo de cambiar - sólo ocurre después de que la función start() termine su trabajo. Esto es bastante lógico - la función da el número de barras calculadas, por lo que no tiene sentido cambiar su valor hasta que se haya calculado al menos un tick de la barra dada. Por lo tanto, en el momento t3 todavía vemos el valor 299, pero en el siguiente tick será 300.

¿Está más claro?

Sí, eso tiene más sentido, gracias.
 
cuando un asesor trabaja, los comentarios se muestran en la pantalla en la esquina superior izquierda. ¿cómo se pueden mover 100-200 pips a la derecha? porque es imposible leer nada en esa esquina normalmente debido a la superposición de caracteres... ((((
 
w_ersoc:
cuando el EA está funcionando, los comentarios se muestran en la esquina superior izquierda. ¿cómo se pueden mover 100-200 pips a la derecha? ya que en esa esquina es imposible leer nada normalmente debido a la superposición de caracteres... ((((

espacios al principio del texto del comentario es más fácil

o así:

   ObjectCreate("label_object1", OBJ_LABEL, 0, 0, 0);  
   ObjectSet("label_object1", OBJPROP_XDISTANCE, 720);  
   ObjectSet("label_object1", OBJPROP_YDISTANCE, 45);
   ObjectSetText("label_object1", StringConcatenate("Процент отрицательных %:     ", PercentMinus), 8, "Lucida Console", NavajoWhite);
   



 
moskitman:

espacios al principio del texto del comentario es más fácil

o así...

Gracias)
 
Me gustaría explicar un poco lo que he publicado más arriba. Por ejemplo, tenemos la tarea de hacer un modelo de coche en MKL4. Sabemos que el coche tiene algunas propiedades: presión del aceite, velocidad del cigüeñal, temperatura del refrigerante, etc. Pero si nos abstraemos un poco, podemos entender lo que queremos del coche: avanzar, retroceder, ir a la izquierda, ir a la derecha. Por ello, todas las propiedades se declaran como variables en nuestro paquete y se dejan sin tocar. Para la interacción con el entorno externo, dejamos las funciones: forward(), backward(), left(), right(). Básicamente, huele a encapsulamiento. Esto ayudará mucho a la hora de complicar el proyecto.
 
Chicos, ¿cómo escribo la expresión correctamente? Necesito comparar dos precios.
Close[2]>=Open[1]

pero Open[1] tiene que escribir que el precio es inferior en 1 ppt.

Tengo 5 decimales, así que escribí

Close[2] >= (Open[1]-10*Point)

pero resulta que este término es erróneo porque no funciona.

¿cuál es la forma correcta de escribirlo?

 
kilnart:

pero resulta que este plazo es erróneo porque no funciona.

¿Qué es exactamente lo que no funciona?
 
kilnart: ¿cómo se escribe bien?

pruébalo así:

if(Digits==5){
   if(Close[2]-Open[1]>=10*Point);// цена больше на 10 пп в 5-ти знаке
}
if(Digits==4){
   if(Close[2]-Open[1]>=Point);// цена больше на 1 пп в 4-х знаке
}

//или так ...

switch(Digits){
   case 5: if(Close[2]-Open[1]>=10*Point);// цена больше на 10 пп в 5-ти знаке
   case 4: if(Close[2]-Open[1]>=Point);// цена больше на 1 пп в 4-х знаке
}
 
sergeev:
¿qué es exactamente lo que no funciona?


la posición no se abre.
Razón de la queja: