پاین اسکریپت (Pine Script) چیست؟ معرفی زبان برنامه نویسی پاین اسکریپت تریدینگ ویو
پاین اسکریپت Pine Script نام زبان برنامه نویسی است که توسط نرم افزار اختصاصی نمودار HTML5 TradingView استفاده می شود. زبان برنامهنویسی پاین اسکریپت (Pine Script) یک زبان برنامهنویسی تخصصی است که برای تحلیل و برنامهنویسی استراتژیها و اندیکاتورها در بازارهای مالی استفاده میشود. این زبان برنامهنویسی توسط تریدینگویو (TradingView) ایجاد شده است.
این زبان برنامه نویسی بسیار سبک، مبتنی بر Cloud است که خیلی پیچیده و سخت نیست. اما همچنان به شما اجازه می دهد تا کارهای قدرتمندی را با نمودارهای خود انجام دهید.
معرفی پاین اسکریپت (Pine Script)
Pine Script یک زبان برنامه نویسی است که توسط TradingView برای آزمایش استراتژی های معاملاتی و ایجاد اندیکاتورهای سفارشی ساخته شده است. شما میتوانید با ایجاد هشدارهای معاملاتی سفارشی، ابزارهای تجزیه و تحلیل و اسکریپتهای استراتژی، معامله (Trade) را بدون هیچ مشکلی شروع کنید. همه اینها به شما کمک میکنند نسبت به سایر معاملهگران برتری پیدا کنید. با Pine Script، مزیت خود را افزایش دهید و معامله خود را به سطح بالاتر ببرید. در ادامه دقیقتر و کاملتر در مورد این زبان برنامه نویسی توضیح خواهیم داد.
مقدمه ای بر پاین اسکریپت
تریدینگویو یک پلتفرم آنلاین برای تحلیل بازارهای مالی است. با استفاده از پاین اسکریپت (Pine Script) در تریدینگویو، کاربران میتوانند استراتژیهای معاملاتی خود را طراحی و پیادهسازی کنند. همچنین، این زبان برنامهنویسی امکان ساخت اندیکاتورهای سفارشی را نیز به کاربران میدهد.
TradingView زبان برنامه نویسی خود را به نام Pine Script توسعه داده است که به کاربران امکان می دهد شاخص های سفارشی طراحی کرده و آنها را روی سرورهای خود اجرا کنند. اکثر اندیکاتورهای داخلی TradingView با Pine، یک زبان سبک طراحی شده برای ایجاد شاخصها و استراتژیها، توسعه داده شدهاند. یکی از بهترین ابزارهای تحلیل نمودار است و به طور گسترده در سطح جهانی استفاده می شود. Pine Script به معامله گران کمک می کند تا در زمان آزمایش و تجزیه و تحلیل صرفه جویی کنند، از فرصت های از دست رفته اجتناب کنند، برتری خود را نسبت به بازارها بهبود بخشند، و در معاملات رقابتی باقی بمانند.
ویرایشگر Pine بخشی از پلتفرم نمودار آنلاین TradingView است و به شما امکان می دهد کد اسکریپت شخصی خود را ایجاد کنید. این زبان بر اساس زبان خاصی نیست، اما اگر از پایتون استفاده کرده باشید، تمایل دارید آن را به سرعت انتخاب کنید و شباهت ها را مشاهده کنید.
مزایای Pine Script چیست؟
از آنجایی که Pine Script دارای بیش از 10 میلیون کاربر در TradingView است، به یک ابزار بسیار محبوب در بین معامله گران تبدیل شده است. این تقاضا به طور طبیعی منجر به یادگیری بیشتر مبتدیان و برنامه نویسان پیشرفته شده است که چگونه از این ابزار حیاتی استفاده کنند.
امکانات پاین اسکریپت (Pine Script)
- رسم نمودارهای دقیق
- ایده های استراتژی بک تست
- فعال کردن هشدارهای قیمت
- مدیریت موقعیت های معاملاتی
- اصلاح شاخص های موجود
- ابزارهای حرفهای بک تست
- اندیکاتورها و نوسانگرهای سفارشی ایجاد کنید
- با کلیک کردن بر روی یک دکمه، استراتژیها را بر روی صدها معامله در چند ثانیه آزمایش کنید
- افزایش کارایی و سرعت بک تست
- و …
دادههای داخلی Pine Script میتواند برای معاملهگران بسیار سودمند باشد زیرا آزمایش استراتژیها یا ایجاد شاخصها به زبانهای دیگر مستلزم یافتن منبع دادههای شماست. همچنین یادگیری آن فوق العاده آسان است زیرا زبان اسکریپت Pine خوانا و ساده تر از سایر زبان های برنامه نویسی است. TradingView همچنین پایگاه کاربری و کتابخانه گسترده ای را فراهم می کند که دسترسی به کدهای منبع باز را فراهم می کند، که یک راه عالی برای یادگیری برنامه نویسان تازه کار است.
راهنمای کامل کاربر (Pine Script® v5 User Manual)
چگونه می توانم از پاین اسکریپت (Pine Script) استفاده کنم؟
منابع متعددی وجود دارد که می تواند به شما کمک کند تا استفاده از Pine Script خود را شروع کنید. TradingView یک کتابچه راهنمای معمول را ارائه می دهد که مستندات کاملی است که ویژگی های اصلی، زبان و ساختار زبان، Pine Script و نحوه کار آن با اسکریپت های انجمن را شرح می دهد. آنها همچنین موارد مورد نیاز مرجع را ارائه می دهند که یک مرجع سریع برای همه توابع، متغیرها و کلمات کلیدی موجود در Pine است، با مثال هایی در مورد نحوه استفاده از هر کدام.
اصول اولیه Pine Script
برای استفاده از این اسکریپت باید حتما با مفاهیم ابتدایی کدنویسی آشنایی داشته باشید. در این مقاله اصول اولیه زبان برنامه نویسی Pine Script برای پلتفرم TradingView را به شما معرفی می کنیم. ما قصد داریم روی Pine Script v5 تمرکز کنیم زیرا جدیدترین تکرار این زبان است.
ویرایشگر پاین (Pine Editor)
می توانید کد را مستقیماً در ویرایشگر کد در پلتفرم TradingView که به عنوان ویرایشگر Pine شناخته می شود یا در هر ویرایشگر متنی که ترجیح می دهید بنویسید یا کپی کنید. در نهایت کد شما باید مستقیماً روی پلتفرم استفاده شود. برای استفاده از ویرایشگر Pine، از هر نمودار TradingView بر روی تب “Pine Editor” که در پایین پنجره قرار دارد، همانطور که در تصویر زیر مشاهده می شود، کلیک کنید. Pine Editor در عکس نشان داده شده است.
اگر انتخاب کنید از ویرایشگر متن دیگری استفاده کنید، همچنان باید کد خود را در نهایت در ویرایشگر Pine وارد کنید تا آن را در پلتفرم TradingView ذخیره کنید.
پس از کلیک بر روی آن، ویرایشگر پاین به شکل زیر برای شما نمایش داده میشود:
ناحیه دایره ای سبز رنگ جایی است که کد خود را وارد می کنید. همانطور که می بینید یک الگوی پیش فرض به طور خودکار هنگام باز کردن ویرایشگر ارائه می شود.
ناحیه زرد، منویی از برخی ویژگیهای مفید است که میتوانید کار خود را ذخیره کنید، نشانگرهایی را که اخیراً روی آنها کار کردهاید باز کنید و امکاناتی دیگر…
نمونه کد پاین اسکریپت: توضیح خط به خط
//@version=5
indicator("MACD #1")
fast = 12
slow = 26
fastMA = ta.ema(close, fast)
slowMA = ta.ema(close, slow)
macd = fastMA - slowMA
signal = ta.ema(macd, 9)
plot(macd, color = color.blue)
plot(signal, color = color.orange)
این نشان دهنده مثالی است که در راهنمای کاربر پیوند داده شده در بالا ارائه شده است. بیایید ببینیم چگونه کار می کند.
خط اول:
//@version=5
این خط به سادگی به ویرایشگر Pine می گوید که از Pine Script v5 استفاده خواهید کرد. این مهم است زیرا Pine Script با هر نسخه جدید تغییر می کند و TradingView باید بداند از کدام نسخه استفاده می کنید تا بداند کد خود را به درستی نوشته اید یا خیر. در صورت تمایل میتوانید از نسخههای قبلی Pine Script استفاده کنید، اما کدی که امروز در اینجا استفاده میکنیم اجرا نمیشود.
خط 2:
indicator(“MACD #1”)
بخش ()indicator این خط چیزی است که به عنوان تابع شناخته می شود. شما می توانید به دلیل وجود () در پایان بگویید که این یک تابع پاین اسکریپت است.
تابع یک بلوک کد است که کار خاصی را انجام می دهد. عملکردی را انجام می دهد. معمولاً این کاری است که می خواهید بیش از یک بار انجام دهید و با تعریف یک تابع برای انجام کار، می توانید با فراخوانی دوباره و دوباره تابع در زمان صرفه جویی کنید. ()indicator یک تابع داخلی در زبان Pine Script است، بنابراین ما نمیتوانیم کد دقیقی را که در پشت صحنه استفاده میکند، ببینیم، اما میتوانیم اسناد را بخوانیم تا ببینیم چگونه کار میکند.
در این مورد تابع ()indicator با شاخص “MACD #1” ارسال می شود. اگر تابع ()indicator را در کتابچه راهنمای مرجع جستجو کنید، می بینید که وقتی توسعه دهندگان، آن را در زبان Pine Script قرار دادند، به گونه ای ساخته شده بود که بتواند پارامترهای مختلفی را بپذیرد. اکثر این پارامترها اختیاری هستند، اما یک پارامتر مورد نیاز است: عنوان.
وقتی “MACD #1” را به تابع وارد می کنیم، می گوییم: “می خواهم عنوان این اندیکاتور “MACD #1” باشد.
به طور خلاصه، این خط به TradingView می گوید که ما در حال ایجاد یک اندیکاتور جدید هستیم و آن را “MACD #1” می نامند.
نکته مثبت (برای زبان آموزان پیشرفته):
overlay یک پارامتر اختیاری در تابع ()indicator است. اگر overlay = true را به عنوان اندیکاتور (“MACD #1″، overlay = true) ارسال کنید، اندیکاتور شما در همان پنجرهی نمودار شما ظاهر می شود. در غیر این صورت overlay به طور پیشفرض روی false تنظیم شده است و نشانگر شما در بخش خود در نمودار شما ظاهر میشود.
این نکته برای اندیکاتوری مانند MACD خیلی مفید نیست، اما برای مثال اگر بخواهید میانگین متحرک قیمت فعلی را نمایش دهید مفید است.
خط 3 و 4:
fast = 12
slow = 26
این خطوط هر کدام یک متغیر جدید را مقداردهی اولیه می کنند. اکنون کد ما می داند که ما دو چیز جدید داریم که هر کدام یک مقدار را ذخیره می کنند. یکی از آنها سریع و دیگری کند نامیده می شود. fast اکنون مقدار 12 را ذخیره می کند. slow اکنون مقدار 26 را ذخیره می کند.
این بدان معناست که اگر در آینده از سریع (fast) و آهسته (slow) در کد خود استفاده کنیم، TradingView متوجه خواهد شد که در واقعی قصد داریم از مقادیری استفاده کنیم که آن متغیرها نشان می دهند. این زمانی به کار می آید که مجبور باشید بارها از یک مقدار استفاده کنید. زمانی که می خواهید کد شما خواناتر باشد، و در موقعیت های پیچیده تری که مقدار نگهداشته شده در یک متغیر به راحتی تعریف نمی شود.
خط 5 و 6:
fastMA = ta.ema(close, fast)
slowMA = ta.ema(close, slow)
در اینجا ما نمونه های عالی از تمام مفاهیمی را که به تازگی پوشش داده ایم می بینیم.
fastMA و slowMA هر دو متغیرهای جدید هستند. در هر دو مورد، “MA” مخفف میانگین متحرک است. این متغیرها چه مقداری دارند؟ اگر به سمت راست علامت تساوی نگاه کنیم، تابعی را می بینیم که فراخوانی می شود. ()ta.ema. این قالب برای ما کمی جدید است. اما این نمونه دیگری از عملکرد است که توسط توسعه دهندگان در زبان Pine Script ساخته شده است.
در این مورد ما قسمت ta از فراخوانی تابع و ()ema را داریم که به ترتیب مخفف Technical Analysis (تحلیل تکنیکال) و Exponential Moving Average (نمای میانگین متحرک) هستند. دلیل این امر این است که در Pine Script، نوعی “زیربخش” زبان برنامه نویسی وجود دارد که به آن ta می گویند. آن «زیربخش» (نه یک اصطلاح فنی) توابع خاص خود را دارد که به آن تعلق دارند، و وقتی میخواهیم از آنها استفاده کنیم باید به TradingView اطلاع دهیم که از تابعی از آن قسمت از زبان استفاده میکنیم.
بنابراین در این مورد می خواهیم از تابع ema() استفاده کنیم. این تابع به بخش ta از Pine Script تعلق دارد، بنابراین زمانی که میخواهیم آن را فراخوانی کنیم، باید ()ta.ema را مشخص کنیم.
برای متغیر fastMA مقدار ta.ema (close, fast) را به آن اختصاص می دهیم.
برای متغیر slowMA مقدار ta.ema(close, slow) به آن اختصاص می دهیم.
همانطور که می بینیم، تابع ema() به دو پارامتر نیاز دارد. در کتابچه راهنمای مرجع پاین اسکریپت می بینیم که به یک منبع و طول نیاز دارد. وقتی مقادیری را به تابع ارسال می کنیم، می گوییم که در حال ارسال آرگومان هستیم. ما از نزدیک به عنوان منبع (منبع داده) عبور می کنیم و به عنوان طول به سرعت یا آهسته عبور می کنیم.
در هر دو مورد بسته یک متغیر داخلی در Pine Script است که برابر است با مقدار بسته شدن آخرین نوار کامل یا آخرین قیمت معامله شده اگر با نواری کار میکنید که هنوز بسته نشده است. به یاد داشته باشید، سریع و آهسته مقادیر 12 و 26 را همانطور که در خطوط 3 و 4 نشانگر خود تعریف کردیم ذخیره می کنند. بنابراین وقتی سریع و آهسته عبور می کنیم در واقع از مقادیر 12 و 26 عبور می کنیم.
fastMA اکنون مقدار بازگشتی فراخوانی تابع ta.ema(close, fast) را ذخیره می کند. یعنی مقداری را ذخیره میکند که آن تابع پس از پردازش دادهها با پارامترهایی که به عنوان شاخص ارسال کردهایم، به ما بازگرداند.
به همین ترتیب slowMA مقدار بازگشتی فراخوانی تابع ta.ema(close, slow) را ذخیره می کند.
خط 7:
macd = fastMA - slowMA
اکنون مقدار متغیرها را می بینیم.
ما مقدار عددی را با مقادیر ذخیره شده در fastMA و slowMA انجام می دهیم. و نتیجه را به متغیر macd اختصاص می دهیم. در این مورد تفاوت بین fastMA و slowMA است.
این جالب است زیرا ما این مقادیر را داریم که دائماً توسط توابع در خطوط 5 و 6 به روز می شوند و سپس از مقادیر دائماً در حال تغییر برای محاسبه مقدار جدیدی استفاده می کنیم که آن را macd می نامیم. اکنون به راحتی می توان فهمید که برنامه نویسی چقدر می تواند مفید و قدرتمند باشد. حتی این نوع محاسبه ساده برای یک انسان با این سرعت غیرممکن است.
خط 8:
signal = ta.ema(macd, 9)
اکنون در حال محاسبه یک مقدار جدید هستیم که آن را سیگنال می نامیم. برای به دست آوردن این مقدار، ما دوباره تابع ()ta.ema را فراخوانی می کنیم. فقط این بار مقدار macd را که در خط 7 به عنوان منبع داده محاسبه کردیم، عبور می دهیم و طول 9 نقطه را به آن می دهیم (منظور کندل ها میباشد). بنابراین اساساً ما میانگین متحرک نمایی MACD را در 9 کندل آخر محاسبه می کنیم.
خط 9 و 10:
plot(macd, color = color.blue)
plot(signal, color = color.orange)
این خطوط تابع توکار () plot را فراخوانی میکنند که به TradingView میگوید چه چیزی را در نمودارهای ما نمایش دهد. در اینجا می بینیم که مقدار macd را به رنگ آبی و مقدار سیگنال را به رنگ نارنجی نمایش می دهیم.
color یک پارامتر اختیاری است و ()plot میتواند بسیاری از پارامترهای اختیاری دیگر را نیز داشته باشد، بنابراین وقتی میخواهیم از یک پارامتر اختیاری خاص استفاده کنیم، میتوانیم آن را به صراحت با تعریف آن با نحوی مانند color = color.blue تعریف کنیم.
نتیجه گیری
شما به تازگی اولین اندیکاتور خود را در Pine Script تکمیل کرده اید. تنها چیزی که باقی می ماند این است که روی دکمه “افزودن به نمودار” (Add to Chart) در ناحیه دایره ای زرد رنگ کلیک کنید. همچنین میخواهید نشانگر خود را ذخیره کنید تا بتوانید در آینده دوباره از آن استفاده کنید. در واقع، MACD یک نشانگر داخلی در TradingView است، بنابراین شما فقط این کار را برای تست و تمرین انجام دادید، اما حداقل اکنون می دانید که چگونه کار می کند!
حتما در آینده آموزشهای بیشتری در مورد پاین اسکریپت (Pine Script) در آینده منتشر میکنیم.
سوالات متداول
ساخت استراتژی، ساخت اندیکاتور، تست کردن استراتژی، ساخت اعلان (Alert) بر روی اندیکاتور از کاراییهای مهم پاین اسکریپت است.
زبان برنامهنویسی پاین اسکریپت یک زبان برنامهنویسی تخصصی است که در بازارهای مالی استفاده میشود.
برای استفاده از Pine Script (پاین اسکریپت) باید حتما با مفاهیم ابتدایی کدنویسی آشنایی داشته باشید.