آیا تا به حال به این فکر کردهاید که بتوانید اندیکاتور معاملاتی خودتان را طراحی کنید؟ در تحلیل تکنیکال، شخصیسازی اندیکاتورها میتواند مزیت رقابتی قابل توجهی برای هر تریدر ایجاد کند. «ساخت اندیکاتور در تریدینگ ویو» با زبان پاین اسکریپت (Pine Script)، یکی از محبوبترین روشهای پیادهسازی استراتژیهای تحلیلی اختصاصی به شمار میرود. در این مقاله بهصورت گامبهگام یاد میگیریم چگونه یک اندیکاتور اختصاصی بسازیم، کد آن را بنویسیم، روی نمودار اجرا کنیم و در نهایت با دیگران به اشتراک بگذاریم.
- پاین اسکریپت یک زبان برنامهنویسی اختصاصی برای تریدینگ ویو است که برای ساخت اندیکاتورها و استراتژیهای سفارشی طراحی شده است.
- ساخت اندیکاتور در این زبان، فرآیندی گام به گام از ایجاد کد اولیه تا نمایش گرافیکی و تنظیمات پیشرفته دارد که حتی برای افراد با دانش ابتدایی کدنویسی نیز امکانپذیر است.
- با استفاده از این زبان میتوان آلارام هشدار (Alert) ایجاد کرد، اندیکاتور را شخصیسازی کرد و آن را به صورت عمومی یا خصوصی با دیگران به اشتراک گذاشت.
پاین اسکریپت (Pine Script) چیست و چه کاربردی دارد؟
پاین اسکریپت (Pine Script) زبان برنامهنویسی اختصاصی پلتفرم تریدینگ ویو (TradingView) است که برای ساخت اندیکاتورها، استراتژیها و هشدارهای معاملاتی طراحی شده. این زبان سبک، ساده و بهینهسازیشده برای تعامل با دادههای چارت است و به کاربران اجازه میدهد ابزارهای تحلیل تکنیکال دلخواه خود را با انعطاف بالا ایجاد کنند.
برخلاف زبانهای عمومی مثل پایتون یا جاوا، پاین اسکریپت مستقیما با کندلها، تایم فریمها و قیمتها سر و کار دارد. از همین رو، کاربرد آن برای ساخت اندیکاتورهایی مثل مووینگ اوریج، MACD، RSI و یا حتی الگوریتمهای پیچیده سیگنالدهی، بسیار رایج و موثر است. پاین اسکریپت در زمینه نوشتن کد برای تحلیل تکنیکال سریعتر و بهینهتر از زبانهای عمومی است.
چرا تریدینگ ویو برای ساخت اندیکاتور مناسب است؟
پلتفرم تریدینگ ویو بهدلیل رابط کاربری گرافیکی قدرتمند، اجرای سریع کد و پشتیبانی از جامعه فعال کاربران، محیطی عالی برای طراحی و پیادهسازی اندیکاتورهای شخصی محسوب میشود.
برخی مزایای کلیدی تریدینگ ویو برای توسعه اندیکاتور عبارتند از:
- اجرای زنده و فوری کدها روی نمودار بدون نیاز به نصب هیچ نرمافزاری؛
- محیط Pine Editor ساده و قابل فهم؛
- کتابخانه غنی از مثالها و اسکریپتهای عمومی؛
- دسترسی مستقیم به دادههای کندلی، اندیکاتورها و قیمتها؛
- امکان تست استراتژی با دادههای گذشته و بررسی کارایی آن.
همچنین تریدینگ ویو این قابلیت را دارد که اندیکاتورهای ساخته شده را به صورت عمومی، خصوصی یا فقط قابل اشتراکگذاری منتشر کند. همین انعطاف پذیری باعث شده افراد زیادی از جمله برنامهنویسان حرفهای، تریدرهای خرد و تحلیلگران بازار، از آن برای توسعه ایدههای معاملاتی استفاده کنند.
برخلاف بسیاری از زبانهای اسکریپتنویسی، پاین اسکریپت به طور پیشفرض دادهها را به صورت سری زمانی مدیریت میکند که برای تحلیل تکنیکال یک مزیت منحصربهفرد است.
مراحل ساخت اندیکاتور در تریدینگ ویو با استفاده از پاین اسکریپت
برای ساخت یک اندیکاتور سفارشی در تریدینگ ویو، نیاز به طی کردن یک مسیر مشخص از مرحله ایجاد اسکریپت تا اجرای آن روی نمودار وجود دارد. زبان Pine Script به گونهای طراحی شده که حتی کاربران با دانش ابتدایی کدنویسی هم بتوانند ایدههای تحلیلی خود را پیادهسازی کنند. در ادامه این بخش، گامهای اصلی طراحی یک اندیکاتور با این زبان را به صورت دقیق و کاربردی بررسی خواهیم کرد.
ایجاد یک اسکریپت جدید در محیط Pine Editor
برای شروع باید وارد محیط Pine Editor در پنل تریدینگ ویو شوید. این بخش معمولا در پایین صفحه دیده میشود. مراحل کار به شرح زیر است:
- ورود به تریدینگ ویو و باز کردن چارت موردنظر: برای شروع، ابتدا وارد حساب کاربری خود در پلتفرم تریدینگ ویو شوید. سپس از نوار جستجو، نماد معاملاتی مورد نظر خود را انتخاب کرده و چارت آن را باز کنید. پیشنهاد میشود از حالت تمامصفحه استفاده کنید تا فضای کاری بهینهتری داشته باشید.

- کلیک روی گزینه «Pine Editor» در پایین صفحه: در پنل پایینی تریدینگ ویو، بخشی بهنام «Pine Editor» وجود دارد که محیط برنامهنویسی این پلتفرم است. با کلیک روی آن، محیط نوشتن کد باز میشود. این بخش، نقطه شروع طراحی و تست اندیکاتور اختصاصی است.

- انتخاب «New Script» برای ساخت فایل جدید: پس از ورود به Pine Editor، از نوار بالایی گزینه «New» یا «New Script» را انتخاب کنید. با این کار، یک قالب اولیه خالی برای نوشتن اسکریپت باز میشود. در این مرحله میتوانید نام دلخواهی برای اندیکاتور خود در نظر بگیرید.

- نوشتن کد اولیه (مثلا نمایش یک میانگین متحرک ساده): در فایل اسکریپت جدید، برای شروع بهتر است یک کد ساده مثل نمایش میانگین متحرک ۱۴ روزه را بنویسید. کافیست کد زیر را در محیط Pine Editor وارد کنید:
//@version=5
indicator(“SMA 14”, overlay=true)
smaLine = ta.sma(close, 14)
plot(smaLine, color=color.blue)
این کد یک اندیکاتور با نام «SMA 14» ایجاد کرده و میانگین قیمت بستهشدن در ۱۴ کندل گذشته را روی نمودار رسم میکند.

- ذخیره و اجرای اسکریپت با کلیک روی «Add to chart»: پس از اتمام کدنویسی، روی آیکون ذخیره در بالای پنجره کلیک کرده و نام اندیکاتور را وارد کنید. سپس با زدن دکمه «Add to chart»، خروجی کد بلافاصله روی نمودار ظاهر خواهد شد. این مرحله نشان میدهد که کد بدون خطا اجرا شده است.

با این مراحل ساده، اولین قدم برای طراحی اندیکاتور اختصاصی برداشته میشود و میتوان نتایج آن را بلافاصله روی نمودار دید.
ساختار کلی یک کد اندیکاتور در Pine
کدهای اندیکاتور در پاین اسکریپت ساختاری مشخص دارند. معمولا با تعریف نسخه اسکریپت و سپس ورودیها، محاسبات و در نهایت توابع ترسیم آغاز میشوند. مثال زیر را بررسی کنید:
//@version=5
indicator(“SMA Example”, overlay=true)
smaValue = ta.sma(close, 14)
plot(smaValue, color=color.blue)
در این کد، ابتدا عنوان و مشخصات اندیکاتور تعیین شده، سپس با استفاده از تابع ta.sma میانگین متحرک محاسبه شده و در نهایت با plot روی چارت نمایش داده شده است. این ساختار پایه بسیاری از اندیکاتورها را تشکیل میدهد.
اندیکاتورهای ساخته شده با پاین اسکریپت قابلیت تبدیل به استراتژیهای بک تستپذیر دارند که تریدر را از نیاز به ابزارهای جانبی بینیاز میکند.
ذخیره و اجرای اندیکاتور روی چارت
بعد از نوشتن کد و اجرای اولیه، میتوان اندیکاتور را ذخیره کرد تا در دفعات بعد نیز قابل استفاده باشد. برای این کار:
- در Pine Editor، روی آیکون ذخیره کلیک کنید.
- نام مناسبی برای اندیکاتور وارد کنید.
- با زدن دکمه «Add to chart»، آن را روی نمودار مشاهده خواهید کرد.

در صورت نیاز میتوانید چندین بار کد را ویرایش کرده و تاثیر آن را به صورت زنده بررسی نمایید.
مفاهیم پایه در برنامهنویسی ساخت اندیکاتور با پاین اسکریپت
برای نوشتن هر اندیکاتور در پلتفرم تریدینگ ویو، ابتدا باید با اصول اولیه برنامهنویسی در زبان پاین اسکریپت (Pine Script) آشنا شد. این مفاهیم شامل نحوه تعریف متغیرها، نوشتن شروط و استفاده از ساختارهای تکرار است. پاین اسکریپت به دلیل طراحی ساده و کاربردی خود، امکان ساخت اسکریپتهای تحلیلی را برای کاربران در هر سطحی فراهم کرده است. در ادامه، این مفاهیم را بهصورت کاربردی و قابل فهم مرور میکنیم.
تعریف متغیرها، شروط و حلقهها
در پاین اسکریپت، متغیرها برای ذخیره دادهها، شروط برای تصمیمگیری و حلقهها برای تکرار عملیات استفاده میشوند. ساختار ساده این زبان باعث شده یادگیری آن برای کاربران غیربرنامهنویس نیز ممکن باشد.
- تعریف متغیر:
myVar = close * 2
- شرط:
if close > open
plot(close, color=color.green)
- حلقه (فقط در نسخههای خاص، به شکل محدود): پاین اسکریپت برخلاف زبانهای دیگر از حلقههای سنتی مثل for و while پشتیبانی نمیکند و بیشتر به صورت تابعی عمل میکند.
درک این مفاهیم، پیشنیاز ساخت هر نوع اندیکاتور است.
توابع پرکاربرد در ساخت اندیکاتور
پاین اسکریپت مجموعهای از توابع آماده برای تحلیل چارت در اختیار کاربران قرار میدهد. این توابع در دستهبندیهای مختلفی قرار میگیرند:
عملکرد | نام تابع |
---|---|
میانگین متحرک ساده | ta.sma(source, length) |
میانگین متحرک نمایی | ta.ema(source, length) |
شاخص قدرت نسبی | ta.rsi(source, length) |
رسم خروجی روی چارت | plot(series) |
افزودن پارامتر قابل تنظیم توسط کاربر | input(defval, title) |
استفاده از این توابع به شما کمک میکند تا بدون نیاز به ساختارهای پیچیده، الگوریتم خود را پیادهسازی کنید.
کار با دادههای کندلی (OHLC)
برای تحلیل دقیق در تریدینگ ویو، دسترسی به اطلاعات کندلها (OHLC) ضروری است. این دادهها شامل چهار مقدار اصلی هر کندل هستند:
- open: قیمت باز شدن؛
- high: بالاترین قیمت؛
- low: پایینترین قیمت؛
- close: قیمت بسته شدن.
همچنین میتوان از دادههای حجمی (volume) یا تایم فریمهای متفاوت استفاده کرد. پاین اسکریپت با این دادهها به صورت پیشفرض کار میکند و نیازی به بارگذاری دستی نیست. در مجموع، آشنایی با این مفاهیم پایهای، زمینهساز ساخت اندیکاتورهای پیشرفتهتر خواهد بود.
برای ساخت اندیکاتور در تریدینگ ویو نیازی به دانش برنامهنویسی عمیق نیست. زبان پاین اسکریپت با طراحی ساده و کاربردی خود، به تریدرها اجازه میدهد ایدههای تحلیلی خود را به راحتی به کد تبدیل کنند، حتی اگر تنها با مفاهیم اولیه آشنا باشند.
مثال کاربردی ساخت یک اندیکاتور ساده با پاین اسکریپت در تریدینگ ویو
درک مفاهیم تئوری به ویژه در برنامهنویسی، بدون تمرین عملی کارایی محدودی دارد. در این بخش با یک مثال کامل و ساده، فرآیند ساخت اندیکاتور را به صورت گام به گام اجرا میکنیم. هدف این است که از مرحله تعریف تا نمایش نهایی سیگنالها روی چارت را در عمل تجربه کنید.
پیادهسازی میانگین متحرک ساده (SMA)
اولین قدم در ساخت اندیکاتور، تعریف یک الگوریتم ساده است. در این بخش، یک SMA با دوره ۲۰ طراحی میکنیم:
//@version=5
indicator(“Simple SMA”, overlay=true)
smaLine = ta.sma(close, 20)
plot(smaLine, color=color.orange, title=”SMA 20″)
این کد، میانگین متحرک ۲۰ روزه را روی چارت قیمت نمایش میدهد و پایهساز اضافهکردن سیگنالهای معاملاتی خواهد بود.
افزودن سیگنال خرید و فروش
با ترکیب SMA و شرایط قیمت، میتوان سیگنال خرید یا فروش تعریف کرد. برای مثال:
buySignal = ta.crossover(close, smaLine)
sellSignal = ta.crossunder(close, smaLine)
plotshape(buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title=”Buy Signal”)
plotshape(sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title=”Sell Signal”)
این کد بررسی میکند که آیا قیمت از زیر به بالای SMA عبور کرده (خرید) یا برعکس (فروش).

نمایش گرافیکی سیگنالها روی چارت
در مرحله آخر، برای وضوح بیشتر، میتوان سیگنالها را به صورت گرافیکی روی چارت نمایش داد:
- استفاده از آیکونهای سبز برای خرید؛
- استفاده از آیکونهای قرمز برای فروش؛
- مشخصکردن نقاط ورود و خروج.
این تصویر، نشاندهنده یک اندیکاتور ساده ولی کاربردی برای تحلیل روند است.

نحوه شخصیسازی و تنظیمات پیشرفته اندیکاتور
اندیکاتورهای حرفهای فقط به محاسبات دقیق محدود نمیشوند، بلکه باید قابلیت تنظیم و تطبیقپذیری با نیاز کاربر را نیز داشته باشند. پاین اسکریپت این امکان را فراهم کرده که بخشهای مختلف اندیکاتور مانند ظاهر، ورودیها و هشدارها به راحتی شخصیسازی شوند. در این بخش، با مهمترین روشهای توسعهپذیری اندیکاتور آشنا خواهیم شد.
با استفاده از متغیرهای سراسری (var) در پاین اسکریپت میتوان مقدار مشخصی را در کل طول اجرای اندیکاتور ثابت نگه داشت.
اضافه کردن input برای تنظیمات کاربر
برای اینکه اندیکاتور شما قابل تنظیم باشد، باید از تابع input استفاده کنید. این قابلیت به کاربران اجازه میدهد پارامترهایی مثل طول دوره، رنگ خطوط یا نوع سیگنال را تغییر دهند:
length = input.int(20, title=”SMA Length”)
colorLine = input.color(color.blue, title=”Line Color”)
smaValue = ta.sma(close, length)
plot(smaValue, color=colorLine)
در این مثال، کاربر میتواند دوره محاسبه و رنگ خط را مطابق سلیقه خود تنظیم کند؛ موضوعی که در حرفهایتر شدن اندیکاتورها اهمیت دارد.
تغییر رنگ، ظاهر و نمایش در چارت
با استفاده از توابع plot, plotshape, plotchar و پارامترهایی مثل color, linewidth, style میتوان نمای ظاهری اندیکاتور را کاملا سفارشی کرد:
- رنگ خطوط؛
- ضخامت خطوط؛
- نوع نمایش (نقطه، خط، میله)؛
plot(smaValue, color=color.red, linewidth=2, style=plot.style_line)
این تنظیمات، تجربه کاربری بهتری ایجاد کرده و خوانایی اندیکاتور را افزایش میدهند.
استفاده از آلارم هشدار (alert) برای اطلاعرسانی خودکار
پاین اسکریپت امکان تعریف شرایط هشدار (Alert Conditions) را فراهم میکند که میتوان به کمک آن به محض وقوع یک شرط خاص مثل سیگنال خرید یا فروش، پیام هشدار دریافت کرد:
alertcondition(buySignal, title=”Buy Alert”, message=”قیمت از میانگین عبور کرد – سیگنال خرید!”)
در پنل هشدارهای تریدینگ ویو، میتوان این شرط را فعال کرد تا در صورت رخدادن آن، هشدار به ایمیل، موبایل یا مرورگر شما ارسال شود.
نحوه ذخیره، اشتراکگذاری و انتشار اندیکاتور
پس از طراحی و تست موفق اندیکاتور، مرحله مهم بعدی ذخیرهسازی و به اشتراکگذاری آن است. پلتفرم تریدینگ ویو گزینههای متنوعی از انتشار عمومی گرفته تا اشتراکگذاری خصوصی برای مدیریت دسترسی به اسکریپتها ارائه میدهد. در این بخش با نحوه ذخیره، تنظیم سطح دسترسی و انتشار رسمی اندیکاتورها آشنا میشویم.
ذخیره اندیکاتور بهصورت خصوصی یا عمومی
پس از نوشتن و تست موفق اسکریپت در Pine Editor، نوبت به ذخیرهسازی آن میرسد؛ مرحلهای که نقش مهمی در مدیریت، نگهداری و اشتراکگذاری اندیکاتور دارد. تریدینگ ویو این امکان را به شما میدهد که بسته به هدف خود، اسکریپت را به صورت خصوصی، عمومی یا دعوتی ذخیره کنید. هر کدام از این گزینهها سطح دسترسی متفاوتی دارند و باید به درستی انتخاب شوند. در ادامه با انواع حالتهای ذخیرهسازی آشنا میشویم:
حالت ذخیرهسازی | توضیح |
---|---|
ذخیره خصوصی (Private) | فقط خود کاربر میتواند اندیکاتور را مشاهده و استفاده کند. برای پروژههای شخصی یا اسکریپتهای در حال توسعه مناسب است. |
ذخیره عمومی (Public) | اندیکاتور در بخش Public Library تریدینگ ویو منتشر میشود و تمام کاربران پلتفرم میتوانند آن را ببینند و استفاده کنند. نیاز به رعایت قوانین انتشار عمومی دارد. |
دعوتی یا Invite-only | اسکریپت برای عموم کاربران قابل مشاهده نیست، اما میتوان آن را با اشخاص خاصی به اشتراک گذاشت. این مدل برای فروش سیگنال یا ارائه ابزار اختصاصی به مشتریان بسیار کاربرد دارد. |
برای انتخاب هر یک از این حالتها، کافی است پس از کلیک بر دکمه «Publish Script»، تنظیمات مربوط به سطح دسترسی را مشخص کرده و توضیحات لازم برای کاربران یا خودتان را در بخش توضیحات وارد نمایید.
اشتراکگذاری اسکریپت با دیگر کاربران
حتی اگر اسکریپت را عمومی نکنید، میتوانید آن را با کاربران خاص به اشتراک بگذارید. این کار با فعال کردن گزینه “Invite-only” انجام میشود که دسترسی به اندیکاتور را محدود میکند. اشتراکگذاری ابزار شخصی، خصوصا در پروژههای معاملات الگوریتمی گروهی، بسیار پرکاربرد است.
قوانین انتشار عمومی در تریدینگ ویو
برای انتشار عمومی اندیکاتور، باید نکات زیر رعایت شود:
معیار | توضیح |
---|---|
کد بهینه و بدون باگ باشد | نباید خطا یا تاخیر محسوس در اجرا داشته باشد. |
توضیحات کامل ارائه شود | در قسمت Description باید کارکرد اندیکاتور بهصورت واضح نوشته شود. |
عدم استفاده از کدهای دزدیده شده | استفاده از کدهای دیگران بدون اجازه، ممنوع است. |
رعایت قوانین انجمن | مانند منع استفاده از زبان توهینآمیز، تبلیغات، محتواهای مخرب |
در صورت عدم رعایت این قوانین، اندیکاتور منتشر نخواهد شد یا حذف خواهد گردید.
نکات کلیدی و رایج در دیباگ و بهینهسازی اسکریپت
حتی حرفهایترین اسکریپتها نیز ممکن است در اجرا با خطا یا افت عملکرد مواجه شوند. به همین دلیل، تسلط بر روشهای دیباگ (اشکالزدایی) و بهینهسازی کد، بخش جداییناپذیر از توسعه موفق یک اندیکاتور محسوب میشود. در این بخش با رایجترین خطاها، روشهای یافتن آنها و تکنیکهای افزایش بهرهوری و سرعت اجرای اسکریپت آشنا میشویم.
مدیریت ارورها و باگها
اشتباهات کدنویسی مانند تایپ اشتباه، استفاده از توابع اشتباه یا استفاده از دادههای ناصحیح، معمولترین دلایل بروز خطا هستند. برای رفع آنها:
- استفاده از Console برای مشاهده خطاها؛
- بررسی خطوط هشدار داده شده؛
- استفاده از مقادیر پیشفرض برای جلوگیری از null، توصیه میشود.
نکات عملکردی برای افزایش سرعت اجرای اندیکاتور
برخی نکات مهم برای بهبود عملکرد عبارتند از:
- استفاده از توابع بومی مانند ta.sma به جای توابع دستی؛
- پرهیز از عملیات غیرضروری در هر کندل؛
- کاهش استفاده از حلقهها یا شرطهای پیچیده.
بهینهسازی اجرای کد به ویژه در تایم فریمهای بالا اهمیت ویژه دارد.
بررسی مصرف منابع و بهینهسازی کد
برای بررسی کارایی و مصرف منابع:
- از بخش Performance در تریدینگ ویو استفاده کنید؛
- متغیرهای بیاستفاده را حذف نمایید؛
- کد را تا حد امکان ساده و خوانا نگه دارید.
در بلند مدت، این بهینهسازیها باعث افزایش سرعت، دقت و قابلیت نگهداری اسکریپت خواهند شد.
بهترین منابع جهت یادگیری بیشتر برای تسلط بر پاین اسکریپت
برای تسلط بر پاین اسکریپت و ساخت اندیکاتورهای پیچیده، منابع زیر توصیه میشوند:
- TradingView Pine Script Documentation؛
- کانال یوتیوب “The Art of Trading” (آموزش ساخت اندیکاتورهای کاربردی)؛
- تالار گفت و گوی رسمی تریدینگ ویو (discussions)؛
- منابع انگلیسی در Reddit و Stack Overflow (بخش Pine Script)؛
- کتاب “Advanced Pine Script” (در سطح حرفهای)؛
با دنبالکردن این منابع، میتوانید فراتر از آموزشهای ابتدایی حرکت کرده و اسکریپتهای اختصاصی خود را توسعه دهید.
نتیجهگیری
ساخت اندیکاتور در تریدینگ ویو با پاین اسکریپت، فرصتی منحصر برای تحلیلگران و تریدرهایی است که میخواهند ابزارهای اختصاصی و حرفهای برای معاملات خود طراحی کنند. در این مقاله آموختیم چگونه با درک مفاهیم پایه، ایجاد کد، نمایش گرافیکی و تنظیمات پیشرفته، یک اندیکاتور کامل بسازیم. با تمرین مداوم، بهرهگیری از منابع معتبر و رعایت نکات بهینهسازی، میتوان اسکریپتهایی تولید کرد که نه تنها کاربردی باشند، بلکه ارزش افزوده بالایی برای استراتژیهای معاملاتی ایجاد کنند.