آموزش انتشار کدهای Pine Script در تریدینگویو
وقتی یک اندیکاتور یا استراتژی را با پایناسکریپت در تریدینگویو کدنویسی میکنید، ممکن است بخواهید آن را فقط برای استفاده شخصی نگه دارید، با دوستان یا مشتریان خاص خود به اشتراک بگذارید، سورس کد را در اختیار دیگران قرار دهید یا حتی یک اندیکاتور را بهصورت عمومی منتشر کنید تا سایر کاربران تریدینگویو بتوانند آن را پیدا و استفاده کنند.
تریدینگویو برای هرکدام از این نیازها روشهای متفاوتی در اختیار برنامهنویس قرار میدهد. بنابراین قبل از انتشار یک اسکریپت، باید بدانید چه کسانی قرار است به آن دسترسی داشته باشند و آیا باید سورس کد را ببینند یا خیر.
در این آموزش با مراحل انتشار اسکریپت و مهمترین تفاوتهای روشهای مختلف انتشار در تریدینگویو آشنا میشویم.
قبل از انتشار اسکریپت چه کاری باید انجام دهیم؟
اولین مرحله برای انتشار یک اسکریپت این است که آن را در Pine Editor ذخیره کنید.
برای این کار، پس از نوشتن کد، یک نام برای اسکریپت انتخاب کرده و آن را ذخیره کنید. سپس باید اسکریپت را روی چارت اضافه کنید.
این مرحله اهمیت زیادی دارد؛ زیرا هنگام استفاده از گزینه Publish Script ، تریدینگویو بررسی میکند که اسکریپتی که قصد انتشار آن را دارید، در حال حاضر روی چارت قرار داشته باشد.
تنظیم چارت قبل از انتشار
تصویری که هنگام انتشار اسکریپت در صفحه آن نمایش داده میشود، بر اساس وضعیت چارت در زمان انتشار تعیین میشود.
بنابراین بهتر است قبل از انتخاب Publish Script، مواردی مانند نماد معاملاتی، تایمفریم، میزان بزرگنمایی، نوع نمایش نمودار، مقیاس چارت و اندیکاتورهای موجود روی چارت را به شکلی تنظیم کنید که برای معرفی اندیکاتور مناسب باشد. این تصویر میتواند اولین چیزی باشد که کاربر هنگام ورود به صفحه اسکریپت شما مشاهده میکند.
انتشار اسکریپت جدید یا بهروزرسانی اسکریپت قبلی
پس از انتخاب Publish Script، تریدینگویو امکان انتشار یک اسکریپت جدید یا بهروزرسانی اسکریپتی را که قبلاً منتشر کردهاید، در اختیار شما قرار میدهد.
Publish New Script
اگر اسکریپت را برای اولین بار منتشر میکنید، گزینه Publish New Script را انتخاب میکنید.
در این حالت میتوانید:
- نام اسکریپت را تعیین کنید.
- توضیحات مربوط به آن را بنویسید.
- Category مناسب را انتخاب کنید.
- Tagهای مرتبط را اضافه کنید.
- روش انتشار و سطح دسترسی را مشخص کنید.
Update Existing Script
اگر اسکریپتی را قبلاً منتشر کردهاید و اکنون نسخه جدیدی از کد را آماده کردهاید، بهتر است از گزینه Update Existing Script استفاده کنید.
در این حالت نسخه جدید بهعنوان یک Revision از اسکریپت قبلی منتشر میشود و ارتباط آن با نسخه قبلی حفظ خواهد شد.
بنابراین برای اصلاح و توسعه یک اسکریپت منتشرشده، نباید هر بار آن را بهعنوان یک اسکریپت کاملاً جدید منتشر کرد.
Public و Private؛ اولین انتخاب مهم
یکی از مهمترین تنظیمات هنگام انتشار، بخش Privacy است.
در این قسمت بهطور کلی دو گزینه اصلی وجود دارد:
- Public
- Private
Public
وقتی اسکریپت را به صورت عمومی منتشر میکنید، در فضای عمومی تریدینگویو قرار میگیرد و کاربران دیگر میتوانند آن را در میان اسکریپتها جستجو کنند.
این گزینه برای زمانی مناسب است که هدف شما این باشد که:
- اسکریپت توسط کاربران بیشتری دیده شود.
- در نتایج جستجوی تریدینگویو ظاهر شود.
- کاربران جدید با ابزار شما آشنا شوند.
- یک اندیکاتور عمومی در اختیار جامعه تریدینگویو قرار دهید.
اما عمومی بودن یک اسکریپت به این معنی نیست که هر نوع کدی را بدون محدودیت میتوان منتشر کرد.
اسکریپتهای Public توسط Moderators یا ناظران تریدینگویو بررسی میشوند و باید با قوانین انتشار این پلتفرم مطابقت داشته باشند.
به همین دلیل، عنوان، توضیحات، دستهبندی و محتوای اسکریپت اهمیت زیادی دارند.
نکته مهم درباره انتشار Public
اگر قصد دارید یک اندیکاتور را بهصورت عمومی منتشر کنید، بهتر است اسکریپت واقعاً ارزش استفاده برای سایر کاربران داشته باشد.
عنوان نباید بیش از حد عمومی یا گمراهکننده باشد و توضیحات نیز باید مشخص کند که اندیکاتور چه کاری انجام میدهد و چه کاربردی دارد.
همچنین استفاده از Category و Tagهای نامرتبط میتواند باعث ایجاد مشکل در فرآیند بررسی اسکریپت شود.
Private
در مقابل، اگر نمیخواهید اسکریپت در جستجوی عمومی تریدینگویو نمایش داده شود، میتوانید آن را به صورت Private منتشر کنید.
این حالت برای مواقعی مناسب است که مثلاً:
- اندیکاتور را برای مشتریان خاص توسعه دادهاید.
- میخواهید آن را با دوستان خود به اشتراک بگذارید.
- هنوز اسکریپت آماده انتشار عمومی نیست.
- قصد ندارید اسکریپت در فهرست عمومی تریدینگویو قرار بگیرد.
در این حالت، اسکریپت در جستجوی عمومی کاربران ظاهر نمیشود.
اما میتوانید لینک صفحه اسکریپت را برای فرد موردنظر ارسال کنید تا در صورت داشتن شرایط لازم بتواند به آن دسترسی پیدا کند.
Visibility؛ چه چیزی برای کاربر قابل مشاهده باشد؟
بعد از مشخص کردن عمومی یا خصوصی بودن، گزینه مهم دیگری برای دسترسی مخاطب به سورسکد وجود دارد.
این قسمت مشخص میکند کاربر تا چه اندازه به اسکریپت شما دسترسی داشته باشد.
سه حالت اصلی عبارتاند از:
- Open
- Protected
- Invite-only
تفاوت این سه حالت بسیار مهم است.
1. Open؛ دسترسی کامل به سورس کد
در حالت Open، کاربر علاوه بر استفاده از اندیکاتور، میتواند سورس کد Pine Script را نیز مشاهده کند.
به عبارت دیگر:
Use + View Source Code
در اختیار کاربر قرار میگیرد.
این حالت برای پروژههای Open Source بسیار مناسب است. اگر هدف شما آموزش Pine Script، اشتراکگذاری کد با جامعه برنامهنویسان یا ارائه یک نمونه کدنویسی باشد، Open گزینه مناسبی است.
در این حالت کاربر میتواند کد را مشاهده کرده و در صورت امکان آن را بررسی، یادگیری یا برای پروژههای دیگر استفاده کند.
یکی از نکات مهم این است که برای انتشار اسکریپت به صورت Open، حتی حسابهای پایه (رایگان) تریدینگویو نیز میتوانند این کار را انجام دهند.
2. Protected؛ استفاده بدون مشاهده سورس کد
حالت Protected برای زمانی مناسب است که میخواهید کاربران از اندیکاتور شما استفاده کنند، اما نمیخواهید سورس کد آن را ببینند.
در این حالت:
Use Script → Yes
View Source Code → No
کاربر اندیکاتور را روی چارت خود اجرا میکند، اما به کد Pine Script دسترسی ندارد.
این روش برای برنامهنویسانی که قصد ارائه یک اندیکاتور به مشتریان خود را دارند، بسیار کاربردی است؛ زیرا منطق داخلی برنامه از دید کاربر مخفی باقی میماند.
برای انتشار Protected، طبق توضیحات ویدئو، نیاز به سطح حساب بالاتر از Basic وجود دارد.
3. Invite-only؛ کنترل دقیق دسترسی کاربران
حالت Invite-only محدودترین سطح دسترسی را فراهم میکند.
در این حالت، صرفاً داشتن لینک اسکریپت کافی نیست.
کاربر:
- نمیتواند سورس کد را مشاهده کند.
- بدون اجازه صاحب اسکریپت نمیتواند از آن استفاده کند.
بنابراین صاحب اسکریپت میتواند مشخص کند کدام حساب تریدینگویو اجازه استفاده از اندیکاتور را داشته باشد.
این ویژگی برای فروش اشتراک اندیکاتورها و ارائه ابزارهای اختصاصی به مشتریان بسیار کاربردی است.
مقایسه سه حالت Visibility
| حالت | استفاده از اندیکاتور | مشاهده سورس کد | کنترل دسترسی |
|---|---|---|---|
| Open | ✅ | ✅ | کم |
| Protected | ✅ | ❌ | متوسط |
| Invite-only | فقط کاربران مجاز | ❌ | زیاد |
بنابراین اگر هدف شما آموزش و اشتراک کد باشد، Open مناسبتر است.
اگر میخواهید کاربران از اندیکاتور استفاده کنند ولی کد را نبینند، Protected انتخاب مناسبی است.
و اگر میخواهید دسترسی هر کاربر را بهصورت جداگانه کنترل کنید، Invite-only بهترین گزینه است.
مدیریت دسترسی در Invite-only
یکی از قابلیتهای مهم Invite-only، امکان مدیریت کاربران است.
فرض کنید یک مشتری قصد استفاده از اندیکاتور شما را دارد.
ابتدا کاربر باید نام کاربری TradingView خود را در اختیار شما قرار دهد.
سپس از بخش Manage Access میتوانید گزینه Add New User را انتخاب کرده و نام کاربری او را وارد کنید.
پس از پیدا کردن حساب موردنظر، میتوانید دسترسی او را فعال کنید.
نکته مهم این است که میتوانید برای دسترسی کاربر تاریخ انقضا نیز تعیین کنید.
برای مثال میتوان دسترسی را برای یک ماه، چند ماه، تا یک تاریخ مشخص یا بدون تاریخ انقضا فعال کرد.
این قابلیت برای مدلهای اشتراکی بسیار مفید است.
برای مثال، اگر یک کاربر اشتراک یکماهه خریداری کرده باشد، میتوانید دسترسی او را فقط برای همان دوره فعال کنید.
پس از پایان مدت اشتراک نیز میتوان دسترسی او را حذف کرد یا تاریخ آن را تغییر داد.
حذف یا لغو دسترسی کاربران
در بخش Manage Access فهرست کاربرانی که به اسکریپت دسترسی دارند قابل مشاهده است.
برای هر کاربر میتوانید وضعیت دسترسی و تاریخ پایان آن را بررسی کنید.
در صورت نیاز میتوان دسترسی یک کاربر را حذف کرد.
پس از حذف دسترسی، کاربر دیگر قادر به استفاده از اسکریپت Invite-only نخواهد بود.
بنابراین این سیستم امکان مدیریت نسبتاً دقیقی برای ارائه اندیکاتورهای اشتراکی فراهم میکند.
Author’s Instructions؛ چگونه کاربر با شما ارتباط برقرار کند؟
در زمان انتشار اسکریپت، مخصوصاً در حالت Invite-only، ممکن است بخواهید به کاربر توضیح دهید برای دریافت دسترسی چه کاری باید انجام دهد.
برای این منظور میتوانید از بخش Author’s Instructions استفاده کنید.
برای مثال میتوانید توضیح دهید:
- کاربر از چه طریقی با شما تماس بگیرد.
- از چه سایت یا ایمیلی استفاده کند.
- نام کاربری تریدینگویو خود را برای شما ارسال کند.
- چگونه درخواست فعالسازی بدهد.
این بخش در یک سیستم فروش یا ارائه اشتراک اهمیت زیادی دارد.
یک نکته مهم درباره Public و Invite-only
ممکن است تصور کنید اگر یک اسکریپت Public باشد، هر کسی میتواند از آن استفاده کند.
اما در حالت Invite-only، Public بودن صرفاً باعث میشود صفحه اسکریپت در فضای عمومی TradingView قابل مشاهده باشد؛ استفاده از آن همچنان نیازمند مجوز صاحب اسکریپت است.
بنابراین میتوان اسکریپت را به شکلی منتشر کرد که کاربران آن را ببینند، درباره آن اطلاعات کسب کنند و در صورت تمایل برای دریافت دسترسی با صاحب آن ارتباط برقرار کنند.
این مدل برای معرفی یک محصول تجاری بسیار کاربردی است.
یک روش جایگزین؛ استفاده از Password در کد
در ویدئوی مربوط به این آموزش، یک روش دیگر نیز برای ایجاد محدودیت دسترسی بررسی میشود.
در این روش، یک ورودی از نوع string در Pine Script ایجاد میشود و کاربر باید یک مقدار مشخص را وارد کند.
سپس برنامهنویس میتواند در منطق کد شرطی قرار دهد که فقط در صورت وارد کردن مقدار صحیح، خروجی اندیکاتور نمایش داده شود.
به عنوان یک مثال ساده، میتوان مفهوم زیر را پیادهسازی کرد:
Password = User Input
اگر Password صحیح بود:
اندیکاتور نمایش داده شود
در غیر این صورت:
چیزی نمایش داده نشود
به این ترتیب حتی اگر فردی به خود اندیکاتور دسترسی داشته باشد، بدون داشتن مقدار موردنظر نمیتواند خروجی آن را مشاهده کند.
البته این روش را نباید جایگزین یک سیستم واقعی کنترل دسترسی دانست. برای محصولات تجاری حساس، قابلیت Invite-only و مدیریت دسترسی TradingView راهکار اصولیتری است.
نکته بسیار مهم درباره لینک Protected
در حالت Protected باید توجه داشت که داشتن لینک اسکریپت میتواند برای استفاده دیگران کافی باشد.
بنابراین اگر هدف شما این است که فقط کاربران مشخصشده بتوانند از اندیکاتور استفاده کنند، Protected انتخاب مناسبی برای کنترل فردبهفرد کاربران نیست.
در چنین شرایطی Invite-only مزیت مهمی دارد؛ زیرا حتی اگر لینک اسکریپت در اختیار شخص دیگری قرار بگیرد، تا زمانی که حساب او توسط صاحب اسکریپت مجاز نشده باشد، امکان استفاده از اندیکاتور را نخواهد داشت.
مدیریت و ویرایش اسکریپت منتشرشده
پس از انتشار، میتوانید از پروفایل تریدینگویو خود وارد بخش Scriptهای منتشرشده شوید.
در این بخش امکان مدیریت اسکریپتها وجود دارد.
برای مثال میتوانید:
- توضیحات را ویرایش کنید.
- اسکریپت را مدیریت کنید.
- دسترسی کاربران را تغییر دهید.
- در صورت امکان اسکریپت را حذف کنید.
- نسخه جدیدی از کد را منتشر کنید.
اگر فقط توضیحات اسکریپت تغییر کرده باشد، میتوان اطلاعات مربوط به آن را ویرایش کرد.
اما اگر خود کد Pine Script تغییر کرده باشد، باید نسخه جدید کد را منتشر کرده و از گزینه Update Existing Script استفاده کنید.
هشدار مهم درباره حذف اسکریپت Public
یکی از نکات مهم مطرحشده در آموزش مربوط به حذف اسکریپت Public است.
پس از انتشار عمومی، تنها مدت محدودی (۱۵ دقیقه) برای حذف اسکریپت وجود دارد.
پس از آن، اگر اسکریپت مراحل بررسی و انتشار عمومی را پشت سر بگذارد، امکان حذف آن مانند یک اسکریپت معمولی وجود نخواهد داشت.
بنابراین قبل از انتشار عمومی باید با دقت بیشتری موارد زیر را بررسی کنید:
- کد نهایی باشد.
- عنوان درست باشد.
- توضیحات مناسب باشد.
- Category درست انتخاب شده باشد.
- Tagها مرتبط باشند.
- تصویر چارت مناسب باشد.
- هیچ اطلاعات حساس یا ناخواستهای در کد وجود نداشته باشد.
بنابراین بهتر است انتشار Public را به مرحلهای موکول کنید که از آماده بودن اسکریپت مطمئن هستید.
جمعبندی
انتشار یک اسکریپت Pine Script در TradingView فقط به معنای قرار دادن کد روی پلتفرم نیست؛ بلکه باید مشخص کنید چه کسی به اسکریپت دسترسی داشته باشد، چه چیزی ببیند و تا چه زمانی اجازه استفاده داشته باشد.
بهصورت خلاصه:
- Public برای معرفی و انتشار عمومی اسکریپت مناسب است.
- Private برای اشتراکگذاری محدود و غیرعمومی کاربرد دارد.
- Open اجازه مشاهده سورس کد را به کاربر میدهد.
- Protected امکان استفاده از اندیکاتور را بدون مشاهده سورس کد فراهم میکند.
- Invite-only امکان کنترل دقیق کاربران مجاز را فراهم میکند.
- Manage Access برای اضافه یا حذف کردن کاربران و تعیین مدت دسترسی استفاده میشود.
- Update Existing Script برای انتشار نسخههای جدید اسکریپت قبلی کاربرد دارد.
اگر هدف شما توسعه و فروش اندیکاتورهای تجاری است، معمولاً مهمترین تفاوتی که باید به آن توجه کنید تفاوت میان Protected و Invite-only است. Protected بیشتر برای مخفی نگه داشتن سورس کد مناسب است، در حالی که Invite-only امکان کنترل دقیقتری روی این موضوع فراهم میکند که چه حسابهایی اجازه استفاده از ابزار را داشته باشند.
در نهایت، قبل از انتشار هر اسکریپت، ابتدا مشخص کنید هدف شما آموزش و اشتراک کد، انتشار عمومی، ارائه به مشتری یا فروش اشتراک است؛ سپس مناسبترین ترکیب Privacy و Visibility را انتخاب کنید.