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

 

Por favor, dime cómo redondear un valor a 4 decimales.

Tengo un cálculo como este

a_M5_461=(Price1_M5_1-4.61*(Price1_M5_1-Price2_M5_1));


donde Precio1_M5_1 y Precio2_M5_1 son los valores de las cotizaciones. Sin embargo, a_M5_461 no son cuatro decimales, sino más, siempre que la expresión contenga la multiplicación por 4,61. Tenemos que hacer que el valor se redondee a 4 decimales.

Por favor, dígame cómo hacerlo. No lo encuentro en ningún sitio.

 
FOReignEXchange писал(а) >>

Por favor, dime cómo redondear un valor a 4 decimales.

Tengo un cálculo como este

donde Precio1_M5_1 y Precio2_M5_1 son los valores de las cotizaciones. Sin embargo, a_M5_461 no son cuatro decimales, sino más, siempre que la expresión contenga la multiplicación por 4,61. Tenemos que hacer que el valor se redondee a 4 decimales.

Por favor, dígame cómo hacerlo. No lo encuentro en ningún sitio.

a_M5_461=NormalizeDouble(Price1_M5_1-4.61*(Price1_M5_1-Price2_M5_1),Digits);
 

Muchas gracias. Es la segunda vez que me ayudas.

Gracias.

 
FOReignEXchange писал(а) >>

Muchas gracias. Es la segunda vez que me ayudas.

Gracias.

Es todo el indicador que estás haciendo. ¿O es otra cosa?

 
Vinin >> :

¿Es eso todo lo que hace el indicador? ¿O es otra cosa?

Lo estoy haciendo. No tengo prisa. El indicador es complicado, pero me interesa hacerlo yo mismo. Me gustan las tareas complejas.

 
Vinin >> :

Su opción no funciona. Cuando se muestra un valor en la pantalla, aparecen 8 decimales. De ellos, 4 son ceros.

 
FOReignEXchange писал(а) >>

Su opción no ayuda. Cuando se muestra un valor en la pantalla, se escriben 8 decimales. De ellos, 4 son ceros.

NormalizeDouble() se utiliza para los cálculos, DoubleToStr() es mejor para la salida;

 
Vinin >> :

NormalizeDouble() se utiliza para los cálculos, DoubleToStr() es mejor para la salida;

Sí. Encaja perfectamente. Gracias de nuevo.

 

Por favor, indique cuál es el error:


extern int RSI_Periods = 14;
extern int Percent_K   = 14;

// double Buffer1[];
double Buffer1[100000];

start() {

   while( i>=0) {

// ============================================================================================
      double Current_RSI, Lowest_RSI, Highest_RSI;

      Current_RSI    = iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, i);
      Highest_RSI    = Current_RSI;
      Lowest_RSI     = Current_RSI;

      for(int x= i+1; x<= Percent_K+ i+1; x++){
         Lowest_RSI  = MathMin( Lowest_RSI, iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
         Highest_RSI = MathMax( Highest_RSI,iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
      }


      Buffer1[ i]     = (( Current_RSI- Lowest_RSI) / ( Highest_RSI- Lowest_RSI)) * 100;
// ============================================================================================


   Comment(
      "\n",
      "\n", "Buffer1[i+30] = ", Buffer1[ i+30],
      "\n", "Buffer1[i+1] = ", Buffer1[ i+1],
      "\n", "Buffer1[i] = "  , Buffer1[ i],
      "\n",
      "\n"
   );

      i--;
   } // while
}


Como resultado, el Buffer1[i+1] y el Buffer1[i+30] muestran 0 cuando se inicia el Indicador.

Después de un tiempo, el Buffer1[i+1] empieza a mostrar un valor distinto de cero (¿por qué no inmediatamente?),

pero el Buffer1[i+30] se queda en 0.

- ¿Con qué está relacionado?

 
chief2000 писал(а) >>

Por favor, indique cuál es el error:

Como resultado, el Buffer1[i+1] y el Buffer1[i+30] muestran 0 cuando se inicia el Indicador.

Después de un tiempo, el Buffer1[i+1] empieza a mostrar un valor distinto de cero (¿por qué no inmediatamente?),

pero Buffer1[i+30] se queda en 0.

- ¿Qué tiene esto que ver?

¿Y a qué equivale?