ตอนนี้ Quants สามารถใช้เมทริกซ์ในสคริปต์ได้แล้ว! พวกมันถูกนำไปใช้เป็นออบเจกต์ใหม่ที่มีเนมสเปซเฉพาะและชุดฟังก์ชันที่ประกอบกันครบชุดของ 49 ฟังก์ชันที่ช่วยให้คุณสร้างและแก้ไขพวกมัน และดำเนินการพีชคณิตเมทริกซ์ทั่วไป
ฟังก์ชันที่เกี่ยวข้องกับเมทริกซ์อยู่ใน matrix.* namespace. สามารถสร้างเมทริกซ์อย่างง่ายได้โดยการเรียกใช้ฟังก์ชัน matrix.new<type>(rows, columns, initial_value) function, เช่น:
// Creates a 2x3 (2 rows x 3 columns) "int" matrix with values zero.
m = matrix.new<int>(2, 3, 0)
คุณสามารถเติมเมทริกซ์โดยเรียกใช้ฟังก์ชัน matrix.set() เพื่อตั้งค่าขององค์ประกอบเฉพาะ หรือผ่านทางฟังก์ชัน matrix.fill() เพื่อเติมค่าเมทริกซ์ทั้งหมด เมทริกซ์รองรับไพน์ทุกประเภท องค์ประกอบทั้งหมดในเมทริกซ์ต้องเป็นประเภทเดียวกัน ซึ่งระบุโดยใช้เทมเพลตประเภทใหม่ (ชื่อประเภทในวงเล็บ “<>”) ในการเรียก matrix.new<type>() ฟังก์ชันพีชคณิตเมทริกซ์ใช้ได้กับประเภทตัวเลข “int” และ “float” เท่านั้น อนุญาตให้ดำเนินการอื่น ๆ กับเมทริกซ์ทุกประเภท
ฟังก์ชันเมทริกซ์
matrix.new<type> | สร้างวัตถุเมทริกซ์ใหม่ เมทริกซ์คือโครงสร้างข้อมูลสองมิติที่มีแถวและคอลัมน์ องค์ประกอบทั้งหมดในเมทริกซ์ต้องเป็นประเภทที่ระบุในเทมเพลตประเภท (“<type>”) |
matrix.row() | สร้างอาร์เรย์หนึ่งมิติจากองค์ประกอบของแถวเมทริกซ์ |
matrix.col() | สร้างอาร์เรย์หนึ่งมิติจากองค์ประกอบของคอลัมน์เมทริกซ์ |
matrix.get() | ส่งกลับองค์ประกอบที่มีดัชนีที่ระบุของเมทริกซ์ |
matrix.set() | กำหนด ค่า องค์ประกอบดัชนี คอลัมน์ และ แถว ของเมทริกซ์ |
matrix.rows() | ส่งกลับจำนวนแถวในเมทริกซ์ |
matrix.columns() | ส่งกลับจำนวนคอลัมน์ในเมทริกซ์ |
matrix.elements_count() | ส่งกลับจำนวนรวมขององค์ประกอบเมทริกซ์ |
matrix.add_row() | เพิ่มแถวให้กับเมทริกซ์ แถวสามารถประกอบด้วยค่า na หรืออาร์เรย์สามารถใช้เพื่อให้ค่า |
matrix.add_col() | เพิ่มคอลัมน์ให้กับเมทริกซ์ คอลัมน์สามารถประกอบด้วยค่า na หรืออาร์เรย์สามารถใช้เพื่อให้ค่า |
matrix.remove_row() | ลบแถวของเมทริกซ์และส่งกลับอาร์เรย์ที่มีค่าของแถวที่ถูกลบ |
matrix.remove_col() | ลบคอลัมน์ของเมทริกซ์และส่งกลับอาร์เรย์ที่มีค่าของคอลัมน์ที่ถูกลบ |
matrix.swap_rows() | สลับแถวในเมทริกซ์ |
matrix.swap_columns() | สลับคอลัมน์ในเมทริกซ์ |
matrix.fill() | เติมพื้นที่สี่เหลี่ยมของเมทริกซ์ที่กำหนดโดยดัชนี from_column to to_column (ไม่รวม) และ from_row to to_row (ไม่รวม) กับ ค่า |
matrix.copy() | สร้างเมทริกซ์ใหม่ซึ่งเป็นสำเนาของต้นฉบับ |
matrix.submatrix() | แยกเมทริกซ์ย่อยภายในดัชนีที่ระบุ |
matrix.reverse() | กลับลำดับของแถวและคอลัมน์ในเมทริกซ์ แถวแรกและคอลัมน์แรกจะกลายเป็นแถวสุดท้าย และแถวสุดท้ายกลายเป็นแถวแรก |
matrix.reshape() | สร้างเมทริกซ์ใหม่เป็น แถว x ขนาด cols |
matrix.concat() | ผนวกเมทริกซ์หนึ่งเข้ากับเมทริกซ์อื่น |
matrix.sum() | ส่งกลับเมทริกซ์ใหม่ที่เกิดจากผลรวมของเมทริกซ์สองตัว หรือของเมทริกซ์และสเกลาร์ (ค่าตัวเลข) |
matrix.diff() | ส่งกลับเมทริกซ์ใหม่ที่เกิดจากการลบระหว่างเมทริกซ์หรือของเมทริกซ์และสเกลาร์ (ค่าตัวเลข) |
matrix.mult() | ส่งกลับเมทริกซ์ใหม่ที่เกิดจากผลคูณระหว่างเมทริกซ์หรือระหว่างเมทริกซ์กับสเกลาร์ (ค่าตัวเลข) หรือระหว่างเมทริกซ์กับเวกเตอร์ (อาร์เรย์ของค่า) |
matrix.sort() | จัดเรียงแถวใหม่ในเมทริกซ์ id ตามลำดับการจัดเรียงของค่าใน คอลัมน์ |
matrix.avg() | คำนวณค่าเฉลี่ยขององค์ประกอบทั้งหมดในเมทริกซ์ |
matrix.max() | ส่งคืนค่าที่มากที่สุดจากองค์ประกอบเมทริกซ์ |
matrix.min() | ส่งคืนค่าที่น้อยที่สุดจากองค์ประกอบเมทริกซ์ |
matrix.median() | คำนวณค่ามัธยฐาน (“ค่ากลาง”) ขององค์ประกอบเมทริกซ์ |
matrix.mode() | คำนวณโหมดของเมทริกซ์ ซึ่งเป็นค่าที่เกิดขึ้นบ่อยที่สุดจากองค์ประกอบเมทริกซ์ เมื่อมีหลายค่าที่เกิดขึ้นบ่อยครั้งเท่ากัน ฟังก์ชันจะส่งกลับค่าที่น้อยที่สุดของค่าเหล่านั้น |
matrix.pow() | คำนวณผลคูณของเมทริกซ์ด้วยตัวมันเองยกกำลัง |
matrix.det() | ส่งกลับดีเทอร์มีแนนต์ของเมทริกซ์สี่เหลี่ยมจัตุรัส |
matrix.transpose() | สร้างเมทริกซ์การสลับเปลี่ยนเวอร์ชันใหม่ที่ย้ายโดยการแลกเปลี่ยนดัชนีแถวและคอลัมน์ของแต่ละองค์ประกอบ |
matrix.pinv() | ส่งกลับค่า pseudoinverse ของเมทริกซ์ |
matrix.inv() | ส่งกลับค่าผกผันของเมทริกซ์สี่เหลี่ยมจัตุรัส |
matrix.rank() | คำนวณอันดับของเมทริกซ์ |
matrix.trace() | คำนวณการติดตามของเมทริกซ์ (ผลรวมขององค์ประกอบหลักในแนวทแยง) |
matrix.eigenvalues() | ส่งกลับอาร์เรย์ที่มีค่าลักษณะเฉพาะของเมทริกซ์สี่เหลี่ยม |
matrix.eigenvectors() | ส่งกลับเมทริกซ์ของ eigenvectors ซึ่งแต่ละคอลัมน์เป็น eigenvector ของเมทริกซ์ |
matrix.kron() | ส่งกลับผลิตภัณฑ์ Kronecker สำหรับเมทริกซ์สองตัว |
matrix.is_zero() | กำหนดว่าองค์ประกอบทั้งหมดของเมทริกซ์เป็นศูนย์หรือไม่ |
matrix.is_identity() | กำหนดว่าเมทริกซ์เป็นเมทริกซ์เอกลักษณ์หรือไม่ (องค์ประกอบที่มีองค์ประกอบในแนวทแยงหลักและศูนย์ที่อื่น) |
matrix.is_binary() | กำหนดว่าเมทริกซ์เป็นไบนารีหรือไม่ (เมื่อองค์ประกอบทั้งหมดของเมทริกซ์เป็น 0 หรือ 1) |
matrix.is_symmetric() | กำหนดว่าเมทริกซ์สี่เหลี่ยมจัตุรัสมีความสมมาตรหรือไม่ (องค์ประกอบมีความสมมาตรเมื่อเทียบกับเส้นทแยงมุมหลัก) |
matrix.is_antisymmetric() | กำหนดว่าเมทริกซ์นั้นไม่สมมาตรหรือไม่ (ทรานสโพสเท่ากับลบ) |
matrix.is_diagonal() | กำหนดว่าเมทริกซ์นั้นอยู่ในแนวทแยงหรือไม่ (องค์ประกอบทั้งหมดที่อยู่นอกเส้นทแยงมุมหลักเป็นศูนย์) |
matrix.is_antidiagonal() | เมทริกซ์ต่อต้านแนวทแยง (องค์ประกอบทั้งหมดที่อยู่นอกเส้นทแยงมุมทุติยภูมิเป็นศูนย์) |
matrix.is_triangular() | กำหนดว่าเมทริกซ์เป็นรูปสามเหลี่ยม (หากองค์ประกอบทั้งหมดด้านบนหรือด้านล่างเส้นทแยงมุมหลักเป็นศูนย์) |
matrix.is_stochastic() | กำหนด ถ้าเมทริกซ์เป็น stochastic |
matrix.is_square() | กำหนดว่าเมทริกซ์เป็นสี่เหลี่ยมจัตุรัสหรือไม่ (มีจำนวนแถวและคอลัมน์เท่ากัน) |
ฟังก์ชันที่มีอยู่บางฟังก์ชันยังรองรับเมทริกซ์ในขณะนี้: โครงสร้าง for…in ช่วยให้คุณหมุนเวียนแถวเมทริกซ์และใช้เป็นอาร์เรย์ได้ str.tostring() จะแปลงเมทริกซ์เป็นการแทนสตริงสำหรับแสดงผล
ในตัวอย่างด้านล่าง เราสร้างเมทริกซ์และจัดเรียงองค์ประกอบตามค่าของคอลัมน์แรกจากน้อยไปมาก จากนั้นเราแสดงเมทริกซ์ในตาราง:
//@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))

สิ่งตีพิมพ์ต่อไปนี้เป็นตัวอย่างของสคริปต์ที่เผยแพร่บน TradingView โดย PineCoders ที่ช่วยเราทดสอบคุณสมบัติ Pine Script™ ใหม่:
ไลบรารี “Function Polynomial Fit” โดย RicardoSantos

ทำการถดถอยพหุนามให้พอดีกับข้อมูล, ในสถิติ การถดถอยพหุนามเป็นรูปแบบหนึ่งของการวิเคราะห์การถดถอย ซึ่งความสัมพันธ์ระหว่างตัวแปรอิสระ x และตัวแปรตาม y ถูกจำลองเป็นพหุนามดีกรีที่ n ในหน่วย x
ไลบรารี “Ordinary Least Squares” โดย lejmer

วิธีหนึ่งที่ใช้กันทั่วไปในการประมาณค่าสัมประสิทธิ์สำหรับการถดถอยเชิงเส้นคือการใช้วิธี Ordinary Least Squares (OLS) การใช้งานนี้สามารถใช้เพื่อให้พอดีกับการถดถอยเชิงเส้นของตัวแปรอิสระหลายตัวบนตัวแปรตามตัวเดียว ตราบใดที่มีการสันนิษฐานที่อยู่เบื้องหลัง OLS
“ความน่าจะเป็นในการลดราคา” โดย HeWhoMustNotBeNamed

สคริปต์เปรียบเทียบราคาและความสัมพันธ์ในอดีตของปัจจัยพื้นฐาน และกำหนดความน่าจะเป็นที่จะถูกตีราคาต่ำเกินไป
เราหวังว่าคุณจะพบว่าคุณลักษณะที่ได้รับการร้องขออย่างสูงนี้มีประโยชน์ โปรดส่งความคิดเห็นและข้อเสนอแนะของคุณเพื่อการปรับปรุง เราสร้าง TradingView ให้กับคุณ และเรายินดีรับฟังความคิดเห็นจากคุณเสมอ
หากต้องการรับทราบข้อมูลคุณสมบัติใหม่ ๆ ของ Pine โปรดติดตามบันทึกคู่มือผู้ใช้ Pine บัญชี PineCoders ยังออกอากาศการอัปเดตจาก Squawk Box บน Telegram บัญชี Twitter และจากการแชทสาธารณะ Pine Script บน TradingView