البرمجة النصية: كتابة مؤشر (JavaScript)

سكربت المؤشر يعرّف compute(bars, params, ctx) ويعيد قائمة مخرجات. وتسرد هذه الصفحة الأشكال التي يمكنه إعادتها، ومن أين تأتي وسائطه، وكيف يُخزَّن السكربت.

Senzoukria · التوثيق · آخر تحديث: سبتمبر 2026


أين تجده

الموضع
صفحة البرمجة النصية ← New indicator
نقطة الدخول
compute(bars, params, ctx)، وتعيد مصفوفة مخرجات
الهدف
«On the chart» (فوق السعر) أو «Own pane» (لوحة خاصة)
اللغة الافتراضية
JavaScript؛ والسكربت بلا لغة مسجَّلة يُقرأ على أنه JavaScript
الميزانية
ثانيتان لكل تشغيل، في عامل بلا شبكة وبلا وصول إلى الملفات وبلا واجهة برمجية للمنصّة

ما الذي يفعله

تتلقّى compute() الشموع وقيم الوسائط وسياقًا، وتعيد قائمة مخرجات. والراسم لا يعرف إلا تلك المخرجات — ولا يعرف أبدًا أي سكربت أنتجها — فإضافة مؤشر لا تمسّ خطّ المعالجة إطلاقًا.

والوقت تحمله الطابعة الزمنية لسلّة كل شمعة بالنانوثانية، وهي المفتاح الزمني لخطّ معالجة الـ footprint كلّه. والنقطة التي قيمتها null فجوة: فالراسم يرفع القلم بدل رسم خطّ مستقيم كاذب عبر إحماء أو عبر تصفير جلسة.

وثمّة اصطلاحان يستحقّان الاحترام لأن المؤشرات المدمجة تتبعهما: دلتا المستوى هي حجم الشراء ناقص حجم البيع، ودلتا الشمعة هي مجموع مستوياتها؛ وحجم التيك يأتي من السياق، لا مُثبَّتًا في الشفرة أبدًا.

أشكال المخرجات

الأشكال التي يمكن لمؤشر أن يعيدها
الشكلالافتراضيما الذي يغيّره
lineالعرض 1سلسلة محاذية للشموع؛ وقيم null فجوات.
histogram—أعمدة بلون موجب ولون سالب؛ والشمعة بلا قيمة لا تصدر نقطة.
bandsالتعبئة 0.12سلسلة عليا وأساس وسلسلة دنيا، بعتامة تعبئة مقيَّدة بين 0 و1. ولا توجد مساعدة lib.bands في JavaScript: فهي تُبنى بـ of.bands في Python، أو تُعاد كائنًا عاديًّا.
markers—نقاط عند سعر على شمعة، نقطةً أو سهمًا لأعلى أو لأسفل أو مربّعًا، مع وسم اختياري.
levelsto = nullمستويات أفقية من شمعة إلى أخرى؛ ونهاية null تمدّ المستوى إلى الحافة اليمنى.
tableالمحاذاة إلى اليسارجدول عائم في الـ DOM — يمكن قراءته وتحديده ونسخه.
panel—لوحة صغيرة من صفوف وسم وقيمة، ملوَّنة اختياريًّا.

الوسائط

يمكن التصريح بالوسائط في لوحة المحرّر، لكنّ السكربت قد يقرأ مفتاحًا من المصدر مباشرةً. وقارئ الوسائط يمسح الشفرة مسحًا ساكنًا بحثًا عن الصيغ الثلاث المكتوبة فعلًا — params.get("key", default) وparams["key"] وparams.key ?? default — إضافةً إلى أسماء بديلة من سطر واحد، مثل لامدا أو دالّة سهمية تلفّ params.

وهذا ما يغذّي خيار «Explore every readable parameter» في مساعد الاختبار الرجعي، الذي يهيّئ حتى خمسة محاور من الوسائط التي يقرؤها سكربتك فعلًا، بقيم حول قيمها الافتراضية. وهو اقتراح في حقل تستطيع تصحيحه، لا عقدًا: فمفتاح مبني أو حلقة على قاموس لن يُرى.

الحدود والمزالق

  • إعادة شيء ليس من الأشكال أعلاه يُبلَّغ عنه بوصفه قيمة معادة غير معروفة بدل رسمه.
  • والتشغيل الذي ينتهي بلا خطأ ولا يرسم شيئًا يعني عادةً أن القيم المعادة ليست أعدادًا.
  • والسكربتات تعيش في التخزين المحلّي لهذا الجهاز؛ ولا تُزامَن ولا يُنسَخ لها احتياطي نيابةً عنك.
  • وtable وpanel هما الشكلان الوحيدان اللذان لا يُرسمان على الـ canvas — فهما يخرجان بصيغة DOM، لأن الجدول يجب أن يكون قابلًا للتحديد.

هذه الصفحة بلغات أخرى

أسئلة شائعة

كيف أُدخل مؤشري إلى الرسم؟
احفظه، ثم فعّل Show on the chart. فينضمّ إلى لوحة المؤشرات في مجموعة «My scripts»، ويُفعَّل ويُعطَّل من هناك كأي مؤشر آخر.
هل يستطيع سكربت واحد إعادة عدّة مخرجات؟
نعم. فـ compute() تعيد مصفوفة، والمؤشرات المدمجة تفعل الشيء نفسه — فـ VWAP مثلًا يصدر مخرَج bands ومخرَج line.
لماذا يغيب متوسّطي المتحرّك في بداية الرسم؟
لأن قيم الإحماء تُعاد بقيمة null، وnull ترفع القلم. فالرسم عبرها كان سيخترع بيانات لم تنتجها الفترة بعد.

اقرأ أيضًا