Matrisler Pine Script™’e geliyor

Apr 5, 2022

Quants artık script’lerinde matrisleri kullanabilir! Özel ad alanı ve bunları oluşturmanıza ve değiştirmenize ve ortak matris cebirini gerçekleştirmenize izin veren 49 eşlik eden işlevden oluşan eksiksiz bir set ile yeni bir nesne olarak uygulanırlar.

Matrisle ilgili işlevler matriste.* ad alanında yaşar. Basit bir matris, matrix.new<type>(satırlar, sütunlar, initial_value) işlevi çağrılarak oluşturulabilir , örneğin:

// Creates a 2x3 (2 rows x 3 columns) "int" matrix with values zero.
m = matrix.new<int>(2, 3, 0)

Belirli öğelerin değerini ayarlamak için matrix.set() işlevini çağırarak veya matrisin tamamını bir değerle doldurmak için matrix.fill() işlevi aracılığıyla bir matris doldurabilirsiniz. Matrisler tüm Pine türlerini destekler. Matristeki tüm öğeler, matrix.new<type>() çağrısındaki yeni tür şablonları (“<>” köşeli ayraçlarındaki bir tür adı) kullanılarak belirtilen aynı türde olmalıdır. Matris cebir fonksiyonları yalnızca “int” ve “float” sayısal tipleri için kullanılabilir; diğer işlemlere tüm matris türlerinde izin verilir.

MATRIS FONKSIYONLARI

matrix.new<type> Yeni bir matris nesnesi oluşturur. Matris, satır ve sütun içeren iki boyutlu bir veri yapısıdır. Matristeki tüm öğeler tür şablonunda belirtilen türde olmalıdır (“<type>”).
matrix.row() Matris satırının öğelerinden tek boyutlu bir dizi oluşturur.
matrix.col() Matris sütununun öğelerinden tek boyutlu bir dizi oluşturur.
matrix.get() Matrisin belirtilen dizinine sahip öğeyi döndürür.
matrix.set() Matrisin sütun ve satır dizinindeki öğeye değer atar.
matrix.rows() Matristeki satır sayısını verir.
matrix.columns() Matristeki sütun sayısını verir.
matrix.elements_count() Matris öğelerinin toplam sayısını verir.
matrix.add_row() Matrise bir satır ekler. Satır na değerlerinden oluşabilir veya değer sağlamak için bir dizi kullanılabilir.
matrix.add_col() Matrise bir sütun ekler. Sütun na değerlerinden oluşabilir veya değer sağlamak için bir dizi kullanılabilir.
matrix.remove_row() Matrisin satırını kaldırır ve kaldırılan satırın değerlerini içeren bir dizi döndürür.
matrix.remove_col() Matrisin sütununu kaldırır ve kaldırılan sütunun değerlerini içeren bir dizi döndürür.
matrix.swap_rows() Matristeki satırları değiştirir.
matrix.swap_columns() Matristeki sütunları değiştirir.
matrix.fill() To_column (dahil değil) ve to_row (dahil değil) değerine from_row from_column dizinler tarafından tanımlanan matrisin dikdörtgen bir alanını doldurur.
matrix.copy() Orijinalin bir kopyası olan yeni bir matris oluşturur.
matrix.submatrix() Belirtilen dizinler içinde bir alt matris ayıklar.
matrix.reverse() Matristeki satır ve sütunların sırasını tersine çevirir. İlk satır ve ilk sütun son, sonuncusu ise ilk olur.
matrix.reshape() Matrisi satır x cols boyutlarına yeniden inşa eder.
matrix.concat() Bir matrisi diğerine ekle.
matrix.sum() İki matrisin veya matrisin ve skaler ‘in (sayısal bir değer) toplamından kaynaklanan yeni bir matris döndürür.
matrix.diff() Matrisler veya matris ve skaler (sayısal bir değer) arasındaki çıkarmadan kaynaklanan yeni bir matris döndürür.
matrix.mult() Matrisler arasında veya matris ile skaler (sayısal değer) arasında veya matris ile vektör (değerler dizisi) arasında üründen kaynaklanan yeni bir matris döndürür.
matrix.sort() Sütundaki değerlerin sıralanmış sırasını izleyerek kimlik matrislerindeki satırları yeniden düzenler.
matrix.org() Matristeki tüm öğelerin ortalamasını hesaplar.
matris.max() Matris öğelerinden en büyük değeri verir.
matrix.min() Matris öğelerinden en küçük değeri döndürür.
matrix.median() Matris öğelerinin ortancasını (“orta” değeri) hesaplar.
matrix.mode() Matris öğelerinden en sık oluşan değer olan matrisin modunu hesaplar . Eşit sıklıklarda birden çok değer oluştuğunda, işlev bu değerlerin en küçüğünün değerini döndürür.
matrix.pow() Matrisin ürününü kendi güç sürelerine göre hesaplar.
matrix.det() Kare matrisin belirleyicisini verir.
matrix.transpose() Her öğenin satır ve sütun dizinini değiştirerek matrisin yeni, transpoze edilmiş bir sürümünü oluşturur.
matrix.pinv() Matrisin takma adını verir .
matrix.inv() Kare matrisin tersini verir.
matrix.rank() Matrisin derecesini hesaplar.
matrix.trace() Matrisin izini hesaplar (ana köşegen öğelerinin toplamı).
matrix.eigenvalues() Kare matrisin eigenvalues içeren bir dizi döndürür.
matrix.eigenvectors() Her sütunun matrisin bir eigenvector olduğu bir eigenvectors matrisi döndürür.
matris.kron() İki matris için Kronecker ürününü verir.
matrix.is_zero() Matrisin tüm öğelerinin sıfır olup olmadığını belirler.
matrix.is_identity() Matrisin bir kimlik matrisi olup olmadığını belirler (ana köşegende olan öğeler ve başka bir yerde sıfırlar).
matrix.is_binary() Matrisin ikili olup olmadığını belirler (matrisin tüm öğeleri 0 veya 1 olduğunda).
matrix.is_symmetric() Kare matrisin simetrik olup olmadığını belirler (öğeler ana diyagonal ile ilgili simetriktir).
matrix.is_antisymmetric() Matrisin antisimetrik olup olmadığını belirler (transpozu negatifine eşittir).
matrix.is_diagonal() Matrisin diyagonal olup olmadığını belirler (ana köşegen dışındaki tüm öğeler sıfırdır).
matrix.is_antidiagonal() Matrisin köşegen karşıtı olup olmadığını belirler (ikincil diyagonal dışındaki tüm öğeler sıfırdır).
matrix.is_triangular() Matrisin üçgen olup olmadığını belirler (ana köşegenin üstündeki veya altındaki tüm öğeler sıfırsa).
matrix.is_stochastic() Matrisin stokastik olup olmadığını belirler.
matrix.is_square() Matrisin kare olup olmadığını belirler (aynı sayıda satır ve sütuna sahiptir).

Bazı mevcut işlevler de şimdi matrisleri destekliyor: for…in matris satırları arasında geçiş yapmanıza ve bunları diziler olarak kullanmanıza olanak tanır, str.tostring() bir matrisi görüntüleme için dize gösterimine dönüştürür.

Aşağıdaki örnekte, bir matris oluşturur ve öğelerini ilk sütunun değerlerinin artan sırasına göre sıralarız. Daha sonra matrisi bir tabloda görüntüleriz:

//@version=5
indicator("Matrix Example", overlay = true)

// Create a 2x2 matrix with ‘na’ values. 
m1 = matrix.new<float>(2, 2, na)


// Set values to the matrix’s elements. First argument is the matrix object we created before, second is a row index (it starts from 0 for the first row), third is a column index (it starts from 0 for the first column). Last argument is the value to set.
matrix.set(m1, 0, 0, 3)
matrix.set(m1, 0, 1, 4)
matrix.set(m1, 1, 0, 1)
matrix.set(m1, 1, 1, 2)

// Copy the matrix to create a new one.
m2 = matrix.copy(m1)

// Sort rows of the `m2` matrix based on the values of the first column, in ascending order. 
matrix.sort(m2, 0, order.ascending)


// Display the matrix’s elements in the table.
var t = table.new(position.top_right, 2, 2, color.green)
if barstate.islastconfirmedhistory
    table.cell(t, 0, 0, "Original Matrix:")
    table.cell(t, 0, 1, str.tostring(m1))
    table.cell(t, 1, 0, "Sorted Matrix:")
    table.cell(t, 1, 1, str.tostring(m2))


Aşağıdaki yayınlar, yeni Pine Script özelliklerini test etmemize yardımcı olan PineCoders tarafından TradingView’de yayınlanan komut dosyalarına™ örneklerdir:

RicardoSantos’un “Fonksiyon Polinom Uyumu” kütüphanesi

Verilere sığdırma polinom regresyonunu gerçekleştirir. İstatistiklerde polinom regresyon, bağımsız değişken x ile bağımlı değişken y arasındaki ilişkinin x cinsinden n. derece polinom olarak model edildiği bir regresyon analizi şeklidir.

Lejmer’den “Sıradan En Az Kareler” kütüphanesi

Doğrusal regresyon katsayılarını tahmin etmenin en yaygın yollarından biri, Sıradan En Az Kareler (OLS) yöntemini kullanmaktır. Bu uygulama, OLS’nin arkasındaki varsayımlar tuttuğu sürece, birden çok bağımsız değişkenin doğrusal bir regresyonunu tek bir bağımlı değişkene sığdırmak için kullanılabilir.

HeWhoMustNotBeNamed tarafından “İndirimli Fiyat Olasılığı

Komut dosyası fiyatı karşılaştırır ve tarihsel korelasyonu temeller ve düşük değerlenme olasılığını tanımlar.

Umarız bu çok istenen özelliği yararlı bulursunuz. Lütfen iyileştirme için geri bildirimlerinizi ve önerilerinizi bize göndermeye devam edin. TradingView’i sizin için oluşturuyoruz ve sizden her zaman haber almak istiyoruz.

Yeni Pine özelliklerinden haberdar olmak için Pine Kullanım Kılavuzumuzun Sürüm notlarına göz kulak olun. PineCoders hesabı ayrıca Telegram’daki Squawk Box’ındanTwitter hesabından ve TradingView’deki Pine Script genel sohbetinden güncellemeler yayınlar.

Look first Then leap

TradingView sizin için tasarlandı, bu nedenle muhteşem özelliklerimizden en iyi şekilde yararlandığınızdan emin olun
Grafiği Açın