Matriks hadir di Skrip Pine

Apr 5, 2022

Quant sekarang dapat menggunakan matriks dalam skrip mereka! Mereka diimplementasikan sebagai objek baru dengan namespace khusus dan satu set lengkap 49 fungsi yang menyertainya yang memungkinkan anda untuk membuat dan memodifikasinya, dan melakukan aljabar matriks umum.

Fungsi yang berhubungan dengan matriks langsung pada matrix.*namespace. Matriks sederhana dapat dibuat dengan memanggil fungsi matrix.new<type>(rows, columns, initial_value), misalnya:

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

Anda dapat mengisi matriks dengan memanggil fungsi matrix.set() untuk menentukan nilai elemen tertentu, atau melalui fungsi matrix.fill() untuk mengisi seluruh matriks dengan nilai. Matriks mendukung semua jenis Pine. Semua elemen dalam matriks harus memiliki tipe yang sama, yang ditentukan menggunakan template tipe baru (nama tipe dalam tanda kurung “<>”) dalam panggilan matrix.new<type>(). Fungsi aljabar matriks hanya tersedia untuk tipe numerik “int” dan “float”; operasi lain diperbolehkan pada semua jenis matriks.

FUNGSI MATRIKS

matrix.new<type> Membuat objek matriks baru. Sebuah matriks adalah struktur data dua-dimesi yang mengandung row dan kolom. Semua elemen dalam matriks harus dari tipe yang ditentukan dalam template tipe (“<type>”).
matrix.row() Membuat array satu-dimensi dari elemen row matriks
matrix.col() Membuat array satu-dimensi dari elemen kolom matriks.
matrix.get() Mengembalikan elemen dengan indeks tertentu dari matriks.
matrix.set() Menugaskan value ke elemen pada indeks column dan row matriks.
matrix.rows() Mengembalikan jumlah row pada matriks.
matrix.columns() Mengembalikan jumlah kolom pada matriks.
matrix.elements_count() Mengembalikan total jumlah elemen matriks.
matrix.add_row() Menambahkan row ke matriks. Row dapat mengandung nilai na, atau array dapat digunakan untuk menyediakan nilai.
matrix.add_col() Menambahkan kolom ke matriks. Kolom dapat mengandung nilai na, atau array dapat digunakan untuk menyediakan nilai.
matrix.remove_row() Melepaskan row pada matriks dan mengembalikan array yang mengandung nilai row yang dilepaskan.
matrix.remove_col() Melepaskan kolom pada matriks dan mengembalikan array yang mengandung nilai kolom yang dilepaskan.
matrix.swap_rows() Menukar row pada matriks.
matrix.swap_columns() Menukar kolom pada matriks.
matrix.fill() Mengisi area persegi pada matriks yang ditentukan oleh indeks from_column ke to_column (tidak termasuk itu) dan from_row ke to_row (tidak termasuk itu) dengan value.
matrix.copy() Membuat matriks baru yang merupakan salinan dari aslinya.
matrix.submatrix() Mengekstrak submatriks di dalam indeks tertentu.
matrix.reverse() Membalik urutan row dan kolom pada matriks. Row dan kolom pertama menjadi terakhir, dan yang terakhir menjadi pertama.
matrix.reshape() Membangun kembali dimensi matriks ke rows x cols.
matrix.concat() Menambahkan satu matriks ke matriks lainnya.
matrix.sum() Mengembalikan matriks baru yang dihasilkan dari jumlah dua matriks, atau dari matriks dan skalar (nilai bilangan).
matrix.diff() Mengembalikan matriks baru yang dihasilkan dari pengurangan antara matriks, atau dari matriks dan skalar (nilai bilangan).
matrix.mult() Mengembalikan matriks baru yang dihasilkan dari  product antar matriks, atau antara matriks dan skalar (nilai bilangan), atau antara matriks dan vektor (nilai array).
matrix.sort() Mengatur ulang row matriks id mengikuti urutan nilai pada column.
matrix.avg() Menghitung rata-rata dari semua elemen pada matriks.
matrix.max() Mengembalikan nilai terbesar dari elemen matriks.
matrix.min() Mengembalikan nilai terkecil dari elemen matriks.
matrix.median() Menghitung median (nilai “tengah”) elemen matriks.
matrix.mode() Menghitung mode matriks, nilai yang paling sering muncul dari elemen matriks. Saat terdapat beberapa nilai yang muncul sama seringnya, fungsi mengembalikan yang terkecil dari nilai tersebut.
matrix.pow() Menghitung produk dari matriks dengan sendirinya power kali.
matrix.det() Mengembalikan determinan matriks persegi.
matrix.transpose() Membuat baru, versi matriks yang di transposisikan dengan menukar indeks row dan kolom setiap elemen.
matrix.pinv() Mengembalikan pseudoinverse matriks.
matrix.inv() Mengembalikan invers matriks persegi.
matrix.rank() Menghitung peringkat matriks.
matrix.trace() Menghitung pelacakan matriks (jumlah elemen diagonal utama).
matrix.eigenvalues() Mengembalikan array yang mengandung eigenvalue dari matriks persegi.
matrix.eigenvectors() Mengembalikan matriks eigenvectors, dimana setiap kolom adalah eigenvector dari matriks.
matrix.kron() Mengembalikan produk Kronecker untuk dua matriks.
matrix.is_zero() Menentukan jika semua elemen matriks adalah nol.
matrix.is_identity() Menentukan apakah matriks adalah matriks identitas (elemen dengan yang ada pada diagonal utama dan nol di tempat lain).
matrix.is_binary() Menentukan apakah matriks adalah biner (saat semua elemen matriks adalah 0 atau 1).
matrix.is_symmetric() Menentukan apakah matriks persegi adalah simetris (elemen adalah simetris terhadap diagonal utama).
matrix.is_antisymmetric() Menentukan apakah matriks antisimetris (transposnya sama dengan negatifnya).
matrix.is_diagonal() Menentukan apakah matriks adalah diagonal (semua elemen di luar diagonal utama adalah nol).
matrix.is_antidiagonal() Menentukan apakah matriks adalah anti-diagonal (semua elemen diluar diagonal sekunder adalah nol).
matrix.is_triangular() Menentukan apakah matriks adalah segitiga (apakah semua elemen diatas atau dibawah diagonal utama adalah nol)
matrix.is_stochastic() Menentukan apakah matriks adalah stochastic.
matrix.is_square() Menentukan apakah matriks adalah persegi (itu memiliki jumlah row dan kolom yang sama).

Beberapa fungsi yang ada sekarang juga mendukung matriks: for…in struktur memungkinkan anda untuk mengulangi row matriks dan menggunakannya sebagai array, str.tostring() mengkonversi matriks menjadi representasi string untuk ditampilkan.

Pada contoh di bawah, kami membuat matriks dan mengurutkan elemen-elemennya dalam urutan menaik dari nilai kolom pertama. Kami kemudian menampilkan matriks dalam tabel:

//@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))

Publikasi berikut adalah contoh skrip yang dipublikasikan di TradingView oleh PineCoders yang membantu kami menguji fitur Skrip Pine™ baru:

Pustaka “Function Polynomial Fit” oleh RicardoSantos

Melakukan Regresi Polinomial yang sesuai dengan data. Dalam statistik, regresi polinomial adalah suatu bentuk analisis regresi di mana hubungan antara variabel independen x dan variabel dependen y dimodelkan sebagai polinomial derajat ke-n di x.

Perpustakaan “Ordinary Least Squares” oleh lejmer

Salah satu cara paling umum untuk memperkirakan koefisien untuk regresi linier adalah dengan menggunakan metode Kuadrat Terkecil Biasa (OLS). Implementasi ini dapat digunakan untuk menyesuaikan regresi linier dari beberapa variabel independen ke dalam satu variabel dependen, selama asumsi di balik OLS berlaku.

Discounted Price Probability” oleh HeWhoMustNotBeNamed

Skrip membandingkan harga dan korelasi historis fundamental dan mendefinisikan kemungkinan undervalue.

Kami harap fitur yang sangat diminta ini bermanfaat bagi anda. Harap terus mengirimkan umpan balik dan saran anda untuk perbaikan. Kami membangun TradingView untuk anda, dan kami selalu ingin mendengar dari anda.

Untuk tetap mendapat informasi tentang fitur-fitur baru Pine, pantau Catatan Rilis Panduan Pengguna Pine kami. Akun PineCoders juga menerbitkan pembaruan dari Squawk Box di Telegram, akun Twitter, dan dari obrolan publik Pine Script di TradingView.

Look first Then leap

TradingView dibangun untuk anda, karenanya manfaatkan fitur-fitur luar biasa kami semaksimal mungkin
Luncurkan Chart