محدودیتها، امنیت و رفع خطا
چه چیزهایی پشتیبانی نمیشوند؟
«اسکریپت شخصی» زیرمجموعهای از Pine را پشتیبانی میکند (محاسبات و رسم). این موارد پشتیبانی نمیشوند و هنگام ذخیره خطای روشن میدهند (نه حذفِ بیصدا):
strategy.*(بکتست/سفارش) — این نسخه فقط اندیکاتور است، نه استراتژی.- رسمِ اشیاء آزاد:
box،label،table،line.new،polyline،linefill. request.*(خواندنِ نماد/تایمفریمِ دیگر از این راه).matrix.*.
سقفِ خروجیها
هر اسکریپت حداکثر میتواند ۸ خط + ۴ ستون + ۲ شکل + ۴ هشدار داشته باشد. اگر بیشتر شود، ادیتور خطا میدهد.
تایمفریمِ بالاتر (MTF)
اگر از ورودیِ تایمفریم استفاده کنید، تایمفریمِ بالاتر باید مضربِ صحیحِ تایمفریمِ چارت باشد و چارت درونروزی باشد؛ وگرنه خروجی خالی میشود.
مدلِ امنیتی (چرا خیالتان راحت باشد)
کدِ شما فقط در مرورگرِ خودتان و داخلِ یک محیطِ ایزوله (Web Worker) اجرا میشود. در این محیط، دسترسی به شبکه و ذخیرهسازی کاملاً بسته است — اسکریپت فقط میتواند روی دادهی کندلها حساب کند. اگر اسکریپتی خیلی کند شود یا حلقهی بیپایان داشته باشد، سیستم آن را متوقف میکند و پیامِ «اسکریپت بیش از حد کند است» میدهد. سرور هیچگاه کدِ شما را اجرا نمیکند؛ فقط آن را بهصورتِ متن ذخیره میکند.
خطاهای رایج
- «اسکریپت هیچ خروجیای رسم نمیکند» — دستکم یک
plot(...)لازم است. - «تابع یا شناسهی ناشناخته» — احتمالاً نامِ تابع اشتباه است یا جزوِ زیرمجموعهی پشتیبانیشده نیست.
- خطای نحوی — روی شمارهخط در پنلِ پایین کلیک کنید تا به همان خط در ادیتور بروید.
منبعباز و لایسنس
موتورِ اجرای این قابلیت متنباز (PineTS، لایسنس AGPL-3.0) است؛ سورس و جزئیاتِ لایسنس در صفحهی منبعباز/لایسنس در دسترس است.
سری «راهنمای اسکریپت شخصی» — بخش 6 از 6
دیدگاهها
برای ارسال دیدگاه وارد شوید.
پستهای مرتبط
اسکریپت شخصی چیست و چه کاری میتوانید بکنید؟
با «اسکریپت شخصی» میتوانید اندیکاتور دلخواهتان را با سینتکس سازگار با Pine بنویسید و روی چارت خودتان ببینید. در این بخش میبینیم دقیقاً چه کارهایی ممکن است.
اولین اندیکاتور: ساختار، indicator و plot
هر اسکریپت با //@version شروع میشود، یک indicator تعریف میکند و با plot خروجی میکشد. سادهترین اندیکاتور را با هم مینویسیم.
ورودیها و توابع آماده (input، ta، math)
با input دوره و رنگ را قابلتنظیم کنید و با ta.* و math.* دهها تابع آماده به دست بیاورید.