پاین اسکریپت: اولین اندیکاتور شما در تریدینگ ویو
از اندیکاتورهای تکراری خسته شدهاید؟ این راهنما پاین اسکریپت را رمزگشایی میکند و به شما نشان میدهد چگونه ایدههای معاملاتی منحصربهفرد خود را به یک ابزار بصری سفارشی در نمودار تریدینگ ویو تبدیل کنید. همین امروز مزیت رقابتی خود را بسازید.
Amara Okafor
استراتژیست فینتک

آیا از تکیه بر همان اندیکاتورهای قدیمی و اغلب تأخیری که هر معاملهگر دیگری از آن استفاده میکند خسته شدهاید؟ در بازارهای پویای فارکس امروز، یک مزیت منحصربهفرد فقط یک برتری نیست - یک ضرورت است. تصور کنید بتوانید ایدههای معاملاتی خاص خود، بینشهای منحصربهفردتان را مستقیماً به یک ابزار بصری در نمودار TradingView خود تبدیل کنید. این فقط به معنای دستکاری یک اندیکاتور موجود نیست؛ بلکه به معنای ساختن یک ابزار سفارشی است که استراتژی شما را کاملاً منعکس میکند و به شما دیدگاهی متمایز میدهد که ابزارهای استاندارد به سادگی نمیتوانند ارائه دهند. این راهنما شما را توانمند میسازد تا آن گام اول حیاتی را بردارید، پاین اسکریپت را رمزگشایی کرده و به شما نشان میدهد چگونه اولین اندیکاتور سفارشی خود را بنویسید و رویکرد معاملاتی خود را از واکنشی به پیشگیرانه و واقعاً شخصیسازی شده تبدیل کنید.
مزیت خود را آشکار کنید: مبانی پاین اسکریپت برای اندیکاتورهای سفارشی
پاین اسکریپت را به عنوان خط ارتباطی مستقیم خود با قلب TradingView در نظر بگیرید. این زبان برنامهنویسی است که اکثر اندیکاتورها و استراتژیهای این پلتفرم را قدرت میبخشد. با یادگیری تنها بخش کوچکی از آن، از یک کاربر منفعل ابزارها به یک خالق فعال تبدیل میشوید. اندیکاتورهای استاندارد مانند RSI یا MACD عالی هستند، اما دقیقاً همان اطلاعاتی را به شما نشان میدهند که به میلیونها معاملهگر دیگر نشان میدهند. اگر استراتژی شما شامل ترکیبی منحصربهفرد از میانگینهای متحرک یا یک شرط خاص بر اساس حجم باشد چه؟ اینجاست که ساخت یک اندیکاتور سفارشی به شما یک مزیت قدرتمند و شخصیسازی شده میدهد.
پاین اسکریپت چیست و چرا اهمیت دارد؟
پاین اسکریپت یک زبان سبک و مبتنی بر ابر است که توسط TradingView به طور خاص برای ایجاد ابزارهای تحلیل تکنیکال سفارشی طراحی شده است. نیازی به نصب هیچ نرمافزاری ندارید؛ همه چیز درست در مرورگر شما در تب 'Pine Editor' در پایین نمودار شما اتفاق میافتد.
مزیت اصلی آن چیست؟ به شما امکان میدهد قوانین معاملاتی خود را کدنویسی کنید. به جای اینکه فقط با چشم بررسی کنید که چه زمانی یک میانگین متحرک سریع از یک میانگین متحرک کند عبور میکند، میتوانید اسکریپتی بنویسید که آن رابطه را رسم کند، نمودار را بر اساس آن شرط رنگآمیزی کند و حتی برای شما هشدار ارسال کند. این کار به معنای ایجاد دقت و حذف حدس و گمان است.
اولین خط کد شما: ساختار اصلی
هر اندیکاتور پاین اسکریپت با یک اسکلت اصلی یکسان شروع میشود. این ساختار ساده، تمیز و قابل فهم است. بیایید «سلام، دنیا!» در پاین اسکریپت را بررسی کنیم: رسم قیمت پایانی هر کندل.
ویرایشگر پاین (Pine Editor) را در TradingView باز کنید و این کد را تایپ کنید:
//@version=5
indicator("My First Script", overlay=true)
plot(close)بیایید آن را تجزیه کنیم:
۱. //@version=5: این خط اجباری است. به TradingView میگوید که از کدام نسخه پاین اسکریپت استفاده میکنید. نسخه ۵ جدیدترین و بهترین است، بنابراین ما از همین نسخه استفاده خواهیم کرد. برای اطلاعات بیشتر، مستندات رسمی پاین اسکریپت نسخه ۵ تریدینگ ویو یک منبع عالی است.
۲. indicator("My First Script", overlay=true): این تابع اعلام میکند که ما در حال ساخت یک اندیکاتور هستیم. به آن یک نام میدهیم ("My First Script") و به آن میگوییم overlay=true، که به این معنی است که اندیکاتور مستقیماً روی نمودار قیمت شما رسم میشود به جای اینکه در یک پنجره جداگانه در زیر آن قرار گیرد.
۳. plot(close): این بخش عمل اصلی است. تابع plot() یک خط روی نمودار رسم میکند. چه چیزی را رسم میکنیم؟ متغیر داخلی close که نشاندهنده قیمت پایانی هر کندل است.

روی 'Add to Chart' کلیک کنید و تبریک میگوییم! شما به تازگی اولین اندیکاتور سفارشی خود را ایجاد کردهاید. این یک خط ساده است که قیمت پایانی را کاملاً دنبال میکند.
مهار دادهها: OHLCV و توابع داخلی
حالا که ساختار اصلی را ایجاد کردهاید، وقت آن است که با مواد اصلی هر اندیکاتور کار کنید: دادههای قیمت. پاین اسکریپت به شما دسترسی فوری به نقاط داده بنیادی برای هر کندل در نمودار شما را میدهد.
دسترسی به دادههای قیمت: بلوکهای سازنده
پاین اسکریپت چندین متغیر داخلی دارد که اطلاعات قیمت را در خود نگه میدارند. شما قبلاً با close آشنا شدهاید. در اینجا دوستان آن را معرفی میکنیم:
open: قیمت باز شدن کندل.high: بالاترین قیمت کندل.low: پایینترین قیمت کندل.close: قیمت پایانی کندل.volume: حجم معاملات برای کندل.
این متغیرها دادههای 'سری' هستند، که دنبالهای از مقادیر در طول زمان است. وقتی از close استفاده میکنید، فقط یک عدد دریافت نمیکنید؛ شما قیمت پایانی کندل فعلی، کندل قبلی، کندل قبل از آن و غیره را دریافت میکنید.
توابع داخلی ضروری برای محاسبات
اینجاست که جادو اتفاق میافتد. پاین اسکریپت پر از توابع تحلیل تکنیکال از پیش ساخته شده است که شما را از ریاضیات پیچیده بینیاز میکند. رایجترین خانواده توابع برای میانگینهای متحرک است که تحت فضای نام ta (تحلیل تکنیکال) یافت میشود.
بیایید اسکریپت خود را ارتقا دهیم تا یک میانگین متحرک ساده (SMA) ۲۰ دورهای را رسم کنیم.
//@version=5
indicator("My SMA", overlay=true)
// ۱. محاسبه SMA بیست دورهای قیمت پایانی
sma20 = ta.sma(close, 20)
// ۲. رسم نتیجه
plot(sma20)در اینجا تفکیک آن آمده است:
sma20 = ta.sma(close, 20): ما یک متغیر جدید به نامsma20ایجاد میکنیم. ما نتیجه تابعta.sma()را به آن اختصاص میدهیم. این تابع دو آرگومان میگیرد: منبع داده (close) و طول دوره (20).plot(sma20): به جای رسم قیمت پایانی خام، اکنون خط SMA محاسبه شده خود را رسم میکنیم.

این را به نمودار خود اضافه کنید، و یک خط صاف را خواهید دید که میانگین قیمت پایانی در ۲۰ کندل گذشته را نشان میدهد. شما به تازگی دادههای خام را به بینشی معنادار تبدیل کردهاید.
اندیکاتورهای پویا: ورودیهای کاربر برای انعطافپذیری
کدنویسی ثابت مقادیری مانند 20 برای طول SMA کار میکند، اما انعطافپذیر نیست. اگر بخواهید یک SMA با دوره ۵۰ را آزمایش کنید چه؟ یا یک دوره ۲۰۰؟ باید هر بار کد را ویرایش کنید. اینجاست که ورودیهای کاربر وارد میشوند—آنها اندیکاتور شما را تعاملی و واقعاً قدرتمند میکنند.
تعاملی کردن اندیکاتور با ورودیها
ورودیها به شما امکان میدهند تنظیماتی برای اندیکاتور خود ایجاد کنید که میتوانند مستقیماً از روی نمودار تغییر کنند، بدون اینکه به کد دست بزنید. تمام اندیکاتورهای حرفهای به این شکل ساخته میشوند. تابع اصلی برای این کار input() است.
بیایید طول SMA خود را قابل تنظیم کنیم.
//@version=5
indicator("My Custom SMA", overlay=true)
// ۱. ایجاد یک ورودی کاربر برای طول SMA
smaLength = input.int(20, title="SMA Length")
// ۲. محاسبه SMA با استفاده از ورودی کاربر
customSma = ta.sma(close, smaLength)
// ۳. رسم نتیجه
plot(customSma, color=color.blue)به تغییرات توجه کنید:
smaLength = input.int(20, title="SMA Length"): به جای یک عدد ثابت، ازinput.int()استفاده میکنیم. این یک ورودی عدد صحیح (عدد کامل) ایجاد میکند. مقدار اول،20، مقدار پیشفرض است.titleچیزی است که کاربر در منوی تنظیمات خواهد دید.ta.sma(close, smaLength): اکنون از متغیرsmaLengthخود در محاسبه SMA استفاده میکنیم.
نمونههای عملی ورودی: سفارشیسازی پارامترها
پس از اضافه کردن این به نمودار خود، ماوس را روی نام اندیکاتور ببرید و روی آیکون چرخدنده 'Settings' کلیک کنید. یک تب 'Inputs' با فیلدی با عنوان "SMA Length" که روی ۲۰ تنظیم شده است، خواهید دید. آن را به ۵۰ تغییر دهید، روی 'OK' کلیک کنید و ببینید که اندیکاتور شما فوراً بهروز میشود. این یک تغییردهنده بازی برای آزمایش و تطبیق استراتژی شما است.
انواع مختلفی از ورودیها برای نیازهای مختلف وجود دارد:
input.int(): برای اعداد کامل (مثلاً، دورههای اندیکاتور).input.float(): برای اعداد اعشاری (مثلاً، درصدی برای استاپ لاس، مانند ۰.۵).input.source(): برای اینکه کاربر بتواند منبع داده را انتخاب کند (مثلاً،close،open،high).
نکته حرفهای: همیشه مقادیر پیشفرض معقولی برای ورودیهای خود ارائه دهید. این تضمین میکند که اندیکاتور از همان ابتدا به درستی کار میکند و به کاربر یک نقطه شروع خوب برای سفارشیسازی خود میدهد.
بر جلوههای بصری مسلط شوید و مانند یک حرفهای عیبیابی کنید

یک اندیکاتور عالی فقط به محاسبات دقیق مربوط نمیشود؛ بلکه باید در یک نگاه خوانا و قابل تفسیر باشد. پاین اسکریپت به شما کنترل کامل بر ظاهر نمودارهای شما را میدهد. و وقتی مشکلی پیش میآید—که حتماً پیش خواهد آمد—دانستن نحوه اشکالزدایی یک مهارت حیاتی است.
افزایش خوانایی با سفارشیسازی رسم
تابع plot() میتواند آرگومانهای بسیار بیشتری از فقط سری دادهها بگیرد. شما میتوانید رنگ، سبک و ضخامت را سفارشی کنید تا جلوههای بصری خود را برجسته کنید. بیایید یک اندیکاتور تقاطع میانگین متحرک کلاسیک با دو SMA ایجاد کنیم و آنها را به طور متفاوت استایلدهی کنیم.
//@version=5
indicator("SMA Crossover", overlay=true)
// ورودیها
fastLength = input.int(20, title="Fast SMA Length")
slowLength = input.int(50, title="Slow SMA Length")
// محاسبات
fastSma = ta.sma(close, fastLength)
slowSma = ta.sma(close, slowLength)
// رسم با سفارشیسازی
plot(fastSma, title="Fast SMA", color=color.new(color.orange, 0), linewidth=2)
plot(slowSma, title="Slow SMA", color=color.new(color.purple, 0), linewidth=2)این چیزی است که ما اضافه کردیم:
- رسمهای چندگانه: اکنون دو فراخوانی
plot()داریم، یکی برای SMA سریع و دیگری برای SMA کند. - رنگ:
color=color.new(color.orange, 0)رنگ خط را تنظیم میکند.color.new()به ما امکان میدهد شفافیت را تنظیم کنیم (۰ مات است، ۱۰۰ نامرئی است). - ضخامت خط:
linewidth=2خط را ضخیمتر و دیدن آن را آسانتر میکند.
اشکالزدایی اسکریپت شما: مشکلات رایج و راهحلها
دیر یا زود، روی 'Add to Chart' کلیک خواهید کرد و با یک پیام خطای قرمز در کنسول مواجه خواهید شد. نگران نباشید! این یک بخش عادی از کدنویسی است.
هشدار: رایجترین خطاها برای مبتدیان اشتباهات تایپی ساده هستند. یک کامای جا افتاده، نام تابع با املای غلط (
ta.smaدر مقابلta.smaa)، یا یک پرانتز فراموش شده)همگی میتوانند اسکریپت شما را خراب کنند.
در اینجا نحوه عیبیابی آمده است:
۱. پیام خطا را بخوانید: کنسول در پایین ویرایشگر پاین بهترین دوست شماست. اغلب به شما دقیقاً میگوید کدام خط مشکل دارد و به شما سرنخی در مورد مشکل میدهد (مثلاً، Syntax error at input 'plot').
۲. اشتباهات تایپی را بررسی کنید: خط ذکر شده در خطا را با دقت دوباره بخوانید. آن را با مستندات یا مثالهای ما مقایسه کنید.
۳. عدم تطابق انواع داده: یک خطای رایج در زمان اجرا، تلاش برای استفاده از دادهای با نوع اشتباه است، مانند دادن یک string (متن) در جایی که یک number (عدد) انتظار میرود. پیام خطا معمولاً به این موضوع اشاره میکند.
یادگیری خواندن این خطاها مانند یادگیری یک زبان جدید است. در ابتدا، مرموز به نظر میرسد، اما به زودی مقصران رایج را فوراً تشخیص خواهید داد و آنها را در چند ثانیه برطرف خواهید کرد. این مهارت برای هر کسی که به دنبال پیشرفت بیشتر است، شاید حتی در زمینههای پیچیدهتر مانند معاملات API فارکس برای خودکارسازی استراتژی شما، ضروری است.
از کد تا نمودار: استقرار و اصلاح اندیکاتور شما
شما کد را نوشتهاید، ورودیها را اضافه کردهاید و نمودارهای خود را استایلدهی کردهاید. گام نهایی این است که ابزار جدید خود را به بخشی دائمی از زرادخانه TradingView خود تبدیل کنید و فرآیند بهبود مستمر را درک کنید.
ذخیره اسکریپت و افزودن به TradingView
هنگامی که از اسکریپت خود در ویرایشگر پاین راضی بودید، فرآیند ساده است:

۱. روی 'Save' کلیک کنید: در بالا سمت راست ویرایشگر پاین، روی دکمه 'Save' کلیک کنید. به اسکریپت خود یک نام به یاد ماندنی بدهید.
۲. اسکریپت خود را پیدا کنید: روی دکمه 'Indicators' در بالای نمودار خود کلیک کنید. در پنجرهای که باز میشود، به بخش 'My scripts' بروید.
۳. افزودن به نمودار: اسکریپت ذخیره شده خود را در لیست خواهید دید. یک بار روی آن کلیک کنید تا به نمودار فعال شما اضافه شود.
همین! اندیکاتور سفارشی شما اکنون در حساب TradingView شما ذخیره شده است. شما میتوانید آن را به هر نمودار، در هر دستگاهی، درست مانند هر اندیکاتور داخلی دیگری اضافه کنید. حتی میتوانید در صورت تمایل آن را با معاملهگران دیگر به اشتراک بگذارید.
فرآیند بهبود تکراری: آزمایش، اصلاح، موفقیت
نسخه اول شما به ندرت نسخه نهایی است. قدرت واقعی ساخت ابزارهای خود، توانایی تطبیق آنها با یادگیری بیشتر در مورد بازار است. سفر یک اندیکاتور به این شکل است:
- آزمایش: اندیکاتور خود را روی داراییها و تایمفریمهای مختلف اعمال کنید. آیا آنطور که انتظار دارید روی یک جفت ارز پرنوسان مانند GBP/JPY و همچنین یک شاخص رونددار مانند US30 رفتار میکند؟ در یک نمودار ۱۵ دقیقهای در مقابل یک نمودار روزانه چگونه به نظر میرسد؟
- مشاهده: نحوه عملکرد اندیکاتور را در شرایط بازار زنده تماشا کنید. آیا سیگنالها را خیلی زود میدهد؟ خیلی دیر؟ آیا در بازارهای رنج بیش از حد نویز دارد؟
- اصلاح: به ویرایشگر پاین برگردید. شاید نیاز به اضافه کردن یک فیلتر دیگر، تغییر طولهای ورودی پیشفرض، یا اضافه کردن یک هیستوگرام برای تجسم مومنتوم داشته باشید. نسخه جدید را ذخیره کرده و فرآیند را تکرار کنید.
این حلقه تکراری آزمایش و اصلاح، روشی است که شما یک اسکریپت ساده را به یک ابزار قوی تبدیل میکنید که واقعاً سبک معاملاتی شما را تکمیل میکند. این یک فرآیند مستمر یادگیری و آزمایش است.
نتیجهگیری
شما به تازگی یک گام بزرگ در سفر معاملاتی خود برداشتهاید و از ابزارهای عمومی فراتر رفتهاید تا مزیت منحصربهفرد خود را ایجاد کنید. تسلط بر پاین اسکریپت فقط مربوط به کدنویسی نیست؛ بلکه در مورد ترجمه شهود معاملاتی شما به استراتژیهای ملموس و بصری است که میتوانند با شرایط متغیر بازار سازگار شوند. با درک اصول ساختار، دسترسی به دادهها، ورودیهای کاربر و سفارشیسازی بصری، اکنون شما قدرت ایجاد اندیکاتورهایی را دارید که واقعاً رویکرد شخصیسازی شده شما را منعکس میکنند. به یاد داشته باشید، سفر توسعه ابزارهای سفارشی تکراری است. به آزمایش ادامه دهید، به اصلاح ادامه دهید و اجازه دهید بینشهای منحصربهفرد شما، خلاقیتهایتان را هدایت کند. آمادهاید تا استراتژیهای پیشرفتهای را که میتوانند الهامبخش اندیکاتور سفارشی بعدی شما باشند، کاوش کنید؟ FXNX منابع و بینشهای فراوانی را برای کمک به شما در ادامه ساخت زرادخانه معاملاتی شخصیسازی شدهتان ارائه میدهد.
همین امروز نوشتن اولین اندیکاتور پاین اسکریپت خود را در TradingView شروع کنید. استراتژیهای معاملاتی پیشرفته FXNX را کاوش کنید تا الهامبخش ابزار سفارشی بعدی خود باشید و بازی معاملاتی خود را ارتقا دهید.
سوالات متداول
پاین اسکریپت چیست؟
پاین اسکریپت زبان برنامهنویسی رسمی TradingView است. این زبان به معاملهگران اجازه میدهد تا اندیکاتورها، استراتژیها و هشدارهای سفارشی خود را ایجاد کنند که میتوانند مستقیماً به نمودارهایشان اضافه شوند و یک تجربه تحلیل تکنیکال بسیار شخصیسازی شده را ممکن میسازند.
آیا استفاده از پاین اسکریپت در TradingView رایگان است؟
بله، نوشتن و استفاده از اندیکاتورهای پاین اسکریپت خود در تمام پلنهای TradingView، از جمله پلن Basic (رایگان)، کاملاً رایگان است. شما میتوانید اسکریپتهای سفارشی خود را بدون هیچ هزینه اشتراکی ایجاد، ذخیره و به نمودارهای خود اضافه کنید.
آیا میتوانم اندیکاتور پاین اسکریپت خود را بکتست کنم؟
در حالی که یک اسکریپت indicator برای تجسم است، شما میتوانید آن را به یک اسکریپت strategy در پاین اسکریپت تبدیل کنید تا بکتست انجام دهید. تابع strategy() به شما امکان میدهد قوانین ورود و خروج را تعریف کرده و آنها را بر روی دادههای تاریخی اجرا کنید تا معیارهای عملکرد را مشاهده کنید.
تفاوت بین یک اندیکاتور و یک استراتژی در پاین اسکریپت چیست؟
یک indicator ابزاری برای تحلیل بصری است؛ خطوط، اشکال و رنگها را روی نمودار شما رسم میکند تا به شما در تصمیمگیریهای معاملاتی کمک کند (مانند اندیکاتور تقاطع SMA ما). یک strategy یک قدم فراتر میرود و شامل منطق معامله (strategy.entry، strategy.exit) میشود که به موتور بکتست TradingView اجازه میدهد تا معاملات را شبیهسازی کرده و یک گزارش عملکرد تولید کند.
همین حالا شروع کنید
با اسپرد ۰.۰ پیپ و بیش از ۵۰۰ ابزار معاملاتی، به هزاران تریدر حرفهای بپیوندید.
درباره نویسنده

Amara Okafor
استراتژیست فینتکAmara Okafor is a Fintech Strategist at FXNX, bringing a unique perspective from her background in both London's financial district and Lagos's booming fintech scene. She holds an MBA from the London School of Economics and has spent 6 years working at the intersection of traditional finance and digital innovation. Amara specializes in emerging market currencies and African forex markets, writing with insight that bridges global finance with frontier market opportunities.
ترجمه توسط
داریوش محمدی مترجم جوان فینتک در FXNX است. او فارغالتحصیل رشته مالی بینالمللی از دانشگاه صنعتی شریف تهران بوده و در حال حاضر به عنوان کارآموز در FXNX مشغول ترجمه محتوای معاملاتی جهانی برای مخاطبان فارسیزبان است. اشتیاق او به پل زدن میان دانش مالی بینالمللی و جهان فارسیزبان، رویکرد دقیق و حرفهای او در ترجمه مالی را شکل داده است.