Diziler
57 işlev. Her kaydın ne aldığı, ne verdiği ve çalışan örneği.
Verilen elemanları taşıyan yeni bir dizi.
Elemanları doğrudan sıralayarak dizi kurar; karışık tip serbesttir ama sayısal özet fonksiyonları (arraySum, arrayAvg) sadece sayıları hesaba katar.
a = array(10, 20, 30) plot(arraySum(a))
10+20+30 = 60 (dizinin toplamı her barda çizilir).
w = array(0.5, 0.3, 0.2) plot(arraySum(w))
Ağırlık vektörü: 0.5+0.3+0.2 = 1.0 (dizi float değerlerle kurulabilir).
Her elemanın mutlak değerini taşıyan YENİ dizi (orijinal değişmez).
Eleman bazlı çalışır; sayısal-olmayan elemanlar aynen kopyalanır. Orijinali değiştirmez.
a = arrayFrom(-3, 4, -5) b = arrayAbs(a) plot(arraySum(b))
|−3|+|4|+|−5| = 12.
a = arrayFrom(-2, -4, -6) b = arrayAbs(a) plot(arrayMax(b))
Mutlak değerler 2,4,6 → en büyüğü 6 (en büyük genlik).
Sayısal elemanların ortalaması; sayısal eleman yoksa na.
Sadece sayıları hesaba katar. Boş ya da tamamen sayısal-olmayan dizide na döner (0 değil).
a = arrayFrom(10, 20, 30) plot(arrayAvg(a))
Ortalama: 20.
var w = arrayNew(0) arrayPush(w, close) if arraySize(w) > 10 { arrayShift(w) } plot(arrayAvg(w))
Son 10 close'un ortalaması — diziyle elle kurulmuş bir SMA(10).
arrayBinarySearch(dizi, değer)
Değerin indeksi; bulunamazsa -1.
Diziyi ARTAN sıralı varsayar; sırasız dizide sonuç anlamsız olur. Doğrusal aramaya (arrayIndexOf) göre büyük dizilerde çok daha hızlıdır.
a = arrayFrom(10, 20, 30, 40) plot(arrayBinarySearch(a, 30))
30 değeri 2. konumda.
a = arrayFrom(10, 20, 30, 40) plot(arrayBinarySearch(a, 25))
25 sıralı dizide yok → -1 (ikili arama bulamadı). Dizi sıralı olmalı.
arrayBinarySearchLeftmost(dizi, değer)
Değere eşit ilk konum; değer yoksa eklenmesi gereken konum (sol-uç ekleme noktası).
Sıralı dizide değerin girebileceği en sol konumu verir. Değer birden çok kez varsa ilk kopyanın indeksini döner.
a = arrayFrom(1, 2, 2, 2, 3) plot(arrayBinarySearchLeftmost(a, 2))
İlk 2 değeri 1. konumda.
a = arrayFrom(1, 3, 5) plot(arrayBinarySearchLeftmost(a, 4))
4 dizide yok; eklense gireceği (en-sol) konum 2. Sıralı dizi gerekir.
arrayBinarySearchRightmost(dizi, değer)
Değere eşit son konum; değer yoksa ondan küçük son elemanın konumu (sağ-uç).
Sıralı dizide değerin son kopyasının ya da değerden küçük son elemanın konumunu verir.
a = arrayFrom(1, 2, 2, 2, 3) plot(arrayBinarySearchRightmost(a, 2))
Son 2 değeri 3. konumda.
a = arrayFrom(1, 2, 3, 4) plot(arrayBinarySearchRightmost(a, 3))
3 dizide bir kez geçer → en-sağ eşleşme de aynı konum: 2. Tekrarlı olsaydı en sağdakini verirdi.
Tüm elemanları siler, boyut 0 olur; dizinin kendisi (referansı) korunur.
a = arrayFrom(1, 2, 3) arrayClear(a) plot(arraySize(a))
Boşaltıldı → boyut 0.
var w = arrayNew(0) arrayPush(w, close) if arraySize(w) >= 10 { arrayClear(w) } plot(arraySize(w))
Boyut 10'a ulaşınca dizi boşaltılır → 1..10 arası testere deseni (periyodik kova).
Genişletilmiş dizi1 (aynı referans).
dizi2'nin elemanlarını dizi1'in sonuna ekler ve dizi1'i değiştirir. dizi2 dokunulmadan kalır.
a = arrayFrom(1, 2) b = arrayFrom(3, 4) arrayConcat(a, b) plot(arraySize(a))
dizi1 4 elemana genişledi.
a = arrayFrom(1, 2) b = arrayFrom(3, 4, 5) arrayConcat(a, b) plot(arrayAvg(a))
İki dizi birleşir (1,2,3,4,5) → ortalama 3 (birleştir, sonra indirge).
Yüzeysel kopya verir; kopyayı değiştirmek orijinali etkilemez. Yerinde değiştiren fonksiyonlardan (arraySort, arrayReverse) önce orijinali korumak için kullanılır.
a = arrayFrom(3, 1, 2) b = arrayCopy(a) arraySort(b, true) plot(arrayFirst(a))
Kopya sıralandı; orijinalin ilk elemanı hâlâ 3.
a = arrayFrom(1, 2, 3) b = arrayCopy(a) arrayPush(b, 4) plot(arraySize(a))
Kopyaya eleman eklenir ama orijinal etkilenmez → orijinal boyut hâlâ 3 (bağımsız kopya).
arrayCovariance(dizi1, dizi2, biased?)
İki dizinin kovaryansı; ortak sayısal eleman sayısı 2'den azsa na.
İki serinin birlikte hareket yönünü ve şiddetini ölçer. Diziler farklı uzunluktaysa kısa olanın uzunluğu kadar eşleştirilir. Varsayılan yanlı (n) bölendir.
a = arrayFrom(1, 2, 3) b = arrayFrom(2, 4, 6) plot(arrayCovariance(a, b))
Birlikte artan iki dizi → pozitif kovaryans (≈1.33, yanlı).
a = arrayFrom(1, 2, 3) b = arrayFrom(6, 4, 2) plot(arrayCovariance(a, b))
Biri artarken diğeri azalır → negatif kovaryans (≈ -1.33).
Tüm elemanlar doğru/sıfırdan-farklı ise true; boş dizide false.
Her elemanı doğruluk (truthy) olarak değerlendirir: 0/na/false yanlış sayılır. Boş dizide false döner.
a = arrayFrom(1, 1, 1) plot(arrayEvery(a) ? 1 : 0)
Tüm elemanlar sıfırdan farklı → true.
a = arrayFrom(1, 0, 1) plot(arrayEvery(a) ? 1 : 0)
Bir eleman 0 → arrayEvery false (0). Tüm elemanlar sıfırdan farklı değil.
arrayFill(dizi, değer, başla?, bitir?)
Değer döndürmez (na); diziyi yerinde doldurur.
Verilen aralıktaki tüm elemanları aynı değere yazar; boyutu değiştirmez. Aralık verilmezse tüm dizi dolar.
a = arrayNew(5, 0) arrayFill(a, 9, 1, 3) plot(arraySum(a))
1 ve 2. elemanlar 9 yapıldı → toplam 18.
a = arrayNew(4, 1) arrayFill(a, 0) plot(arraySum(a))
Aralık verilmeden tüm dizi 0 ile doldurulur → toplam 0 (topluca sıfırlama).
arrayGet(dizi, 0) ile aynı ama daha okunaklıdır; diziyi değiştirmez.
a = arrayFrom(11, 22, 33) plot(arrayFirst(a))
İlk eleman: 11.
var w = arrayNew(0) arrayPush(w, close) if arraySize(w) > 5 { arrayShift(w) } plot(arrayFirst(w))
5 barlık kayan pencerenin ilk (en eski) elemanı — 5 bar önceki close.
array ile aynı işi görür; alışkanlığa göre ikisi de kullanılabilir.
a = arrayFrom(3, 1, 2) plot(arrayMax(a))
Dizideki en büyük değer: 3.
a = arrayFrom(5, 1, 9, 3, 7) plot(arrayMedian(a))
Giriş sırasız olabilir: sıralı hâli 1,3,5,7,9 → tam ortadaki (medyan) 5.
i. eleman; indeks dizi dışındaysa na döner (hata vermez).
Negatif indeks sondan erişim sağlar. Sınır dışı indekste çökmez, na verir — sonucu na() ile kontrol edebilirsin.
a = arrayFrom(10, 20, 30) plot(arrayGet(a, -1))
Son eleman: 30.
a = arrayFrom(close, close[1], close[2]) plot(arrayGet(a, 0) > arrayGet(a, 2) ? 1 : 0)
Pozitif indeksle erişim: geçerli close (0. eleman) 2 bar önceki close'tan (2. eleman) büyükse 1.
Değer dizide varsa true, yoksa false.
Tip-kesin eşitlik kullanır: sayı sayıyla, metin metinle, mantıksal mantıksalla eşleşir.
a = arrayFrom(1, 2, 3) plot(arrayIncludes(a, 2) ? 1 : 0)
2 dizide var → true (1 olarak çizilir).
a = arrayFrom(1, 5, 9) plot(arrayIncludes(a, 4) ? 1 : 0)
4 dizide yok → false (0 çizilir) — üyelik testinin olumsuz hâli.
Değerin ilk bulunduğu indeks; yoksa -1.
Baştan tarar, ilk eşleşmenin konumunu verir. Tip-kesin eşitlik uygular. Sondan aramak için arrayLastIndexOf.
a = arrayFrom(5, 6, 7) plot(arrayIndexOf(a, 7))
7 değeri 2. konumda.
a = arrayFrom(5, 6, 7) plot(arrayIndexOf(a, 99))
99 dizide yok → -1 (bulunamadı işareti).
Değer döndürmez (na); diziyi yerinde büyütür.
Belirtilen konuma eleman ekler, sonraki elemanlar sağa kayar. Konum boyutu aşarsa sona, çok küçükse başa eklenir.
a = arrayFrom(1, 3) arrayInsert(a, 1, 2) plot(arrayGet(a, 1))
1. konuma 2 eklendi → dizi 1,2,3.
a = arrayFrom(1, 2, 3) arrayInsert(a, 0, 0) plot(arrayFirst(a))
0. konuma 0 eklenir (başa) → yeni ilk eleman 0.
Elemanların ayraçla birleştirilmiş tek metni.
Her elemanı metne çevirip ayraçla birleştirir. Ayraç verilmezse virgül kullanılır.
a = arrayFrom(1, 2, 3) s = arrayJoin(a, "-") plot(s == "1-2-3" ? 1 : 0)
Elemanlar "-" ile birleşti → "1-2-3".
a = arrayFrom(1, 2, 3) s = arrayJoin(a) plot(s == "1,2,3" ? 1 : 0)
Ayraç verilmezse varsayılan virgüldür → "1,2,3".
arrayGet(dizi, -1) ile aynı ama daha okunaklıdır; diziyi değiştirmez.
a = arrayFrom(11, 22, 33) plot(arrayLast(a))
Son eleman: 33.
var w = arrayNew(0) arrayPush(w, high) plot(arrayLast(w))
Diziye her bar high eklenir; son eleman en son eklenen (güncel) high'dır.
Değerin son bulunduğu indeks; yoksa -1.
Sondan başa tarar, son eşleşmenin konumunu verir. Tip-kesin eşitlik uygular.
a = arrayFrom(5, 6, 5) plot(arrayLastIndexOf(a, 5))
Son 5 değeri 2. konumda.
a = arrayFrom(5, 6, 5) plot(arrayLastIndexOf(a, 9))
9 dizide hiç yok → -1 (son-konum araması da bulamaz).
Sadece sayıları karşılaştırır; metin/na atlanır.
a = arrayFrom(7, 3, 9) plot(arrayMax(a))
En büyük: 9.
var w = arrayNew(0) arrayPush(w, high) if arraySize(w) > 20 { arrayShift(w) } plot(arrayMax(w))
Son 20 barın en yüksek high'ı — kayan direnç (Donchian üst bandı).
Ortanca (medyan) değer; boşsa na. Çift sayıda elemanda ortadaki ikisinin ortalaması.
Değerleri sıralayıp ortadakini alır; aşırı uç değerlerden ortalamaya göre daha az etkilenir.
a = arrayFrom(1, 2, 3, 4) plot(arrayMedian(a))
Ortadaki ikinin ortalaması: (2+3)/2 = 2.5.
a = arrayFrom(5, 1, 9, 3, 7) plot(arrayMedian(a))
Tek sayıda eleman: sıralı 1,3,5,7,9 → tam ortadaki 5 (çift sayıdaki durumdan farklı).
Sadece sayıları karşılaştırır; metin/na atlanır.
a = arrayFrom(7, 3, 9) plot(arrayMin(a))
En küçük: 3.
var w = arrayNew(0) arrayPush(w, low) if arraySize(w) > 20 { arrayShift(w) } plot(arrayMin(w))
Son 20 barın en düşük low'u — kayan destek (Donchian alt bandı).
En sık geçen sayısal değer; eşitlikte en küçük olanı; boşsa na.
Frekans eşit olan birden çok değer varsa en küçüğünü verir. Sadece sayısal elemanları sayar.
a = arrayFrom(2, 2, 1, 1) plot(arrayMode(a))
1 ve 2 eşit sıklıkta → en küçüğü: 1.
a = arrayFrom(1, 3, 3, 3, 2) plot(arrayMode(a))
3 değeri üç kez geçer → en sık (mod) 3 (net kazanan).
boyut adet elemanın hepsi başlangıç değerine eşit olan yeni dizi.
Önce sabit boyutlu bir dizi ayırıp sonra arraySet/arrayFill ile doldurmak için kullanılır. Başlangıç verilmezse elemanlar 0'dır.
a = arrayNew(4, 5) plot(arraySum(a))
4 elemanın hepsi 5 → toplam 20.
a = arrayNew(3, 2) arrayPush(a, 4) plot(arrayAvg(a))
3 eleman 2 ile kurulur, üstüne 4 eklenir → ortalama (2+2+2+4)/4 = 2.5.
arrayNewBool(boyut, başlangıç?)
boyut adet elemanın hepsi başlangıç değerine eşit yeni dizi.
arrayNew ile aynı davranır; mantıksal (true/false) dizi kurma niyetini belirtir. Başlangıç verilmezse 0'dır (yanlış gibi davranır).
a = arrayNewBool(3, true) plot(arrayEvery(a) ? 1 : 0)
Tüm elemanlar true → arrayEvery true.
a = arrayNewBool(3, false) arraySet(a, 1, true) plot(arraySome(a) ? 1 : 0)
3 eleman false ile kurulur, 1. eleman true yapılır → arraySome true (1).
arrayNewBox(boyut, başlangıç?)
boyut adet elemanlı yeni kutu (box) dizisi.
arrayNew ile aynı davranır; kutu (box) tutmak üzere niyeti belirten tip-özel yapıcıdır. Başlangıç değeri verilmezse elemanlar 0'dır (genelde na/başlangıç verilerek doldurulur).
a = arrayNewBox(2) plot(arraySize(a))
2 elemanlık dizi ayrıldı.
var kutular = arrayNewBox(0) plot(arraySize(kutular))
var ile boş (0 elemanlı) kutu-tutamacı deposu — barlar boyunca taşınır, boyut 0'dan başlar.
arrayNewColor(boyut, başlangıç?)
boyut adet elemanlı yeni renk dizisi.
arrayNew ile aynı davranır; renk tutmak üzere niyeti belirten tip-özel yapıcıdır. Başlangıç değeri verilmezse elemanlar 0'dır (genelde na/başlangıç verilerek doldurulur).
a = arrayNewColor(2) plot(arraySize(a))
2 elemanlık dizi ayrıldı.
var palet = arrayNewColor(2, "#26a69a") arraySet(palet, 1, "#ef5350") plot(arraySize(palet))
İki renk ayrılır, 1. eleman satış rengiyle değiştirilir → al/sat paleti, boyut 2.
arrayNewFloat(boyut, başlangıç?)
boyut adet sayısal elemanın hepsi başlangıç değerine eşit yeni dizi.
arrayNew ile aynı davranır; sayısal (ondalıklı) dizi kurmayı belirtir. Başlangıç verilmezse 0.
a = arrayNewFloat(3, 1.5) plot(arraySum(a))
3 elemanın hepsi 1.5 → toplam 4.5.
a = arrayNewFloat(3, close) plot(arrayGet(a, 0))
3 eleman geçerli close ile kurulur → 0. eleman o barın close'u (başlangıç bir seri olabilir).
arrayNewInt(boyut, başlangıç?)
boyut adet elemanın hepsi başlangıç değerine eşit yeni dizi.
arrayNew ile aynı davranır; tam-sayı dizisi kurma niyetini belirtir. Sayısal saklama ondalıklıdır; değerleri tam-sayı olarak kullanmak sana kalır.
a = arrayNewInt(4, 2) plot(arraySum(a))
4 elemanın hepsi 2 → toplam 8.
a = arrayNewInt(3, 10) arraySet(a, 0, 5) plot(arrayMin(a))
3 eleman 10 ile kurulur, 0. eleman 5 yapılır → en küçük 5.
arrayNewLabel(boyut, başlangıç?)
boyut adet elemanlı yeni etiket (label) dizisi.
arrayNew ile aynı davranır; etiket (label) tutmak üzere niyeti belirten tip-özel yapıcıdır. Başlangıç değeri verilmezse elemanlar 0'dır (genelde na/başlangıç verilerek doldurulur).
a = arrayNewLabel(2) plot(arraySize(a))
2 elemanlık dizi ayrıldı.
a = arrayNewLabel(3) arrayPop(a) plot(arraySize(a))
3 etiket-yuvası ayrılır, biri çıkarılır (pop) → boyut 2.
arrayNewLine(boyut, başlangıç?)
boyut adet elemanlı yeni çizgi (line) dizisi.
arrayNew ile aynı davranır; çizgi (line) tutmak üzere niyeti belirten tip-özel yapıcıdır. Başlangıç değeri verilmezse elemanlar 0'dır (genelde na/başlangıç verilerek doldurulur).
a = arrayNewLine(2) plot(arraySize(a))
2 elemanlık dizi ayrıldı.
a = arrayNewLine(4) arrayRemove(a, 0) plot(arraySize(a))
4 çizgi-yuvası ayrılır, 0. eleman silinir → boyut 3.
arrayNewLinefill(boyut, başlangıç?)
boyut adet elemanlı yeni çizgi-dolgu (linefill) dizisi.
arrayNew ile aynı davranır; çizgi-dolgu (linefill) tutmak üzere niyeti belirten tip-özel yapıcıdır. Başlangıç değeri verilmezse elemanlar 0'dır (genelde na/başlangıç verilerek doldurulur).
a = arrayNewLinefill(2) plot(arraySize(a))
2 elemanlık dizi ayrıldı.
a = arrayNewLinefill(2) arrayClear(a) plot(arraySize(a))
2 linefill-yuvası ayrılır, sonra dizi boşaltılır → boyut 0.
arrayNewString(boyut, başlangıç?)
boyut adet elemanın hepsi başlangıç metnine eşit yeni dizi.
Metin dizisi kurar. Diğer arrayNew ailelerinden farkı: başlangıç verilmezse eleman 0 değil BOŞ METİN ("") olur.
a = arrayNewString(2) plot(arrayGet(a, 0) == "" ? 1 : 0)
Başlangıç verilmedi → elemanlar boş metin.
a = arrayNewString(2, "AL") arraySet(a, 1, "SAT") plot(arrayIndexOf(a, "SAT"))
İki eleman "AL" ile kurulur, 1. eleman "SAT" yapılır → "SAT" 1. konumda.
arrayNewTable(boyut, başlangıç?)
boyut adet elemanlı yeni tablo (table) dizisi.
arrayNew ile aynı davranır; tablo (table) tutmak üzere niyeti belirten tip-özel yapıcıdır. Başlangıç değeri verilmezse elemanlar 0'dır (genelde na/başlangıç verilerek doldurulur).
a = arrayNewTable(2) plot(arraySize(a))
2 elemanlık dizi ayrıldı.
a = arrayNewTable(1) b = arrayNewTable(2) arrayConcat(a, b) plot(arraySize(a))
1'lik ve 2'lik iki tablo-dizisi birleştirilir → boyut 3.
arrayPercentRank(dizi, indeks)
i. elemanın 0–100 arası yüzdelik rütbesi; indeks geçersiz/sayısal-değilse na; 2'den az sayısal elemanda 0.
Verilen elemanın, diziye göre kaçıncı yüzdelikte olduğunu söyler: kendisi dahil kaç eleman ondan küçük ya da eşit. 0 = en küçük, 100 = en büyük.
a = arrayFrom(10, 20, 30, 40, 50) plot(arrayPercentRank(a, 2))
30 değeri diziye göre %50 yüzdelikte.
a = arrayFrom(10, 20, 30, 40, 50) plot(arrayPercentRank(a, 4))
En büyük eleman (50, indeks 4) diziye göre %100 yüzdelikte.
arrayPercentileLinearInterpolation(dizi, yüzde)
Doğrusal enterpolasyonlu yüzdelik değeri; boşsa na.
Sıralanmış değerler arasında konumu doğrusal enterpolasyonla bulur; sonuç dizideki gerçek bir eleman olmayabilir. Daha yumuşak/kesintisiz yüzdelik verir.
a = arrayFrom(1, 2, 3, 4) plot(arrayPercentileLinearInterpolation(a, 50))
%50 yüzdelik (medyan) = 2.5.
a = arrayFrom(1, 2, 3, 4) plot(arrayPercentileLinearInterpolation(a, 25))
%25 yüzdelik, doğrusal ara-değerle = 1.75 (medyandan farklı bir dilim).
arrayPercentileNearestRank(dizi, yüzde)
En-yakın-rütbe yöntemiyle yüzdelik değeri; boşsa na.
Sıralı dizide yüzdeye karşılık gelen rütbeyi yukarı yuvarlar ve o konumdaki GERÇEK elemanı verir; ara değer üretmez.
a = arrayFrom(1, 2, 3, 4) plot(arrayPercentileNearestRank(a, 50))
%50 en-yakın-rütbe → dizideki gerçek değer 2.
a = arrayFrom(10, 20, 30, 40, 50) plot(arrayPercentileNearestRank(a, 90))
%90 en-yakın-rütbe → üst uçtaki gerçek değer 50.
Diziyi bir eleman kısaltır ve çıkardığı değeri verir. Boş dizide çökmez, na döner.
a = arrayFrom(1, 2, 3) x = arrayPop(a) plot(x)
Son eleman çıkarılıp döner: 3.
a = arrayFrom(1, 2, 3, 4) arrayPop(a) arrayPop(a) plot(arrayLast(a))
Son eleman iki kez çıkarılır (4, sonra 3) → kalan son eleman 2 (LIFO).
Ekleme sonrası yeni eleman sayısı.
Diziyi bir eleman büyütür. Sürekli birikim (log, sonuç listesi) için temel araçtır.
a = arrayNew(0) arrayPush(a, close) plot(arraySize(a))
Her bar close eklenir; boyut bar sayısıyla birlikte artar.
var sinyaller = arrayNew(0) if crossover(close, sma(close, 20)) { arrayPush(sinyaller, close) } plot(arraySize(sinyaller))
Yalnız 20-SMA yukarı kesişiminde close eklenir; boyut o ana dek oluşan sinyal sayısıdır.
En büyük ile en küçük sayısal eleman farkı (max - min); boşsa na.
Yayılımın en basit ölçüsü; tek bir uç değere karşı çok hassastır.
a = arrayFrom(3, 7, 1) plot(arrayRange(a))
7 - 1 = 6.
a = arrayFrom(-5, 0, 5, 10) plot(arrayRange(a))
En büyük - en küçük = 10 - (-5) = 15 (negatif değerlerle de çalışır).
Çıkarılan eleman; indeks dizi dışındaysa na.
Belirtilen konumdaki elemanı çıkarır, sonraki elemanlar sola kayar ve çıkarılan değeri verir.
a = arrayFrom(5, 6, 7) x = arrayRemove(a, 1) plot(x)
1. eleman çıkarılıp döner: 6.
a = arrayFrom(5, 6, 7) arrayRemove(a, 0) plot(arrayFirst(a))
0. eleman (5) silinir, kalanlar öne kayar → yeni ilk eleman 6.
Değer döndürmez (na); dizinin sırasını yerinde ters çevirir.
Eleman sırasını başa-son ters çevirir; diziyi değiştirir.
a = arrayFrom(1, 2, 3) arrayReverse(a) plot(arrayFirst(a))
Sıra ters çevrildi → ilk eleman artık 3.
a = arrayFrom(1, 2, 3, 4) arrayReverse(a) plot(arrayLast(a))
Sıra ters çevrilir → son eleman artık baştaki 1.
Değer döndürmez (na); diziyi yerinde değiştirir.
Var olan bir konumu değiştirir; boyutu artırmaz. İndeks dizi dışındaysa sessizce hiçbir şey yapmaz.
a = arrayNew(3, 0) arraySet(a, 1, 9) plot(arraySum(a))
1. eleman 9 yapıldı, diğerleri 0 → toplam 9.
a = arrayNew(3, 0) arraySet(a, 0, high) arraySet(a, 2, low) plot(arrayGet(a, 0) - arrayGet(a, 2))
0. elemana high, 2.'ye low yazılır; farkları o barın aralığıdır (high - low).
Baştan eleman alır ve kalanları öne kaydırır. Kuyruk (FIFO) mantığında kullanılır.
a = arrayFrom(1, 2, 3) x = arrayShift(a) plot(x)
İlk eleman çıkarılıp döner: 1.
a = arrayFrom(10, 20, 30) arrayShift(a) plot(arrayFirst(a))
Baştan bir eleman atılır (10) → yeni ilk eleman 20.
Boş dizide 0 döner. Döngü sınırı ve boşluk kontrolü için kullanılır.
a = arrayFrom(5, 6, 7) plot(arraySize(a))
3 eleman.
var w = arrayNew(0) arrayPush(w, close) if arraySize(w) > 20 { arrayShift(w) } plot(arraySize(w) == 20 ? 1 : 0)
20 barlık kayan pencere dolunca 1 (hazır), ilk 20 barda 0 — ısınma kapısı.
arraySlice(dizi, başla, bitir?)
başla..bitir aralığının yeni bir kopya dizisi.
Kaynağı DEĞİŞTİRMEZ; bağımsız bir alt-dizi kopyası verir. bitir hariç tutulur.
a = arrayFrom(0, 1, 2, 3, 4) b = arraySlice(a, 1, 3) plot(arraySize(b))
1 ve 2. elemanlar → 2 elemanlı kopya.
a = arrayFrom(1, 2, 3, 4, 5) b = arraySlice(a, 2) plot(arraySum(b))
2. elemandan sona (bitiş verilmedi) → 3,4,5; toplam 12.
En az bir eleman doğru/sıfırdan-farklı ise true; hiçbiri değilse (ya da boşsa) false.
Her elemanı doğruluk olarak değerlendirir; ilk doğru elemanda true olur. Boş dizide false.
a = arrayFrom(0, 0, 1) plot(arraySome(a) ? 1 : 0)
Bir eleman sıfırdan farklı → true.
a = arrayFrom(0, 0, 0) plot(arraySome(a) ? 1 : 0)
Tüm elemanlar 0 → arraySome false (0). Sıfırdan farklı hiç eleman yok.
Değer döndürmez (na); diziyi yerinde sıralar.
Sadece sayısal elemanları sıralar; sayısal-olmayanlar sona, göründükleri sırayla eklenir. Diziyi değiştirir — kopya istiyorsan önce arrayCopy.
a = arrayFrom(30, 10, 20) arraySort(a, true) plot(arrayFirst(a))
Artan sıralandı → ilk eleman en küçük: 10.
a = arrayFrom(30, 10, 20, 40) arraySort(a, false) plot(arrayFirst(a))
Azalan sıralama (ikinci argüman false) → ilk eleman en büyük: 40.
arraySortIndices(dizi, artan?)
Diziyi sıralayacak indekslerin dizisi; dizinin kendisi değişmez.
Diziyi bozmadan, sıralı hale getirecek eleman konumlarını verir. Sadece sayısal elemanlar sıralamaya girer. En-iyi/en-kötü N seçmek için birebir uygundur.
a = arrayFrom(30, 10, 20) b = arraySortIndices(a, true) plot(arrayGet(b, 0))
En küçük değer (10) 1. konumda → ilk indeks 1.
a = arrayFrom(30, 10, 20) b = arraySortIndices(a, false) plot(arrayGet(b, 0))
Azalan sırada en büyük değer (30) 0. konumdadır → ilk indeks 0. Dizinin kendisi değişmez.
Her elemanı z-skoruna (x−ortalama)/std çeviren YENİ dizi; sapma 0 ise ya da 2'den az eleman varsa hepsi 0.
Değerleri ortalaması 0, standart sapması 1 olacak şekilde ölçekler (örneklem std ile). Orijinali değiştirmez.
a = arrayFrom(1, 2, 3) b = arrayStandardize(a) plot(arrayGet(b, 2))
En büyük eleman ortalamadan +1 std uzakta → 1.
a = arrayFrom(10, 20, 30, 40, 50) b = arrayStandardize(a) plot(arrayGet(b, 0))
İlk eleman (10, en küçük) ortalamanın ≈1.26 standart sapma altında → z-skoru ≈ -1.26.
Örneklem standart sapması (varyansın karekökü); 2'den az sayısal elemanda na.
Değerlerle aynı birimde yayılım verir; arrayVariance'ın karekökü.
a = arrayFrom(2, 4, 4, 4, 5, 5, 7, 9) plot(arrayStdev(a))
Örneklem standart sapması ≈ 2.14.
var w = arrayNew(0) arrayPush(w, close) if arraySize(w) > 20 { arrayShift(w) } plot(arrayStdev(w))
Son 20 close'un standart sapması — kayan oynaklık ölçüsü.
Sadece sayıları toplar; metin/na elemanları atlar. Boş dizide 0 verir.
a = arrayFrom(10, 20, 30) plot(arraySum(a))
Toplam: 60.
a = arrayFrom(close > open ? 1 : 0, close[1] > open[1] ? 1 : 0, close[2] > open[2] ? 1 : 0) plot(arraySum(a))
Son 3 barın kaçında close>open olduğunu sayar (0 ile 3 arası).
Ekleme sonrası yeni eleman sayısı.
Diziyi baştan büyütür; mevcut elemanlar bir konum sağa kayar.
a = arrayFrom(2, 3) arrayUnshift(a, 1) plot(arrayFirst(a))
Yeni ilk eleman: 1.
a = arrayFrom(3) arrayUnshift(a, 2) arrayUnshift(a, 1) plot(arrayGet(a, 0))
Başa sırayla 2 ve 1 eklenir → dizi 1,2,3; ilk eleman 1.
Örneklem varyansı (n-1 ile bölünmüş); 2'den az sayısal elemanda na.
Dağılımın yayılımını ölçer; n-1 bölen (örneklem) kullanır. Karekökü arrayStdev'dir.
a = arrayFrom(2, 4, 6) plot(arrayVariance(a))
Örneklem varyansı: 4.
a = arrayFrom(10, 10, 10, 10) plot(arrayVariance(a))
Tüm elemanlar eşit → dağılım yok → varyans 0.
Parçaları taşıyan metin dizisi.
Metni ayraçtan bölüp dizi verir. Ayraç verilmezse virgül kullanılır; boş ayraç metni harflere ayırır.
a = split("AL,SAT,BEKLE", ",") plot(arraySize(a))
3 parçaya bölündü.
p = split("AL,SAT,BEKLE", ",") plot(arrayIndexOf(p, "SAT"))
Metin virgülden bölünür; parçalar arasında "SAT" 1. konumda (ayrıştır, sonra ara).