FileReadFloat

Lit un nombre à virgule flottante en simple précision (float) depuis la position actuelle d’un fichier binaire.

Lit dans un fichier CSV une chaîne depuis la position actuelle jusqu’au séparateur (ou jusqu’à la fin de la ligne de texte) et convertit la chaîne lue en une valeur de type float.

float  FileReadFloat(
   int  file_handle      // handle du fichier 
   );

Paramètres

file_handle

[in]  Le descripteur de fichier rendu par la fonction FileOpen().

La valeur rendue

Valeur de type float.

Note

Pour obtenir des informations sur l’erreur, appelez la fonction GetLastError().

Équivalent à l’appel de la fonction FileRead avec un paramètre de type float:

float float_value;
FileRead(file_handle,float_value);

Exemple (on utilise le fichier reçu à la suite du travail de l'exemple pour la fonction FileWriteFloat)

//+------------------------------------------------------------------+
//|                                           Demo_FileReadFloat.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
//---- plot Label1
#property indicator_label1  "CloseLine"
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_color1  clrRed,clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- les paramètres pour la lecture des données
input string InpFileName="Close.bin"; // le nom du fichier
input string InpDirectoryName="Data"; // le nom du répertoire
//--- les variables globales
int      ind=0;
int      size=0;
double   close_buff[];
datetime time_buff[];
//--- indicator buffers
double   buff[];
double   color_buff[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   int def_size=100;
//--- allouons la mémoire pour les tableaux
   ArrayResize(close_buff,def_size);
   ArrayResize(time_buff,def_size);
//--- ouvrons le fichier
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat(Le fichier %s est ouvert pour la lecture",InpFileName);
      PrintFormat("La voie vers le fichier: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- lisons les données du fichier
      while(!FileIsEnding(file_handle))
        {
         //--- lisons la signification du temps et du prix
         time_buff[size]=(datetime)FileReadDouble(file_handle);
         close_buff[size]=(double)FileReadFloat(file_handle);
         size++;
         //--- augmenons les tailles des tableaux s'ils sont remplis
         if(size==def_size)
           {
            def_size+=100;
            ArrayResize(close_buff,def_size);
            ArrayResize(time_buff,def_size);
           }
        }
      //--- fermons le fichier
      FileClose(file_handle);
      PrintFormat("Les données sont lues, le fichier %s est fermé",InpFileName);
     }
   else
     {
      PrintFormat("On n' a pas réussi à ouvrir le fichier %s, le code de l'erreur = %d",InpFileName,GetLastError());
      return(INIT_FAILED);
     }
//--- le rattachement des tableaux aux tampons d'indicateur
   SetIndexBuffer(0,buff,INDICATOR_DATA);
   SetIndexBuffer(1,color_buff,INDICATOR_COLOR_INDEX);
//---- l'établissement des valeurs de l'indicateur, qui ne seront pas vus sur le graphique
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ArraySetAsSeries(time,false);
//--- le cycle pour les barres non-traitées
   for(int i=prev_calculated;i<rates_total;i++)
     {
      //--- par défaut 0
      buff[i]=0;
      color_buff[i]=0; // la couleur rouge par défaut
      //--- la vérification s'il y a encore des données
      if(ind<size)
        {
         for(int j=ind;j<size;j++)
           {
            //--- si les dates correspondent, utilisons la valeur du fichier
            if(time[i]==time_buff[j])
              {
               //--- recevrons le prix
               buff[i]=close_buff[j];
               //--- si le prix actuel est plus que le précédente, la couleur est bleue
               if(buff[i-1]>buff[i])
                  color_buff[i]=1;
               //--- augmentons le compteur
               ind=j+1;
               break;
              }
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Voir aussi

Les types réels (double, float), FileReadDouble, FileWriteFloat