FileReadBool

Lit du fichier du type CSV la chaîne de la position courante jusqu'au délimiteur (ou jusqu'à la fin de la ligne de texte) et transforme la chaîne lue en valeur du type bool.

bool  FileReadBool(
   int  file_handle      // handle du fichier
   );

Paramètres

file_handle

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

La valeur rendue

La ligne lue peut avoir les valeurs "true", "false" ou la représentation symbolique des nombres entières "0" ou "1". La valeur non zéro se transforme vers logique true. La fonction rend la valeur reçue transformée.

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

//+------------------------------------------------------------------+
//|                                            Demo_FileReadBool.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_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//---- plot Label1
#property indicator_label1  "UpSignal"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  4
//---- plot Label2
#property indicator_label2  "DownSignal"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  4
//--- les paramètres pour la lecture des données
input string InpFileName="MACD.csv";  // le nom du fichier
input string InpDirectoryName="Data"// le nom du répertoire
//--- les variables globales
int      ind=0;       // l'index
double   upbuff[];    // le tampon d'indicateur des flèches en haut
double   downbuff[];  // le tampon d'indicateur des flèches en bas
bool     sign_buff[]; // le tableau des signaux (true - l'achat, false - la vente)
datetime time_buff[]; // le tableau du temps de l'arrivée des signaux
int      size=0;      // la taille des tableau des signaux
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- ouvrons le fichier
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Le fichier %s est ouvert pour la lecture",InpFileName);
      //--- lisons d'abord le nombre de signaux
      size=(int)FileReadNumber(file_handle);
      //--- allouons la mémoire pour les tableaux
      ArrayResize(sign_buff,size);
      ArrayResize(time_buff,size);
      //--- lisons des données du fichier
      for(int i=0;i<size;i++)
        {
         //--- le temps du signal
         time_buff[i]=FileReadDatetime(file_handle);
         //--- la valeur du signal
         sign_buff[i]=FileReadBool(file_handle);
        }
      //--- fermons le fichier
      FileClose(file_handle);
     }
   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
   SetIndexBuffer(0,upbuff,INDICATOR_DATA);
   SetIndexBuffer(1,downbuff,INDICATOR_DATA);
//--- spécifions le code du symbole pour la rendu dans PLOT_ARROW
   PlotIndexSetInteger(0,PLOT_ARROW,241);
   PlotIndexSetInteger(1,PLOT_ARROW,242);
//---- l'établissement des valeurs de l'indicateur qui ne seront pas visibles sur le graphique
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(1,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);
   ArraySetAsSeries(high,false);
   ArraySetAsSeries(low,false);
//--- le cycle pour les barres non-traitées
   for(int i=prev_calculated;i<rates_total;i++)
     {
      //--- par défaut 0
      upbuff[i]=0;
      downbuff[i]=0;
      //--- 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])
              {
               //--- dessinons la flèche en fonction du signal
               if(sign_buff[j])
                  upbuff[i]=high[i];
               else
                  downbuff[i]=low[i];
               //--- augmentons le compteur
               ind=j+1;
               break;
              }
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Voir aussi

Le type bool, FileWrite