[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 168

 

Подскажимте пожалуйста как окуруглить значение до 4 знаков после запятой.

У меня производится вычисление подобного рода 

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


, где Price1_M5_1 и Price2_M5_1 - это значения котировок.  Но   a_M5_461  получается не с четырьмя знаками после запятой, а поболее, так как в выражении есть умножение на 4.61.  Надо зделать, чтобы значение округлялось на 4 знака  после запятой. 

Скажите, пожалуйста как сделать. Что-то нигде не могу найти.

 
FOReignEXchange писал(а) >>

Подскажимте пожалуйста как окуруглить значение до 4 знаков после запятой.

У меня производится вычисление подобного рода

, где Price1_M5_1 и Price2_M5_1 - это значения котировок. Но a_M5_461 получается не с четырьмя знаками после запятой, а поболее, так как в выражении есть умножение на 4.61. Надо зделать, чтобы значение округлялось на 4 знака после запятой.

Скажите, пожалуйста как сделать. Что-то нигде не могу найти.

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

Спасибо большое. Который раз уже помогаете.

Благодарю.

 
FOReignEXchange писал(а) >>

Спасибо большое. Который раз уже помогаете.

Благодарю.

Это все индикатор делаешь. Или что-то другое?

 
Vinin >>:

Это все индикатор делаешь. Или что-то другое?

  Его делаю. Да я больно-то не спешу. Индикатор сложный, но мне самому интересно его делать. Люблю сложные задания.

 
Vinin >>:

  Ваш Вариант не помогает. При выводе значения на экран пишется 8 знаков после запятой. Из них 4 нуля.

 
FOReignEXchange писал(а) >>

Ваш Вариант не помогает. При выводе значения на экран пишется 8 знаков после запятой. Из них 4 нуля.

Для расчетов используется NormalizeDouble(), для вывода лучше использовать DoubleToStr();

 
Vinin >>:

Для расчетов используется NormalizeDouble(), для вывода лучше использовать DoubleToStr();

  Да. Идеально подходит. Спасибо ещё раз.

 

Пожалуйста, подскажите в чем ошибка:


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
}


В результате, Buffer1[i+1] и Buffer1[i+30] при запуске Индикатора показывают 0.

Через какое-то время Buffer1[i+1] начинает показывать ненулевое значение (почему не сразу?),

а Buffer1[i+30] так и остаётся 0.

- С чем это связано?

 
chief2000 писал(а) >>

Пожалуйста, подскажите в чем ошибка:

В результате, Buffer1[i+1] и Buffer1[i+30] при запуске Индикатора показывают 0.

Через какое-то время Buffer1[i+1] начинает показывать ненулевое значение (почему не сразу?),

а Buffer1[i+30] так и остаётся 0.

- С чем это связано?

А чему i равно?

Причина обращения: