Liste(Deger)

Liste Fonksiyonu

Fonksiyonun Kullanım Şekli

Sistem.Liste(Deger);

Sistem.Liste(BarSayisi, Deger);

Fonksiyonun Amacı IDEAL programında, Grafik Barlarına ait değerler, kapanışlar, indikatör değerleri, tüm hesaplatılan veya tanımlanan Çizgiler birer LİSTEDİRGrafik üzerine bir ÇİZGİ çizmek için bir liste gerekir. Bu liste hazır fonksiyonlarla okutulan veya kullanıcı tarafından hesaplatılan veya sabit olarak tanımlanan bir liste olabilir. (Örneğin yatay biz çizgi). Bu fonksiyonun amacı, kodlama sırasında kullanılmak üzere çeşitli listeler tanımlamaktır.
LİSTELERİN Kullanım Şekilleri ve Uygulamalı Örnekler

IDEAL sistem modülündeki veri veya fonksiyonların birçoğu LİSTE formatındadır. Örneğin Sistem.GrafikFiyatSec(“Kapanis”) fonksiyonu, bir grafikteki barların KAPANIŞ değerlerini içeren bir liste sunar. Her bir satırında bir SAYI olan bu listenin her bir elemanı grafikteki bir barı (tarihi) temsil eder. Listenin eleman sayısı = Bar Sayısıdır. Bu listeyi kullanarak işlemler/hesaplamalar yapmak için bir değişkene atamak işi kolaylaştırır.
ÖRNEK:

var Close = Sistem.GrafikFiyatSec(“Kapanis”);
fonksiyonu, bir grafikteki barların KAPANIŞ değerlerini içeren bir liste sunar. Her bir satırında bir SAYI olan bu listenin her bir elemanı grafikteki bir barı (tarihi) temsil eder.
Listenin eleman sayısı = Bar Sayısıdır.

Bu listeyi kullanarak işlemler/hesaplamalar yapmak için bir değişkene atamak işi kolaylaştırır.

Yeni ve/veya boş bir liste tanımlamak için Sistem.Liste(Deger) veya Sistem.Liste(BarSayisi, Deger) fonksiyonlarından biri kullanılır. (Robot kodu yazarken, listenin eleman sayısını da (bar sayısı) yazmak gerekir. Sistem yazarken bunu grafiğe uyguladığımız için, fonksiyon kaç adet bar olduğunu (listenin kaç elemanı olduğunu) kendisi bilir/bulur.

Sistem.Liste(0); //Bütün elemanları “0” olan (boş) bir listedir. (örneğin grafiğe 0 seviyesinde bir yatay çizgi olarak atanabilir)
Sistem.Liste(30); //Bütün elemanları “30” olan bir listedir. (örneğin grafiğe 30 seviyesinde bir yatay çizgi)
Sistem.Liste(100,30); //100 adet elemanı olan ve her bir elemanı 30 olan bir listedir. Grafik üzerinden böyle bir liste çizdirilirse, çizgi ilk 100 barda gözükür.
Liste şeklinde hazır olarak elde edilen LİSTE’ler dışında, kullanıcı kendisi de LİSTE tanımlayabilir ve elemanlarını tek tek hesaplatıp oluşturabilir.

KURAL: İki liste arasında matematiksel işlem veya kıyasla yapılırken, bu işlemler TEK TEK LİSTENİN ELEMANLARI arasında yapılabilir. Yani Listere veri yazarken veya veri okurken LİSTENİN BİR ELEMANI (INDEXİ) belirtilmelidir. Indexleme işlemi için köşeli parantez kullanılır. Bir listenin x numaralı elemanı için ListeAdi[x] ifadesi kullanılır.

ÖRNEK: Listem isimli bir listenin 1000. Elemanının değerine ihtiyaç varsa; Listem[1000] şeklinde o elemana ulaşılır.

Bir listenin her elemanı okunacak veya yazılacaksa veya tek seferde birden fazla elemanına ihtiyaç varsa, liste üzerindeki okuma/yazma/hesaplama işlemleri BİR DÖNGÜ içinde yapılmalıdır. DÖNGÜLER belirtilen bir değerden (örnek ilk bardan) yine belirtilen bir son değere (son bara) kadar, her eleman için (her bar için) bir işlemi yapmak amacıyla kullanılır. (Bakınız Genel Kavramlar)

HATALI KULLANIM: Listem = (Listem1 + Listem2) / 2 ;

ÖRNEK: Bir sembolün her bir barının Yüksek ve Düşük değerlerinin toplamının yarısını bir başka listeye almak ve ekranda çizdirmek:

var Listem1 = Sistem.GrafikFiyatSec(“Yuksek”);
var Listem2 = Sistem.GrafikFiyatSec(“Dusuk”);
var Listem3 = Sistem.Liste(0); //Boş bir liste oluşturulur.

For (int i=1; i < Sistem.BarSayisi; i++)
{
Listem3[i] = Listem1[i] + Listem2[i]) / 2 ;
}
Yukarıdaki kodda, 1.bardan (i) BarSayısına kadar tim barlar için bir döngü kurulup, her bardayken, o bara karşılık gelen Listem1’in elemanı (Yuksek) ile Listem2’nin elemanı (Dusuk) toplanmış, çıkan sonuç 2’ye bölünmüş ve Listem3’ün o bara karşılık gelen elemanı bulunmuştur. Birkaç milisaniyede işletilen bu kod parçası sayesinde Listem3 oluşmuş olur.

Yani grafiğin mesela 100. Barı için işlem şöyle olmuştur: Listem3[100] = (Listem1[100] + Listem2[100]) / 2

Örnek Uygulama

ÖRNEK: GRAFİK ÜZERİNDE PİVOTLARI HESAPLAMA GÖSTERME

var Veriler = Sistem.GrafikVerileri;
var sonbar = Veriler.Count-1;
var H = Veriler[sonbar-1].High;
var L = Veriler[sonbar-1].Low;
var C = Veriler[sonbar-1].Close;
var R = H – L;
var P = (H + L + C) / 3;
var R3 = Sistem.Liste(0);
var R2 = Sistem.Liste(0);
var R1 = Sistem.Liste(0);
var S1 = Sistem.Liste(0);
var S2 = Sistem.Liste(0);
var S3 = Sistem.Liste(0);
var pivot = Sistem.Liste(0);

for (int i=1; i<sistem.barsayisi; i++)<br=””>{
R3[i] = P + (R * 1.0f);
R2[i] = P + (R * 0.618f);
R1[i] = P + (R * 0.382f);
S1[i] = P – (R * 0.382f);
S2[i] = P – (R * 0.618f);
S3[i] = P – (R * 1.0f);
pivot[i] = P;
}
Sistem.Cizgiler[0].Deger=R3;
Sistem.Cizgiler[1].Deger=R2;
Sistem.Cizgiler[2].Deger=R1;
Sistem.Cizgiler[3].Deger=S1;
Sistem.Cizgiler[4].Deger=S2;
Sistem.Cizgiler[5].Deger=S3;
Sistem.Cizgiler[6].Deger=pivot;
</sistem.barsayisi;>

Daha Fazla Bilgiye mi İhtiyacınız Var?

Ürünlerimiz veya hizmetlerimizle ilgili yardıma ihtiyacınız varsa, lütfen bizimle temasa geçin.