FileWrite

Metne dönüştürülmüş verileri CSV veya TXT türündeki bir dosyaya yazar; ayırıcı 0 değilse veriler arasına otomatik olarak eklenir. Dosyaya yazıldıktan sonra satır sonu karakteri "\r\n" eklenir.

Verileri dönüştürmeden, olduğu gibi BIN türündeki bir dosyaya yazar.

uint  FileWrite(
   int  file_handle,   // Dosya işaretçisi
   ...                 // Kaydedilmiş parametrelerin listesi
   );

Parametreler

file_handle

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

...

[in] Dosyaya yazılacak parametrelerin listesi virgüllerle ayrılır. En fazla 256 adet parametre yazılabilir.

Dönüş değeri

Yazılmış baytların sayısı.

Not

Parametre olarak yalnızca temel türlerdeki değişkenler kullanılabilir; dizilere, yapılara ve sınıflara izin verilmez.

CSV veya TXT'ye yazarken:

Sayısal veriler metin biçimine dönüştürülür (Print() fonksiyonuna bakın). double, float, complex ve complexf türlerindeki veriler, ondalık noktadan sonra 16 basamak doğrulukla yazılır. Hangi gösterim daha kompakt ise veriler geleneksel veya bilimsel biçimde yazılabilir. Karmaşık sayılar "(<real>,<imag>)" biçiminde yazılır. Reel sayıları farklı hassasiyette veya açıkça belirtilen biçimde yazdırmak için DoubleToString() fonksiyonunu kullanın.

bool türündeki değerler "true" veya "false" dizgileri olarak yazdırılır.

datetime türündeki değerler "YYYY.MM.DD HH:MI:SS" biçiminde yazdırılır.

BIN dosyasına yazarken veriler dönüştürülmeden olduğu gibi yazılır. string türündeki veriler, FileWriteString() fonksiyonundaki gibi sonlandırıcı sıfır olmadan yazılır.

Örnek:

//+------------------------------------------------------------------+
//|                                               Demo_FileWrite.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="EURUSD";           // döviz çifti
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // zaman aralığı
input int                InpFastEMAPeriod=12;              // hızlı EMA periyodu
input int                InpSlowEMAPeriod=26;              // yavaş EMA periyodu
input int                InpSignalPeriod=9;                // fark ortalama periyodu
input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE;      // fiyat tipi
input datetime           InpDateStart=D'2012.01.01 00:00'; // veri kopyalamanın başlayacağı tarih
//--- veriyi dosyaya yazmak için parametreler
input string             InpFileName="MACD.csv";  // dosya ismi
input string             InpDirectoryName="Data"; // dizin ismi
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish; // veri kopyalama için son tarih
   bool     sign_buff[]; // sinyal dizisi (true - al, false - sat)
   datetime time_buff[]; // sinyalin geliş zamanı
   int      sign_size=0; // sinyal dizisi büyüklüğü
   double   macd_buff[]; // gösterge değerlerinin dizisi
   datetime date_buff[]; // gösterge tarihlerinin dizisi
   int      macd_size=0; // gösterge dizilerinin büyüklükleri
//--- son zaman, şimdiki zaman
   date_finish=TimeCurrent();
//--- MACD göstergesinin tanıtıcı değerini al
   ResetLastError();
   int macd_handle=iMACD(InpSymbolName,InpSymbolPeriod,InpFastEMAPeriod,InpSlowEMAPeriod,InpSignalPeriod,InpAppliedPrice);
   if(macd_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(macd_handle)==-1)
      Sleep(10); // göstergenin tüm değerlerinin hesaplanabilmesi için durakla
//--- belli bir zaman aralığı için gösterge değerlerini kopyala
   ResetLastError();
   if(CopyBuffer(macd_handle,0,InpDateStart,date_finish,macd_buff)==-1)
     {
      PrintFormat("Gösterge değerlerinin kopyalanması başarısız. Hata kodu = %d",GetLastError());
      return;
     }
//--- gösterge değerleri için uygun zaman değerlerini kopyala
   ResetLastError();
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,date_buff)==-1)
     {
      PrintFormat("Zaman değerleri kopyalanamadı. Hata kodu = %d",GetLastError());
      return;
     }
//--- serbest bellek, gösterge tarafından işgal edildi
   IndicatorRelease(macd_handle);
//--- tampon büyüklüğünü al
   macd_size=ArraySize(macd_buff);
//--- verileri analiz et ve gösterge sinyallerini diziye kopyala
   ArrayResize(sign_buff,macd_size-1);
   ArrayResize(time_buff,macd_size-1);
   for(int i=1;i<macd_size;i++)
     {
      //--- alım sinyali
      if(macd_buff[i-1]<0 && macd_buff[i]>=0)
        {
         sign_buff[sign_size]=true;
         time_buff[sign_size]=date_buff[i];
         sign_size++;
        }
      //--- satış sinyali
      if(macd_buff[i-1]>0 && macd_buff[i]<=0)
        {
         sign_buff[sign_size]=false;
         time_buff[sign_size]=date_buff[i];
         sign_size++;
        }
     }
//--- 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_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s dosyası yazma için hazır",InpFileName);
      PrintFormat("Dosya yolu: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- önce, sinyal sayısını yaz
      FileWrite(file_handle,sign_size);
      //--- sinyallerin zamanlarını ve değerlerini dosyaya yaz
      for(int i=0;i<sign_size;i++)
         FileWrite(file_handle,time_buff[i],sign_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

Comment, Print, StringFormat