- 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
Zaman Serilerine ve Gösterge Verilerine Erişim
Bu fonksiyonlar, zaman-serileri ve göstergelerle çalışmak için tasarlanmıştır. Bu fonksiyonlar, zaman-serileri ve göstergelerle çalışmak için tasarlanmıştır. Zaman-serilerinin değerlerini ve gösterge verilerini kopyalamak için sadece dinamik dizilerin kullanılması önerilir, çünkü kopyalamayı yapan fonksiyonlar, değerlerin girileceği diziler için bellek tahsis etmek amacıyla tasarlanmışlardır.
Bu kuralın önemli bir istisnası bulunmaktadır: zaman-serilerinin ve gösterge verilerinin kopyalanmasına sıklıkla ihtiyaç duyuluyorsa (örneğin Uzman Danışman içindeki her OnTick() çağrısında veya gösterge içindeki her bir OnCalculate() çağrısı sırasında), bu durumda statik olarak dağıtılmış diziler kullanılmalıdır. Çünkü dinamik diziler için bellek tahsisi işlemleri fazladan zaman gerektirir, bu da sınama ve optimizasyon sırasında etkili olacaktır.
Zaman-serileri ve gösterge değerlerine erişmek amacıyla fonksiyonlar kullanıldığında, indisleme yönü de hesaba katılmalıdır. Bu konu, Dizilerde ve zaman-serilerinde indisleme yönü bölümünde açıklanmıştır.
Zaman-serileri ve gösterge verilerine yapılan erişim, verinin hazır olup olmamasına bakılmaksızın uygulanır (buna asenkron erişim) denir. Bu, özel göstergelerin hesaplanması için oldukça önemli bir özeliktir; eğer dizi içinde veri yoksa Copy...() tipindeki fonksiyonlar anında hata dönüşü yaparlar. Ama, scriptlerden ve Uzman Danışmanlardan erişim gerçekleştirirken, küçük bir duraklama içerisine verileri almak için birkaç deneme gerçekleştirilir. Bu duraklama, gereken zaman-serisi verilerinin alınması için yeterli sürenin sağlanması amacını taşımaktadır
Veri Erişiminin Düzenlenmesi bölümü, MetaTrader 5 müşteri terminali içerisinde fiyat verilerinin istenmesine, alınmasına ve saklanmasına dair detayları içermektedir.
Bir dizideki tarihsel verilere, verilerin sonundan başlayarak erişim gerçekleştirilir. Fiziksel olarak yeni veri, dizinin sonuna yazılır ve dizinin son elemanının indisi her zaman sıfıra eşittir. Zaman-serilerinde 0 indisi mevcut çubuğun verisini, yani mevcut zaman-aralığında tamamlanmamış olan çubuğa karşılık gelir.
Zaman-aralığı tek bir çubuğun şekillendiği zaman periyodudur. 21 adet ön-tanımlı standart zaman-aralığı bulunmaktadır.
Fonksiyon |
Eylem |
---|---|
Tarihsel verinin durumu ile ilgili veriye dönüş yapar |
|
Belirtilen sembol ve periyot ile geçmişteki çubukların sayısına dönüş yapar |
|
Bir gösterge tamponundaki hesaplanan verilerin sayısına dönüş yapar, hata durumunda ise -1 durumuna (veri henüz hesaplanmadı) dönüş yapar |
|
MqlParam tipi parametrelerden oluşmuş bir dizi ile oluşturulan belirli bir teknik göstergenin tanıtıcı değerine dönüş yapar |
|
Belirtilen tanıtıcı değere bağlı olarak, gösterge giriş parametrelerinin sayısına, değerlerine ve tiplerine dönüş yapar |
|
Gösterge tanıtıcı değerini kaldırır ve başka biri tarafından kullanılmıyorsa hesaplama bloğunu serbest bırakır |
|
Belirtilen bir göstergenin belirtilen bir tamponunu bir dizi içine kopyalar |
|
Belirtilen sembol ve periyot için Rates yapısının tarihsel verisini bir diziye kopyalar |
|
Gets the synchronized timeseries from the Rates structure for the specified symbol-period and the specified amount |
|
Belirtilen sembol ve periyot için çubuk açılış zamanına dair geçmiş verisini bir diziye kopyalar |
|
Belirtilen sembol ve periyot için çubuk açılış fiyatına dair geçmiş verisini bir diziye kopyalar |
|
Belirtilen sembol ve periyot için maksimal çubuk fiyatına dair geçmiş verisini bir diziye kopyalar |
|
Belirtilen sembol ve periyot için minimal çubuk fiyatına dair geçmiş verisini bir diziye kopyalar |
|
Belirtilen sembol ve periyot için çubuk kapanış fiyatına dair geçmiş verisini bir diziye kopyalar |
|
Belirtilen sembol ve periyot için tik hacmine dair geçmiş verisini bir diziye kopyalar |
|
Belirtilen sembol ve periyot için alım-satım hacmine dair geçmiş verisini bir diziye kopyalar |
|
Belirtilen sembol ve periyot için makas değerine dair geçmiş verisini bir diziye kopyalar |
|
MqlTick biçimindeki tik verilerini ticks_array dizisine aktarır |
|
belirtilen aralıktaki tik fiyatlarını MqlTick biçiminde ticks_array dizisine depolar |
|
Tarihte mevcut karşılık gelen sembol ve dönemin çubuk sayısını döndürür |
|
Zamana göre bar arama. İşlev, belirtilen zamana karşılık gelen çubuğun dizinini döndürür |
|
İlgili grafikteki çubuğun Kapanış fiyatını ('shift' parametresiyle gösterilir) döndürür |
|
İlgili grafikteki çubuğun Yüksek fiyatını ('shift' parametresiyle gösterilir) döndürür |
|
İlgili grafikte bulunan en yüksek değerin indeksini döndürür (geçerli çubuğa göre) |
|
İlgili grafikteki çubuğun Düşük fiyatını ('shift' parametresiyle gösterilir) döndürür |
|
İlgili grafikte bulunan en küçük değerin indeksini döndürür (geçerli çubuğa göre) |
|
İlgili grafikteki çubuğun Açılış fiyatını ('shift' parametresiyle gösterilir) döndürür |
|
İlgili grafikteki çubuğun açılış zamanını ('shift' parametresiyle gösterilir) döndürür |
|
İlgili grafikteki çubuğun tik hacmini ('shift' parametresi ile gösterilir) döndürür |
|
İlgili grafikteki çubuğun gerçek hacmini ('shift' parametresiyle gösterilir) döndürür |
|
İlgili grafikteki çubuğun tik hacmini ('shift' parametresi ile gösterilir) döndürür |
|
İlgili grafikteki çubuğun spread değerini ('shift' parametresiyle gösterilir) döndürür |
ArraySetAsSeries() fonksiyonunun kullanımıyla dizilerdeki veri erişiminin zaman-serilerindeki gibi ayarlanabilmesine rağmen, dizi elemanlarının aynı ve tek şekilde depolandıkları unutulmamalıdır - sadece indisleme yönü değişir. Bu özelliği gösterebilmek için şu örneği çalıştıralım:
datetime TimeAsSeries[];
|
Sonuç olarak şöyle bir çıktı alırız:
TimeCurrent = 2009.06.11 14:16:23
|
Çıktıdan da görebileceğimiz gibi, TimeAsSeries dizisinin indisi yükseldikçe, indisin zaman değeri azalıyor, Yani, şimdiki zamandan geçmişe doğru hareket ediyoruz. Normal ArrayNotSeries dizisi içinse sonuçlar farklı - indis büyürken, geçmişten günümüze hareket ediyoruz.
Ayrıca Bakınız
ArrayIsDynamic, ArrayGetAsSeries, ArraySetAsSeries, ArrayIsSeries