المصفوفات في النصوص البرمجية Pine™

Apr 5, 2022
المحللين الكميين يمكنهم الآن استخدام المصفوفات في نصوصهم
يتم تنفيذها ككائن جديد بمساحة اسم مخصصة ومجموعة كاملة من 49 دالة مصاحبة تسمح لك بإنشائها وتعديلها وإجراء جبر المصفوفة مشترك.ُتبنى الدوال المتعلقة بالمصفوفة في matrix.* مساحة الاسم. يمكن إنشاء مصفوفة بسيطة عن طريق استدعاء دالة matrix.new<type>(rows, columns, initial_value)، على سبيل المثال:
// 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() يخصص value للعنصر في فهرس row & column في المصفوفة.
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_column (لا يشمله) ومن from_row إلى to_row (لا يشملها) بالقيمة.
matrix.copy() ينشئ مصفوفة جديدة تكون نسخة من الأصل.
matrix.submatrix() يستخرج مصفوفة فرعية ضمن المؤشرات المحددة.
matrix.reverse() يعكس ترتيب الصفوف والأعمدة في المصفوفة. يصبح الصف الأول والعمود الأول هو الأخير ، والأخير يصبح الأول.
matrix.reshape() يعيد بناء المصفوفة إلى الصفوف × أبعاد الأعمدة.
matrix.concat() إلحاق مصفوفة بأخرى.
matrix.sum() تُرجع مصفوفة جديدة ناتجة عن مجموع مصفوفتين ، أو مصفوفة وقياس (قيمة عددية).
matrix.diff() تُرجع مصفوفة جديدة ناتجة عن الطرح بين المصفوفات أو المصفوفة والقياس (قيمة عددية).
matrix.mult() تُرجع مصفوفة جديدة ناتجة عن حاصل الضرب بين المصفوفات ، أو بين مصفوفة وعددي (قيمة عددية) ، أو بين مصفوفة ومتجه (مصفوفة من القيم).
matrix.sort() يعيد ترتيب الصفوف في مصفوفة المعرف باتباع الترتيب الفرز للقيم في العمود.
matrix.avg() تحسب متوسط ​​كل العناصر في المصفوفة.
matrix.max() تُرجع أكبر قيمة من عناصر المصفوفة.
matrix.min() تُرجع أصغر قيمة من عناصر المصفوفة.
matrix.median() تحسب الوسيط (القيمة “الوسطى“) لعناصر المصفوفة.
matrix.mode() لحساب وضع المصفوفة ، وهو القيمة الأكثر تكرارا من عناصر المصفوفة.عند وجود قيم متعددة تتكرر بشكل متساوٍ ، تُرجع الدالة أصغر هذه القيم.
matrix.pow() تحسب حاصل ضرب المصفوفة في حد ذاتها مرات الأس.
matrix.det() إرجاع محدد مصفوفة مربعة.
matrix.transpose() يُنشئ نسخة جديدة من المصفوفة مع تبديل مواضعها عن طريق تبديل فهرس الصف والعمود لكل عنصر.
matrix.pinv() إرجاع الوجه الزائف لمصفوفة.
matrix.inv() لعرض معكوس مصفوفة مربعة.
matrix.rank() تحسب رتبة المصفوفة.
matrix.trace() لحساب تتبع مصفوفة (مجموع عناصر القطر الرئيسي).
matrix.eigenvalues() تُرجع مصفوفة تحتوي على قيم ذاتية لمصفوفة مربعة.
matrix.eigenvectors() تُرجع مصفوفة من المتجهات الذاتية ، حيث يكون كل عمود متجهًا ذاتيًا للمصفوفة.
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() تحدد ما إذا كانت المصفوفة عشوائية.
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
من أكثر الطرق شيوعًا لتقدير معاملات الانحدار الخطي استخدام طريقة المربعات الصغرى العادية (OLS). يمكن استخدام هذا التنفيذ لملاءمة الانحدار الخطي لمتغيرات مستقلة متعددة في متغير تابع واحد ، طالما أن الافتراضات وراء عقد OLS.
مكتبة Discounted Price Probability بوسطة HeWhoMustNotBeNamed

يقارن النص بين السعر والأساسيات الارتباط التاريخي ويحدد احتمال التقليل من قيمتها.

نأمل أن تجد هذه الميزة المطلوبة بشدة مفيدة.
يرجى الاستمرار في إرسال ملاحظاتك واقتراحاتك إلينا للتحسين.
نحن نبني TradingView لك ، ونحن حريصون دائمًا على الاستماع إليك.

للبقاء على اطلاع بميزات Pine الجديدة ، راقب ملاحظات إصدار دليل مستخدم Pine. يبث حساب PineCoders أيضًا تحديثات من Squawk Box على Telegram وحسابه على Twitter ومن الدردشة العامة Pine Script على TradingView.

Look first Then leap

تم إنشاء TradingView خصيصًا لك، لذا تأكد من حصولك على أقصى استفادة من خدماتنا الرائعة
فتح الرسم البياني