FileReadBool

Legge da un file CSV una stringa dalla posizione corrente fino al separatore (o fino alla fine della riga di testo) e converte la stringa letta in un valore di tipo bool.

Legge 1 byte di dati da un file BIN.

bool  FileReadBool(
   int  file_handle    // File handle
   );

Parametri

file_handle

[in] Il descrittore di file restituito da FileOpen().

Valore restituito

Valore di tipo bool. La stringa letta da un file CSV può avere i valori "true", "false" oppure la rappresentazione simbolica degli interi "0" o "1". Un valore diverso da zero viene convertito nel valore logico true. La funzione restituisce il valore convertito.

Nota

Per ottenere informazioni sull’errore, chiamare la funzione GetLastError().

Esempio (il file ottenuto fopo l'esecuzione dell'esempio per la funzione FileWrite è qui utilizzato)

//+--------------------------------------------------------------------------------+
//|                                                          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
//--- parametri per la lettura dei dati 
input string InpFileName="MACD.csv";  // nome del file
input string InpDirectoryName="Data"; // nome della directory
//--- variabili globali
int      ind=0;       // indice
double   upbuff[];    // buffer indicatore di freccia su
double   downbuff[];  // buffer indicatore di freccia giu
bool     sign_buff[]; // array signal (true - buy, false - sell)
datetime time_buff[]; // array dell'orario di arrivo di signal
int      size=0;      // grandezza dell'array signal
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato                         |
//+--------------------------------------------------------------------------------+
int OnInit()
  {
//--- apre il file
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("il file %s è aperto per la lettura",InpFileName);
      //--- prima, legge il numero di segnali
      size=(int)FileReadNumber(file_handle);
      //--- alloca la memoria per gli array
      ArrayResize(sign_buff,size);
      ArrayResize(time_buff,size);
      //--- legge i dati dal file
      for(int i=0;i<size;i++)
        {
         //--- orario di signal
         time_buff[i]=FileReadDatetime(file_handle);
         //--- valore di signal
         sign_buff[i]=FileReadBool(file_handle);
        }
      //--- chiude il file
      FileClose(file_handle);
     }
   else
     {
      PrintFormat("Fallimento nell'aprire il file %s, Codice errore = %d",InpFileName,GetLastError());
      return(INIT_FAILED);
     }
//--- lega gli array
   SetIndexBuffer(0,upbuff,INDICATOR_DATA);
   SetIndexBuffer(1,downbuff,INDICATOR_DATA);
//--- imposta il codice del simbolo per il disegno in PLOT_ARROW
   PlotIndexSetInteger(0,PLOT_ARROW,241);
   PlotIndexSetInteger(1,PLOT_ARROW,242);
//---- imposta i valori dell'indicatore che non verranno mostrati sul chart
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di iterazione indicatore personalizato                                |
//+--------------------------------------------------------------------------------+
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(low,false);
   ArraySetAsSeries(high,false);
//--- il loop per la barra che non è stata ancora maneggiata
   for(int i=prev_calculated;i<rates_total;i++)
     {
      //--- 0 per default
      upbuff[i]=0;
      downbuff[i]=0;
      //--- controlla se ci sono ancora dati presenti
      if(ind<size)
        {
         for(int j=ind;j<size;j++)
           {
            //--- se le date coincidono, usa il valore dal file
            if(time[i]==time_buff[j])
              {
               //--- disegna la freccia secondo il segnale
               if(sign_buff[j])
                  upbuff[i]=high[i];
               else
                  downbuff[i]=low[i];
               //--- incrementa il contatore
               ind=j+1;
               break;
              }
           }
        }
     }
//--- restituisce il valore di prev_calculated per la prossima chiamata
   return(rates_total);
  }

Vedi anche

Tipo bool, FileWrite