[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 168

 

Por favor, me diga como arredondar um valor para 4 casas decimais.

Eu tenho um cálculo como este

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


onde Price1_M5_1 e Price2_M5_1 são valores de cotações. Entretanto, a_M5_461 não é quatro casas decimais, mas mais, desde que a expressão contenha a multiplicação por 4,61. Precisamos fazer com que o valor seja arredondado para 4 casas decimais.

Por favor, me diga como fazê-lo. Não consigo encontrá-lo em nenhum lugar.

 
FOReignEXchange писал(а) >>

Por favor, me diga como arredondar um valor para 4 casas decimais.

Eu tenho um cálculo como este

onde Price1_M5_1 e Price2_M5_1 são valores de cotações. Entretanto, a_M5_461 não é quatro casas decimais, mas mais, desde que a expressão contenha a multiplicação por 4,61. Precisamos fazer com que o valor seja arredondado para 4 casas decimais.

Por favor, me diga como fazê-lo. Não consigo encontrá-lo em nenhum lugar.

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

Muito obrigado. Esta é a segunda vez que você ajuda.

Obrigado.

 
FOReignEXchange писал(а) >>

Muito obrigado. Esta é a segunda vez que você ajuda.

Obrigado.

É esse todo o indicador que você está fazendo. Ou é algo mais?

 
Vinin >> :

É que tudo o que o indicador está fazendo. Ou é algo mais?

Eu estou fazendo isso. Eu não tenho pressa. O indicador é complicado, mas eu mesmo estou interessado em fazer isso. Eu gosto de tarefas complexas.

 
Vinin >> :

Sua opção não funciona. Quando um valor é exibido na tela, são exibidas 8 casas decimais. Destes, 4 são zeros.

 
FOReignEXchange писал(а) >>

Sua opção não ajuda. Quando um valor é exibido na tela, são escritas 8 casas decimais. Destes, 4 são zeros.

NormalizeDouble() é usado para cálculos, DoubleToStr() é melhor para a saída;

 
Vinin >> :

NormalizeDouble() é usado para cálculos, DoubleToStr() é melhor para a produção;

Sim. Encaixa perfeitamente. Mais uma vez, obrigado.

 

Por favor, informe qual é o erro:


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, Buffer1[i+1] e Buffer1[i+30] mostram 0 quando o Indicador começa.

Após algum tempo Buffer1[i+1] começa a mostrar um valor não nulo (por que não imediatamente?),

mas Buffer1[i+30] permanece 0.

- A que está relacionado?

 
chief2000 писал(а) >>

Por favor, informe qual é o erro:

Como resultado, Buffer1[i+1] e Buffer1[i+30] mostram 0 quando o Indicador começa.

Após algum tempo Buffer1[i+1] começa a mostrar um valor não nulo (por que não imediatamente?),

mas Buffer1[i+30] permanece 0.

- O que isso tem a ver com o assunto?

E o que eu sou igual?