- 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
CopySeries
Belirtilen sembol, zaman dilimi ve veri miktarı için MqlRates yapısından belirtilen dizi kümesine senkronize zaman serilerini alır. Elemanlar şimdiki zamandan geçmişe doğru sayılır, yani 0'a eşit başlangıç konumu mevcut çubuk anlamına gelir.
Kopyalanacak veri miktarı bilinmiyorsa, alıcı diziler için dinamik dizi kullanılması önerilir. Çünkü eğer kopyalanan veri miktarı dizinin içerebileceğinden daha fazla olursa, talep edilen tüm verilerin diziye sığması amacıyla dizide yeniden dağıtım gerçekleşebilir.
Belirli bir miktarda veri kopyalanacaksa, gereksiz bellek yeniden tahsisini önlemek adına statik olarak tahsis edilmiş arabellek kullanılması önerilir.
Alıcı dizinin as_series=true veya as_series=false olmak üzere hangi özelliğe sahip olduğu önemli değildir: veriler, dizi için tahsis edilmiş fiziksel belleğin başına en eski zaman serisi elemanı gelecek şekilde kopyalanacaktır.
int CopySeries(
|
Parametreler
symbol_name
[in] Sembol.
timeframe
[in] Zaman dilimi.
start_pos
[in] Kopyalanacak ilk elemanın indeksi.
count
[in] Kopyalanacak eleman sayısı.
rates_mask
[in] ENUM_COPY_RATES numaralandırmasından bayrak kombinasyonu.
array1, array2,...
[out] MqlRates yapısından zaman serisini almak için uygun türde dizi. Fonksiyona iletilen dizilerin sırası, MqlRates yapısındaki alanların sırasıyla eşleşmelidir.
Geri dönüş değeri
Kopyalanan elemanların sayısı veya hata durumunda -1.
Not
Talep edilen veri aralığı sunucuda bulunan verileri aşıyorsa, fonksiyon -1 geri döndürür. Talep edilen veri aralığı TERMINAL_MAXBARS'ı (grafikteki maksimum çubuk sayısı) aşıyorsa, fonksiyon yine -1 geri döndürür.
Göstergeden veri talep edilirken, istenen zaman serileri henüz oluşturulmadıysa veya sunucudan indirilmesi gerekiyorsa, fonksiyon hemen -1 geri döndürür. Böyle bir durumda, aynı zamanda verilerin indirilmesi/oluşturulması da başlatılır.
Uzman Danışmandan veya komut dosyasından veri talep edilirken, terminalde yerel olarak ilgili veriler yoksa, sunucudan indirme işlemi başlatılır ve bu süreçte yerel geçmişten oluşturulabiliyorsa gerekli zaman serileri oluşturulur. Fonksiyon, zaman aşımı süresi dolduğunda hazır olan veri miktarını geri döndürür, ancak geçmişin indirilme işlemi halen devam eder, böylece bir sonraki benzer talepte daha fazla veri geri döndürülür.
CopySeries ve CopyRates arasındaki fark
CopySeries fonksiyonu, tek bir çağrıyla yalnızca gerekli zaman serilerinin farklı dizilere alınmasına olanak sağlar ve bu sırada zaman serilerinin tamamı senkronize edilir. Bu, belirli bir N indeksi için elde edilen dizilerdeki tüm değerlerin belirtilen sembol / zaman dilimindeki aynı çubuğa ait olacağı anlamına gelir. Böylece, programcının alınan tüm zaman serilerini çubuğun açılış zamanına göre senkronize etmesine gerek kalmaz.
Zaman serilerinin tamamını bir MqlRates dizisi olarak geri döndüren CopyRates'in aksine, CopySeries fonksiyonu yalnızca gerekli zaman serilerinin farklı diziler halinde alınmasını mümkün kılar. Bu, istenen zaman serilerini belirtmek üzere bayrak kombinasyonu ayarlanarak yapılır. Fonksiyona iletilen dizilerin sırası, MqlRates yapısındaki alanların sırasıyla eşleşmelidir:
struct MqlRates
|
Örneğin, mevcut sembol / zaman diliminde son 100 çubuk için time, close ve real_volume zaman serilerinin değerleri alınması gerekiyorsa, çağrı aşağıdaki gibi olmalıdır:
datetime time[];
|
Burada, time, close ve volume dizilerinin sırası önemlidir: MqlRates yapısındaki alanların sırasına karşılık gelmelidir. Ancak rates_mask içerisindeki değerlerin sırası önemli değildir. Maske şu şekilde olabilir:
COPY_RATES_VOLUME_REAL|COPY_RATES_TIME|COPY_RATES_CLOSE |
Örnek:
//--- girdi parametreleri
|
Ayrıca bakınız