تا حالا شده یه کد پاین اسکریپت رو از یه سایت، کانال تلگرام یا گیتهاب کپی کنی و با ذوق و شوق توی ادیتور پیست کنی، اما دکمه اجرای کد رو که میزنی، با یه لیست طولانی از خطاهای قرمز رنگ روبهرو بشی؟ توی بیشتر مواقع، کدی که پیدا کردی هیچ غلط منطقی نداره، بلکه فقط با یک نسخه قدیمیتر پاین اسکریپت نوشته شده و پلتفرم نمیتونه دستورات اون رو با قوانین امروزی تطبیق بده.
پاین اسکریپت هم درست مثل تمام زبانهای برنامهنویسی دنیا به مرور زمان رشد کرده، منظمتر شده و امکانات جدیدی بهش اضافه شده. دونستن تفاوت ورژنهای پاین اسکریپت بهت کمک میکنه کدهای قدیمی رو خیلی راحت بفهمی، ارورهای رایج رو در چند ثانیه رفع کنی و اسکریپتهای جدیدت رو با آخرین استانداردهای رسمی بنویسی. توی این مطلب، مسیر تحول پاین اسکریپت از v4 تا v6 رو بررسی میکنیم.
مسیر تکامل پاین اسکریپت در یک نگاه
زبان پاین اسکریپت از زمان معرفی اولیه چندین بار بازطراحی شده تا از یک ابزار ساده محاسباتی، به یک زبان قدرتمند برای ساخت اندیکاتورها و استراتژیهای پیشرفته تبدیل بشه. تصویر زیر خط زمانی توسعه این نسخهها رو نشون میده:
نگاهی به این جدول زمانی بندازیم تا با فلسفه هر دوره آشنا بشیم:
- نسخههای ابتدایی (v1 تا v3): در سالهای اولیه معرفی شد و امکانات بسیار محدودی داشت. متغیرها ساده بودن، مدیریت آرایهها وجود نداشت و ساختارهای کنترلی مثل حلقهها بسیار سخت پیاده میشدن.
- نسخه ۴ (v4 در سال ۲۰۲۰): یک جهش بزرگ بود. پشتیبانی گستردهتر از انواع دادهها، ساختارهای شرطی غنیتر و طراحی بصری بهتر باعث شد جامعه برنامهنویسان به شکل گستردهای به این زبان رو بیارن.
- نسخه ۵ (v5 در سال ۲۰۲۱): نسخه ساختاریافته نامیده شد. بزرگترین تغییر، دستهبندی توابع با پیشوند (Namespace)، اضافه شدن کتابخانهها و یکپارچهسازی دستورات بود تا خوانایی کدها چند برابر بشه.
- نسخه ۶ (v6 در سال ۲۰۲۴): مدرنترین نسخه فعلی است که روی افزایش چشمگیر سرعت محاسبات، بهینهسازی حافظه، مدیریت دقیقتر مقادیر بولی و فرمتبندی پیشرفته متن تمرکز کرده است.
خط حیاتی ورژن: اگر این خط نباشد چه اتفاقی میافتد؟
در خط اول هر کد پاین اسکریپت، عبارتی شبیه به //@version=6 یا //@version=5 قرار داره. شاید فکر کنی این خط فقط یک کامنت ساده است چون با دو تا اسلش شروع شده، اما در واقع یک دستور مستقیم به کامپایلره. اگر این خط رو از بالای کد پاک کنی، تریدینگ ویو به طور پیشفرض فرض میکنه کد تو مربوط به نسخه ۱ هست و با قوانین باستانی سال ۲۰۱۸ اجراش میکنه؛ نتیجه هم فوران ارورهای عجیب و غریبه. پس همیشه اولین خط کدت رو بررسی کن.
مقایسه عملی کدها: چه چیزهایی در نسخه ۵ و ۶ عوض شد؟
برای اینکه عمق تغییرات رو لمس کنی، بیا یک کد یکسان رو در دو دوره متفاوت مقایسه کنیم. تصویر زیر دو نسخه از یک اسکریپت ساده رو در محیط پاین ادیتور کنار هم نشون میده:
تفاوتهای اصلی در این مراحل و ساختارها خلاصه میشن:
- تغییر عنوان اصلی برنامه: در نسخه ۴ برای اندیکاتور از دستور
study()استفاده میشد، اما از نسخه ۵ به بعد دستور استانداردindicator()جایگزین شد. - اضافه شدن پیشوند به توابع محاسباتی: در گذشته توابع فنی پراکنده بودن. مثلاً تابع میانگین متحرک به صورت
sma()صدا زده میشد، اما در نسخههای جدید همه توابع تحلیلی به کتابخانهtaرفتن و به شکلta.sma()نوشته میشن. - حذف آرگومان شفافیت (transp): در نسخه ۴ پارامتری به نام
transp=50داخل تابع رسم وجود داشت. این پارامتر حذف شد و ساختار شفافیت به تابع مدرنcolor.new()منتقل شد تا رنگها انعطاف بیشتری داشته باشن.
برای درک بهتر، ابتدا شکل کد در نسخه ۴ رو ببین:
//@version=4
study("My Script", overlay=true)
mySma = sma(close, 14)
plot(mySma, color=color.red, transp=50)
و حالا معادل استاندارد همین کد در نسخه ۵ و ۶ رو بررسی کن:
//@version=6
indicator("My Script", overlay=true)
mySma = ta.sma(close, 14)
plot(mySma, color=color.new(color.red, 50))
علاوه بر این موارد، تابع معروف دریافت داده از تایمفریمهای دیگر یعنی security() هم تغییر کرد و به فضای نام شبکه منتقل شد و حالا با دستور request.security() کار میکنه. همچنین پارامترهای ورودی که قبلاً با input() ساده تعریف میشدن، حالا از طریق توابع اختصاصی مثل input.int() یا input.string() مقداردهی میشن که توی راهنمای تنظیمات اینپوت اندیکاتورها تمام جزییاتش رو توضیح دادیم.
امکانات اختصاصی نسخه ۶
نسخه ۶ آخرین دستاورد توسعهدهندگان پاین اسکریپته. این نسخه قابلیتهایی مثل بهینهسازی هوشمند تایپهای داده سفارشی (UDT)، توابع پیشرفته مدیریت متن و رشتهها، بهبود سرعت پردازش محاسبات سنگین روی کندلهای گذشته و سازگاری کامل با استراتژیهای پیچیده رو به همراه آورده. برای مقایسه خروجی اندیکاتورها مثل میانگین متحرک ساده این نسخه سبکترین و بهینهترین مصرف حافظه رو ارائه میده.
چطور کدهای قدیمی را آپدیت کنیم؟
خوشبختانه برای تبدیل کدهای قدیمی نیاز نیست همه چیز رو دستی از اول تایپ کنی. پاین ادیتور ابزار تبدیل خودکاری داره که با زدن چند دکمه، کدهای v4 رو به v5 ارتقا میده. آموزش گامبهگام این فرآیند رو میتونی توی مقاله آپدیت کدهای قدیمی پاین اسکریپت بخونی.
چکلیست طلایی کار با ورژنهای پاین اسکریپت
قبل از اجرای اسکریپت، این موارد رو بررسی کن:
- [ ] آیا در خط اول کد، عبارت //@version به درستی نوشته شده است؟
- [ ] آیا توابع به کار رفته در کد با نسخه اعلام شده همخوانی دارند؟
- [ ] آیا اندیکاتور شما روی چارت با سرعت مناسب و بدون کندی لود میشود؟
- [ ] آیا در صورت نیاز از ساختارهای مدرنتر پاین اسکریپت استفاده کردهاید؟
برای تمرین، یه کد از اسکریپتهای باز پیدا کن و تفاوت توابع نسخهها رو بسنج. این کدها رو میتونی توی پاین ادیتور چارت تریدرفا هم پیاده کنی و با دکمهی «افزودن به چارت» در هر دو نسخه ۵ و ۶ خروجیش رو ببینی. این شناخت دقیق بهت کمک میکنه بدون ترس از ارور، هر اسکریپتی رو به دلخواه شخصیسازی کنی.
برای بیان دیدگاه وارد شوید
با حساب تریدرفا میتوانید امتیاز بدهید، دیدگاه بنویسید و به پرسشهای دیگران پاسخ دهید. ثبتنام چند ثانیه بیشتر طول نمیکشد.
هنوز نظری ثبت نشده
اولین نفری باشید که دیدگاهش را مینویسد.