- Dizilerde, Tamponlarda ve Zaman Serilerinde İndisleme Yönü
- Veri Erişiminin Düzenlenmesi
- SeriesInfoInteger
- Bars
- BarsCalculated
- IndicatorCreate
- IndicatorParameters
- IndicatorRelease
- CopyBuffer
- CopyRates
- CopySeries
- CopyTime
- CopyOpen
- CopyHigh
- CopyLow
- CopyClose
- CopyTickVolume
- CopyRealVolume
- CopySpread
- CopyTicks
- CopyTicksRange
- iBars
- iBarShift
- iClose
- iHigh
- iHighest
- iLow
- iLowest
- iOpen
- iTime
- iTickVolume
- iRealVolume
- iVolume
- iSpread
CopyBuffer
Belirtilen bir göstergenin belirtilen bir tamponundan gereken miktarda veri alır.
Kopyalanan verinin elemanlarının (buffer_num indisine sahip tamponu) sayılması şimdiden geçmişe doğru gerçekleşir, yani 0 başlangıç konumu mevcut çubuk anlamına gelir.
Bilinmeyen miktardaki bir veriyi kopyalarken, buffer[] alıcı tamponu için dinamik dizilerin kullanılması önerilir; çünkü CopyBuffer() fonksiyonu, alıcı diziye, kopyalanan verinin büyüklüğü kadar bellek tahsis etmeye çalışacaktır. Eğer bir gösterge tamponu (SetIndexBufer() fonksiyonu ile değerlerini saklamak için önceden tahsis edilen dizi), buffer[] alıcı dizisi olarak kullanılıyorsa, kısmi kopyalamaya izin verilir. Bu duruma bir örnek, terminal standart paketindeki Awesome_Oscillator.mql5 özel göstergesinde bulunabilir.
Bir gösterge tamponunun değerlerini kısmen başka bir diziye kopyalamak istiyorsanız (gösterge tamponu olmayan bir diziye), istenen verinin kopyalanacağı bir ara dizi kullanmalısınız. Ardından, istenen sayıdaki değeri, alıcı dizinin istenen yerlerine elementsel olarak kopyalayın.
Eğer kopyalayacağınız verinin tam miktarını biliyorsanız, aşırı bellek tahsisini önlemek amacıyla statik olarak tahsis edilmiş bir tampon kullanmanız daha iyi olacaktır.
Hedef dizisinin erişim özelliğinin ne olduğu önem taşımaz - as_series=true veya as_series=false. Veri, en eski elemanın tahsis edilen fiziksel belleğin başlangıcında konumlanacağı şekilde yerleştirilir. Bu fonksiyonun 3 çağrı şekli bulunmaktadır.
İlk pozisyon ve istenen eleman sayısı ile çağrı
int CopyBuffer(
|
Başlangıç tarihi ve istenen eleman sayısı ile çağrı
int CopyBuffer(
|
İstene aralığın başlangıç ve bitiş tarihi ile çağrı
int CopyBuffer(
|
Parametreler
indicator_handle
[in] Karşılık gelen fonksiyonla dönüşü yapılan gösterge tanıtıcı değeri.
buffer_num
[in] Gösterge tamponunun numarası.
start_pos
[in] Kopyalanacak ilk elemanın konumu.
count
[in] Kopyalanacak veri miktarı.
start_time
[in] İlk elemana denk gelen çubuk zamanı.
stop_time
[in] Son elemana denk gelen çubuk zamanı.
buffer[]
[out] double tipli dizi.
Dönüş değeri
Kopyalanan veri sayısına veya hata durumunda -1 değerine dönüş yapar.
Not
Bir göstergeden veri istenirken, istenen zaman-serisi henüz kurulmamışsa veya sunucudan yüklenmemişse, fonksiyon hemen -1 dönüşü yapacaktır ve yükleme/kurma işlemi başlatılacaktır.
Bir Uzman Danışmandan veya bir scriptten veri istenirken, istenen veri terminalde yerel olarak bulunmuyorsa sunucudan yükleme işlemi başlatılacaktır, eğer veri kurulu durumdaysa ama hazır değilse, o zaman serinin kurulumuna başlanacaktır. Varsayılan zaman-aşımı süresi geçildiğinde, fonksiyon hazır olan verinin miktarına dönüş yapacaktır.
Örnek:
//+------------------------------------------------------------------+
|
Yukarıdaki örnekte, bir gösterge tamponunun aynı sembol/periyot değerine sahip bir göstergenin tamponuyla nasıl doldurulacağı gösterilmektedir.
Tarihsel veri istemiyle ilgili detaylı bir örnek için Nesne Bağlama Yöntemleri bölümüne bakınız. Söz konusu örnekte iFractals göstergesinden son 1000 alınması ve son 10 yukarı/aşağı fraktalin çizelge üzerine çizilmesi gösterilmektedir. Benzer bir teknik, eksik veriye sahip olan ve genellikle aşağıda belirtilen stillerle çizilen tüm göstergelerde kullanılabilir:
Ayrıca Bakınız