Kullanıcı İndikatörleri Tabloları #

İndikatörler içerisinde verileri tablo formatında görüntülemek için TableManager sınıfı kullanılır. Tablo oluşturma, görsel ayarlar ve veri ekleme işlemleri bu sınıf üzerinden yapılır.

İki tip tablo oluşturulabilir: Auto Table ve Custom Table. Auto Table’lar otomatik olarak sütun sayısını belirlenen tipin özelliklerine göre oluştururken, Custom Table’larda satır ve sütun sayısı manuel olarak belirlenir.

AddAutoTable<T>(string, int) #

Otomatik tablo oluşturmak için kullanılır. Tablo sütunları, belirtilen tip (T) içindeki IndicatorTableColumn attribute’u ile işaretlenmiş özelliklere göre otomatik olarak oluşturulur.

public int AddAutoTable<T>(string name, int maxRowCount)

Parametreler #

name            string

Tablonun görünen adı. Bu isim tablo başlığında gösterilir.

maxRowCount          int

Tablonun maksimum satır sayısı. Bu sayıdan fazla veri eklendiğinde en eski satırlar otomatik olarak silinir.

Dönüş Değeri #

int – Oluşturulan tablonun benzersiz kimlik numarası. Bu ID, tablo üzerinde işlem yapmak için kullanılır.

Örnek #

private int _autoTableId;

public sealed override void OnInit()
{
    //Decimal tipinde otomatik tablo oluşturma
    _autoTableId = TableManager.AddAutoTable<decimal>("Auto Table 1", 3);
    
    //TestClass tipinde otomatik tablo oluşturma
    var tableId2 = TableManager.AddAutoTable<TestClass>("Auto Table 2", 10);
}

public class TestClass
{
    [IndicatorTableColumn("Bar Index")]
    public int BarIndex { get; set; }

    [IndicatorTableColumn("Bar Value")]
    public decimal BarValue { get; set; }
}

AddCustomTable(string, int, int) #

Özel tablo oluşturmak için kullanılır. Satır ve sütun sayısı manuel olarak belirlenir. Bu tip tablolara herhangi bir tip veri eklenebilir.

public int AddCustomTable(string name, int rowCount, int columnCount)

Parametreler #

name            string

Tablonun görünen adı. Bu isim tablo başlığında gösterilir.

rowCount          int

Tablonun satır sayısı.

columnCount          int

Tablonun sütun sayısı.

Dönüş Değeri #

int – Oluşturulan tablonun benzersiz kimlik numarası. Bu ID, tablo üzerinde işlem yapmak için kullanılır.

Örnek #

private int _customTableId;

public sealed override void OnInit()
{
    //3 satır, 3 sütunlu özel tablo oluşturma
    _customTableId = TableManager.AddCustomTable("Custom Table 1", 3, 3);
    
    //4 satır, 4 sütunlu özel tablo oluşturma
    var tableId2 = TableManager.AddCustomTable("Custom Table 2", 4, 4);
}

SetFontSettings(int, int, string) #

Tablonun font ayarlarını belirlemek için kullanılır. Font boyutu ve font ailesi bu metod ile ayarlanır.

public void SetFontSettings(int tableId, int fontSize, string fontFamily)

Parametreler #

tableId            int

Font ayarları uygulanacak tablonun kimlik numarası. AddAutoTable veya AddCustomTable metodlarından dönen değer kullanılmalıdır.

fontSize          int

Tablo içindeki yazıların font boyutu.

fontFamily          string

Tablo içindeki yazıların font ailesi. Örn. “Verdana”, “Arial”, “MS Gothic”, “Palatino Linotype”

Örnek #

private int _tableId;

public sealed override void OnInit()
{
    _tableId = TableManager.AddAutoTable<decimal>("My Table", 5);
    
    //Font boyutu 13, font ailesi Verdana olarak ayarla
    TableManager.SetFontSettings(_tableId, 13, "Verdana");
    
    //Font boyutu 15, font ailesi Arial olarak ayarla
    TableManager.SetFontSettings(_tableId, 15, "Arial");
}

SetColors(int, Color, Color) #

Tablonun renk ayarlarını belirlemek için kullanılır. Metin rengi ve arka plan rengi bu metod ile ayarlanır.

public void SetColors(int tableId, Color textColor, Color backgroundColor)

Parametreler #

tableId            int

Renk ayarları uygulanacak tablonun kimlik numarası.

textColor          Color

Tablo içindeki yazıların rengi. System.Windows.Media.Colors sınıfından renk değerleri kullanılabilir. Örn. Colors.White, Colors.Black, Colors.Red

backgroundColor          Color

Tablonun arka plan rengi. System.Windows.Media.Colors sınıfından renk değerleri kullanılabilir.

Örnek #

using System.Windows.Media;

private int _tableId;

public sealed override void OnInit()
{
    _tableId = TableManager.AddAutoTable<decimal>("My Table", 5);
    
    //Beyaz yazı, açık mavi arka plan
    TableManager.SetColors(_tableId, Colors.White, Colors.LightBlue);
    
    //Sarı yazı, kırmızı arka plan
    TableManager.SetColors(_tableId, Colors.Yellow, Colors.Red);
}

SetTablePosition(int, IndicatorTablePosition) #

Tablonun ekrandaki konumunu belirlemek için kullanılır. Tablo, grafik üzerinde belirtilen pozisyonda gösterilir.

public void SetTablePosition(int tableId, IndicatorTablePosition position)

Parametreler #

tableId            int

Pozisyon ayarı uygulanacak tablonun kimlik numarası.

position          IndicatorTablePosition

Tablonun ekrandaki konumu. Aşağıdaki değerler kullanılabilir:

  • TopLeft – Üst sol köşe
  • TopCenter – Üst orta
  • TopRight – Üst sağ köşe
  • MidLeft – Orta sol
  • Center – Merkez
  • MidRight – Orta sağ
  • BottomLeft – Alt sol köşe
  • BottomCenter – Alt orta
  • BottomRight – Alt sağ köşe

Örnek #

private int _tableId;

public sealed override void OnInit()
{
    _tableId = TableManager.AddAutoTable<decimal>("My Table", 5);
    
    //Tablo pozisyonunu üst sol köşe olarak ayarla
    TableManager.SetTablePosition(_tableId, IndicatorTablePosition.TopLeft);
    
    //Tablo pozisyonunu merkez olarak ayarla
    TableManager.SetTablePosition(_tableId, IndicatorTablePosition.Center);
    
    //Tablo pozisyonunu alt sağ köşe olarak ayarla
    TableManager.SetTablePosition(_tableId, IndicatorTablePosition.BottomRight);
}

AddItem(int, object) #

Tablo içine veri eklemek için kullanılır. Auto Table’lara eklenen veriler otomatik olarak sütunlara dağıtılırken, Custom Table’lara eklenen veriler sırayla hücrelere yerleştirilir.

public void AddItem<T>(int tableId, object item)

Parametreler #

tableId            int

Veri eklenecek tablonun kimlik numarası.

item          object

Tablo içine eklenecek veri. Auto Table’larda bu tip, tablo oluşturulurken belirtilen tip ile aynı olmalıdır. Custom Table’larda herhangi bir tip veri eklenebilir.

Örnek #

private int _autoTableId;
private int _customTableId;

public sealed override void OnInit()
{
    _autoTableId = TableManager.AddAutoTable<TestClass>("Auto Table", 3);
    _customTableId = TableManager.AddCustomTable("Custom Table", 3, 3);
}

public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
  
    //Custom Table'a decimal değer ekleme
    TableManager.AddItem(_customTableId, inputValue);
    
    //Auto Table'a özel sınıf ekleme
    var testClass = new TestClass()
    {
        BarIndex = currentBar,
        BarValue = inputValue
    };
    TableManager.AddItem(_autoTableId, testClass);
}

public class TestClass
{
    [IndicatorTableColumn("Bar Index")]
    public int BarIndex { get; set; }

    [IndicatorTableColumn("Bar Value")]
    public decimal BarValue { get; set; }
}

IndicatorTableColumn #

Auto Table’larda kullanılan sınıfların özelliklerini tablo sütunlarına dönüştürmek için kullanılan attribute’dur. Bu attribute ile işaretlenen özellikler, tablo sütunları olarak otomatik olarak oluşturulur.

[IndicatorTableColumn(string columnName)]

Parametreler #

columnName          string

Sütun başlığında gösterilecek isim. Bu parametre opsiyoneldir, belirtilmezse özellik adı kullanılır.

Örnek #

public class TestClass
{
    //"Bar Index" başlığıyla sütun oluşturulur
    [IndicatorTableColumn("Bar Index")]
    public int BarIndex { get; set; }

    //"Bar Value" başlığıyla sütun oluşturulur
    [IndicatorTableColumn("Bar Value")]
    public decimal BarValue { get; set; }
    
    //Bu özellik tabloda görünmez (attribute yok)
    public string HiddenProperty { get; set; }
}

//Bu sınıf ile Auto Table oluşturulduğunda:
//- "Bar Index" sütunu (int değerler için)
//- "Bar Value" sütunu (decimal değerler için)
//otomatik olarak oluşturulur.

Tam Örnek #

Aşağıda tablo oluşturma ve kullanımının tam bir örneği bulunmaktadır:

using System;
using System.Windows.Media;
using Matriks.Lean.Algotrader.AlgoBase;

public class MyIndicator : MatriksIndicator
{
    private int _autoTableId;
    private int _customTableId;

    public sealed override void OnInit()
    {
        //Auto Table oluşturma ve ayarlama
        _autoTableId = TableManager.AddAutoTable<decimal>("Auto Table", 5);
        TableManager.SetFontSettings(_autoTableId, 13, "Verdana");
        TableManager.SetColors(_autoTableId, Colors.White, Colors.LightBlue);
        TableManager.SetTablePosition(_autoTableId, IndicatorTablePosition.TopLeft);

        //Custom Table oluşturma ve ayarlama
        _customTableId = TableManager.AddCustomTable("Custom Table", 3, 3);
        TableManager.SetFontSettings(_customTableId, 15, "Arial");
        TableManager.SetColors(_customTableId, Colors.Yellow, Colors.Red);
        TableManager.SetTablePosition(_customTableId, IndicatorTablePosition.BottomRight);
    }

    public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
    {
        //Auto Table'a veri ekleme
        TableManager.AddItem(_autoTableId, inputValue);

        //Custom Table'a veri ekleme
        TableManager.AddItem(_customTableId, inputValue);
    }
}