[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 168

 

Per favore, ditemi come arrotondare un valore a 4 cifre decimali.

Ho un calcolo come questo

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


dove Prezzo1_M5_1 e Prezzo2_M5_1 sono valori di quotazioni. Tuttavia, a_M5_461 non sono quattro cifre decimali, ma di più, purché l'espressione contenga la moltiplicazione per 4,61. Dobbiamo fare in modo che il valore sia arrotondato a 4 cifre decimali.

Per favore, ditemi come fare. Non riesco a trovarlo da nessuna parte.

 
FOReignEXchange писал(а) >>

Per favore, ditemi come arrotondare un valore a 4 cifre decimali.

Ho un calcolo come questo

dove Prezzo1_M5_1 e Prezzo2_M5_1 sono valori di quotazioni. Tuttavia, a_M5_461 non sono quattro cifre decimali, ma di più, purché l'espressione contenga la moltiplicazione per 4,61. Dobbiamo fare in modo che il valore sia arrotondato a 4 cifre decimali.

Per favore, ditemi come fare. Non riesco a trovarlo da nessuna parte.

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

Grazie mille. Questa è la seconda volta che mi hai aiutato.

Grazie.

 
FOReignEXchange писал(а) >>

Grazie mille. Questa è la seconda volta che mi hai aiutato.

Grazie.

È tutto l'indicatore che stai facendo. O è qualcos'altro?

 
Vinin >> :

È tutto quello che fa l'indicatore. O è qualcos'altro?

Lo sto facendo. Non ho fretta. L'indicatore è complicato, ma sono interessato a farlo da solo. Mi piacciono i compiti complessi.

 
Vinin >> :

La vostra opzione non funziona. Quando un valore viene visualizzato sullo schermo, vengono mostrate 8 cifre decimali. Di questi, 4 sono zeri.

 
FOReignEXchange писал(а) >>

La vostra opzione non aiuta. Quando un valore viene visualizzato sullo schermo, vengono scritte 8 cifre decimali. Di questi, 4 sono zeri.

NormalizeDouble() è usato per i calcoli, DoubleToStr() è meglio per l'output;

 
Vinin >> :

NormalizeDouble() è usato per i calcoli, DoubleToStr() è meglio per l'output;

Sì, si adatta perfettamente. Grazie ancora.

 

Si prega di consigliare qual è l'errore:


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
}


Di conseguenza, Buffer1[i+1] e Buffer1[i+30] mostrano 0 quando l'indicatore inizia.

Dopo un po' di tempo Buffer1[i+1] inizia a mostrare un valore diverso da zero (perché non immediatamente?),

ma il Buffer1[i+30] rimane 0.

- A cosa è legato?

 
chief2000 писал(а) >>

Si prega di consigliare qual è l'errore:

Di conseguenza, Buffer1[i+1] e Buffer1[i+30] mostrano 0 quando l'indicatore inizia.

Dopo un po' di tempo Buffer1[i+1] inizia a mostrare un valore diverso da zero (perché non immediatamente?),

ma il Buffer1[i+30] rimane 0.

- Cosa c'entra questo?

E a cosa equivale?

Motivazione: