FileReadFloat

Bu fonksiyon, ikili dosya içindeki geçerli konumdan tek-duyarlıklı kayan noktalı sayı (float) okur.

float  FileReadFloat(
   int  file_handle    // Dosya tanıtıcısı
   );

Parametreler

file_handle

[in] FileOpen() fonksiyonunun dönüş yaptığı dosya tanımlayıcısı.

Dönüş değeri

float tipi değer.

Not

Hata ile ilgili daha detaylı bilgi almak için, GetLastError() fonksiyonunu çağırın.

Örnek (burada kullanılan dosya FileWriteFloat fonksiyonunun örneğinden elde edilmiştir)

//+------------------------------------------------------------------+
//|                                           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
//--- verinin okunması için gereken parametreler
input string InpFileName="Close.bin"// dosya ismi
input string InpDirectoryName="Data"// dizin ismi
//--- global değişkenler
int      ind=0;
int      size=0;
double   close_buff[];
datetime time_buff[];
//--- gösterge tamponları
double   buff[];
double   color_buff[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   int def_size=100;
//--- diziler için bellek tahsis et
   ArrayResize(close_buff,def_size);
   ArrayResize(time_buff,def_size);
//--- dosyayı aç
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s dosyası, okuma için müsait",InpFileName);
      PrintFormat("Dosya yolu: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- dosyadan veriyi oku
      while(!FileIsEnding(file_handle))
        {
         //--- zaman ve fiyat değerlerini oku
         time_buff[size]=(datetime)FileReadDouble(file_handle);
         close_buff[size]=(double)FileReadFloat(file_handle);
         size++;
         //--- taşan dizilerin büyüklüklerini artır
         if(size==def_size)
           {
            def_size+=100;
            ArrayResize(close_buff,def_size);
            ArrayResize(time_buff,def_size);
           }
        }
      //--- dosyayı kapat
      FileClose(file_handle);
      PrintFormat("Veriler okundu, %s dosyası kapatıldı",InpFileName);
     }
   else
     {
      PrintFormat("%s dosyası açılamadı, Hata kodu = %d",InpFileName,GetLastError());
      return(INIT_FAILED);
     }
//--- dizileri gösterge tamponlarına bağla
   SetIndexBuffer(0,buff,INDICATOR_DATA);
   SetIndexBuffer(1,color_buff,INDICATOR_COLOR_INDEX);
//---- çizelgede görüntülenmesi istenmeyen gösterge değerlerini ayarla
   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);
//--- hala işlenmemiş çubuklar için döngü
   for(int i=prev_calculated;i<rates_total;i++)
     {
      //--- varsayılan olarak 0
      buff[i]=0;
      color_buff[i]=0; // varsayılan olarak kırmızı renk
      //--- hala, herhangi bir veri mevcut mu kontrol et
      if(ind<size)
        {
         for(int j=ind;j<size;j++)
           {
            //--- eğer tarihler örtüşüyorsa, dosyadaki değer kullanılır
            if(time[i]==time_buff[j])
              {
               //--- fiyatı al
               buff[i]=close_buff[j];
               //--- mevcut fiyat öncekini geçmişse, renk mavi olacak
               if(buff[i-1]>buff[i])
                  color_buff[i]=1;
               //--- sayacı artır
               ind=j+1;
               break;
              }
           }
        }
     }
//--- bir sonraki çağrı için prev_calculated değerine dönüş yap
   return(rates_total);
  }

Ayrıca Bakınız

Reel tipler (double, float), FileReadDouble, FileWriteFloat