FileWriteDouble

Dosya işaretçisinin geçerli konumundan başlayarak double tipindeki parametrenin değerini ikili dosyaya yazar.

Dosya işaretçisinin geçerli konumundan başlayarak double tipindeki parametrenin metne dönüştürülmüş değerini CSV veya metin dosyasına yazar.

uint  FileWriteDouble(
   int     file_handle,     // Dosya tanıtıcı değeri
   double  value            // Yazılacak değer
   );

Parametreler

file_handle

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

value

[in]   double tipli değer.

Dönüş değeri

Başarılı olursa fonksiyon yazılan bayt sayısını döndürür (ikili dosyaya yazarken — sizeof(double)=8). Dosya işaretçisi aynı bayt sayısı kadar hareket eder.

Not

İkili dosyaya yazma durumunda, double tipinde bir parametreyle FileWrite fonksiyonunu çağırmaya eşdeğerdir

double double_value;
FileWrite(file_handle,double_value);

Örnek:

//+------------------------------------------------------------------+
//|                                         Demo_FileWriteDouble.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"
//--- script çalıştığında giriş parametrelerinin penceresini göster
#property script_show_inputs
//--- terminalden veri alımı için parametreler
input string             InpSymbolName="EURJPY";           // döviz çifti
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_M15;       // zaman aralığı
input int                InpMAPeriod=10;                   // düzleştirme periyodu
input int                InpMAShift=0;                     // gösterge kaydırma değeri
input ENUM_MA_METHOD     InpMAMethod=MODE_SMA;             // düzleştirme tipi
input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE;      // fiyat tipi
input datetime           InpDateStart=D'2013.01.01 00:00'; // veri kopyalama için başlangıç tarihi
//--- verinin dosyaya yazılması için gereken parametreler
input string             InpFileName="MA.csv";    // dosya ismi
input string             InpDirectoryName="Data"; // dizin ismi
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   ma_buff[];
   datetime time_buff[];
   int      size;
//--- MA göstergesinin tanıtıcı değerini al
   ResetLastError();
   int ma_handle=iMA(InpSymbolName,InpSymbolPeriod,InpMAPeriod,InpMAShift,InpMAMethod,InpAppliedPrice);
   if(ma_handle==INVALID_HANDLE)
     {
      //--- gösterge tanıtıcı değeri alınamadı
      PrintFormat("Gösterge tanıtıcı değerinin alınması hatası. Hata kodu = %d",GetLastError());
      return;
     }
//--- gösterge değerleri hesaplanana kadar döngü içinde olunacak
   while(BarsCalculated(ma_handle)==-1)
      Sleep(20); // göstergenin değerlerinin hesaplanabilmesiiçin bir duraklama
   PrintFormat("gösterge değerleri, %s'den başlayarak dosyaya yazılacak",TimeToString(InpDateStart));
//--- gösterge değerlerini kopyala
   ResetLastError();
   if(CopyBuffer(ma_handle,0,InpDateStart,date_finish,ma_buff)==-1)
     {
      PrintFormat("Gösterge değerlerinin kopyalanması başarısız oldu. Hata kodu = %d",GetLastError());
      return;
     }
//--- uygun çubukların zamanlarını kopyala
   ResetLastError();
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Zaman değerleri kopyalanamadı. Hata kodu = %d",GetLastError());
      return;
     }
//--- tampon büyüklüğünü al
   size=ArraySize(ma_buff);
//--- serbest bellek, gösterge tarafından işgal edildi
   IndicatorRelease(ma_handle);
//--- gösterge değerlerini yazmak için dosyayı aç (dosya yoksa, otomatik olarak oluşturulacak)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s dosyası yazma için hazır",InpFileName);
      PrintFormat("Dosya yolu: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- önce, veri örneğinin büyüklüğünü yaz
      FileWriteDouble(file_handle,(double)size);
      //--- göstergenin zamanını ve değerini dosyaya yaz
      for(int i=0;i<size;i++)
        {
         FileWriteDouble(file_handle,(double)time_buff[i]);
         FileWriteDouble(file_handle,ma_buff[i]);
        }
      //--- dosyayı kapat
      FileClose(file_handle);
      PrintFormat("Veri yazıldı, %s dosyası kapatıldı",InpFileName);
     }
   else
      PrintFormat("%s dosyası açılamadı, Hata kodu = %d",InpFileName,GetLastError());
  }

Ayrıca Bakınız

Reel tipler (double, float)