FileWrite

Bu fonksiyon CSV dosyasına veri yazmak amacıyla tasarlanmıştır, ayırıcı - değeri 0 olmadığı sürece - otomatik olarak eklenecektir. Dosya yazımı tamamlandıktan sonra "\r\n" satır sonu karakteri eklenecektir.

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 63 adet parametre yazılabilir.

Dönüş değeri

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

Not

Sayılar, çıktılama sırasında bir metne dönüştürülür (bakınız, Print() fonksiyonu). double tipi veriler, noktadan sonra 16 hanelik kesinliğe kadar, hangi notasyonun daha düzenli olduğuna bağlı olarak bilimsel veya geleneksel biçimlerde çıktılanabilir. float tipi veri, noktadan sonra 5 hane ile çıktılanır. Reel sayıları farklı çözünürlükle çıktılamak için, DoubleToString() fonksiyonunu kullanın.

bool tipli veriler "true" veya "false" dizgileriyle çıktılanır. datetime tipi veriler YYYY.MM.DD HH:MM:SS şeklinde görüntülenir.

Ö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