FileWriteString

Bu dosya, bir BIN veya TXT dosyasının içine, dosya işaretçisinin mevcut konumundan başlayarak string tipi bir değer yazar. CSV veya TXT dosyası yazarken; dizgi içinde '\r' (CR) sembolü olmadan yazılmış bir '\n' (LF) sembolü bulunuyorsa, '\n' karakterinden önce '\r' eklenir.

uint  FileWriteString(
   int           file_handle,    // Dosya tanıtıcısı
   const string  text_string,    // yazılacak dizgi
   int           length=-1       // sembollerin sayısı
   );

Parametreler

file_handle

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

text_string

[in]  Dizgi.

length=-1

[in] Yazılacak karakterlerin sayısı. Bu seçenek, bir BIN dosyasına dizgi yazılırken gereklidir. Boyut belirtilmediği takdirde, 0 taşıyıcısı olmadan tüm dizgi yazılır. Dizginin büyüklüğünden daha küçük bir boyut belirtilmişse, 0 taşıyıcısı olmadan dizginin bir bölümü yazılır. Dizgi büyüklüğünden daha büyük bir boyut belirtilmişse, dizginin kalan bölümü uygun sayıda sıfır ile doldurulur. CSV ve TXT tipi dosyalar için, bu parametre gözardı edilir ve dizginin bütünü yazılır.

Dönüş değeri

Başarılı sonuç durumunda, yazılan bayt sayısına dönüş yapılır ve dosya işaretçisi, eşit sayıda bayt ile kaydırılır.

Not

FILE_UNICODE bayrağı ile (veya FILE_ANSI bayrağı olmadan) bir dosya açarken, yazılacak bayt sayısının dizgi karakterlerinin iki katına çıkacağını not edin. FILE_ANSI bayrağı ile açılmış bir dosyaya yazım yapılırken; yazılan baytların sayısı, dizgi karakterlerinin sayısı ile örtüşür.

Örnek:

//+------------------------------------------------------------------+
//|                                         Demo_FileWriteString.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                InpMAPeriod=14;                   // MA periyodu
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="RSI.csv";   // dosya ismi
input string             InpDirectoryName="Data"// dizin ismi
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish; // veri kopyalama için son tarih
   double   rsi_buff[];  // gösterge değerlerinin dizisi
   datetime date_buff[]; // göstege tarihlerinin dizisi
   int      rsi_size=0;  // gösterge dizilerinin büyüklüğü
//--- durdurma zamanı şu anki zaman olsun
   date_finish=TimeCurrent();
//--- RSI göstergesinin tanıtıcı değerini al
   ResetLastError();
   int rsi_handle=iRSI(InpSymbolName,InpSymbolPeriod,InpMAPeriod,InpAppliedPrice);
   if(rsi_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, verileri hesaplayana kadar döngüde kalacak
   while(BarsCalculated(rsi_handle)==-1)
      Sleep(10); // gösterge değerlerinin hesaplanması için bir duraklama
//--- belli bir zaman aralığı için gösterge değerlerini kopyala
   ResetLastError();
   if(CopyBuffer(rsi_handle,0,InpDateStart,date_finish,rsi_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(rsi_handle);
//--- tampon büyüklüğünü al
   rsi_size=ArraySize(rsi_buff);
//--- 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|FILE_ANSI);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s dosyası yazma için hazır",InpFileName);
      PrintFormat("Dosya yolu: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- ek değişkenleri hazırla
      string str="";
      bool   is_formed=false;
      //--- aşırı-alım ve aşırı-satım alanlarının oluşum tarihlerini yaz
      for(int i=0;i<rsi_size;i++)
        {
         //--- gösterge değerlerini kontrol et
         if(rsi_buff[i]>=70 || rsi_buff[i]<=30)
           {
            //--- eğer değer, bu alandaki ilk değer ise
            if(!is_formed)
              {
               //--- tarihi ve değeri ekle
               str=(string)rsi_buff[i]+"\t"+(string)date_buff[i];
               is_formed=true;
              }
            else
               str+="\t"+(string)rsi_buff[i]+"\t"+(string)date_buff[i];
            //--- yeni döngü tekrarına geç
            continue;
           }
         //--- bayrağı kontrol et
         if(is_formed)
           {
            //--- dizgi şekillendi, dosyaya yaz
            FileWriteString(file_handle,str+"\r\n");
            is_formed=false;
           }
        }
      //--- 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

string Tipi, StringFormat