scripting
حدود العزل
ميزانيات المعالج والذاكرة، وما يمنعه VM البايت كود، وكيف تختار نوافذ أطول.
كل سكريبت يعمل داخل VM بايت كود بميزانيات صارمة للمعالج والذاكرة، تُفرض لكل تقييم. حلقة لا نهائية لن توقف التطبيق.
الميزانيات الافتراضية
| السطح | معالج لكل شمعة | سقف الذاكرة | |---|---|---| | Indicator (معاينة الرسم) | ٥٠ ميلي ث | ١٦ ميجا | | Alert (لكل تقييم) | ٥٠ ميلي ث | ١٦ ميجا | | Screener (لكل رمز) | ٢٠٠ ميلي ث | ٣٢ ميجا | | Drawing | ٥٠ ميلي ث | ١٦ ميجا | | Strategy (لكل شمعة) | ١٠٠ ميلي ث | ٣٢ ميجا | | Backtester (تشغيل كامل) | ٦٠ ث | ٢٥٦ ميجا | | عامل VPS (لكل تقييم) | ٢٠٠ ميلي ث | ٦٤ ميجا |
إن تجاوزت ميزانية، يقتل الـ VM التقييم ويبلّغ خطأ انتهاك العزل في محرر السكريبت. التقييمات اللاحقة تستمر.
القدرات الممنوعة
الـ VM لا يصل إلى:
- نظام ملفات المضيف.
- أي مقابس شبكة عشوائية. فقط الدوال المدمجة الموثوقة (مثل
notifyعلى قائمة Webhooks معروفة) تصل للشبكة. - الكود الأصلي. لا FFI.
- ساعة المضيف — السكريبتات تقرأ طوابع زمنية للشموع عبر
bar(N)، لاDate.now(). - حالة سكريبتات أخرى. كل سكريبت معزول.
الإلغاء
يمكن إلغاء سكريبت أثناء تقييمه:
- يغلق المستخدم الرسم أو يعدّل السكريبت أو يضغط زر الإيقاف.
- تنقضي ميزانية المعالج.
- لعامل السحابة: يطلق سقف الخسارة اليومي أو إيقاف إداري.
الإلغاء تعاوني — يحقن الـ VM نقاط فحص بين عمليات البايت كود، لذا حلقة لا نهائية محكمة تنتهي خلال ~١ ميلي ث من إشارة الإلغاء.
اختيار ميزانيات أطول
حسابات Pro يمكنها طلب ميزانيات موسّعة لسكريبتات معينة عبر بيانات وصفية في الملف:
// budget: cpu=500ms mem=128mb
تُراجَع الموافقة تلقائياً — إساءة الاستخدام تُخفّض الطلب.