
تاریخ به روز رسانی:
۱۴۰۴/۸/۱۲تریدینگ ویو (TradingView) یکی از محبوبترین و پیشرفتهترین پلتفرمهای تحلیل تکنیکال در جهان است. این پلتفرم ابزارهای قدرتمندی برای تحلیل و ترسیم نمودارها در اختیار کاربران قرار میدهد و با زبان برنامهنویسی اختصاصی خود یعنی پاین اسکریپت (Pine Script)، امکان طراحی و اجرای اندیکاتورهای سفارشی، هشدارها و استراتژیهای معاملاتی خودکار را نیز فراهم کرده است. برای هر تریدر حرفهای، داشتن یک اندیکاتور شخصیسازی شده که با سبک و منطق معاملاتی خودش هماهنگ باشد، مزیت بزرگی محسوب میشود. در این مقاله به آموزش ساخت اندیکاتور در تریدینگ ویو با استفاده از پاین اسکریپت و ساخت استراتژی در تریدینگ ویو میپردازیم.
پاین اسکریپت زبان اختصاصی تریدینگ ویو است که با هدف سادهسازی فرآیند ساخت اندیکاتورها و استراتژیها طراحی شده. این زبان سبک و سریع است اما قدرت بالایی دارد و بسیاری از اندیکاتورهای معروف موجود در پلتفرم نیز با همین زبان نوشته شدهاند. نکته جالب در مورد پاین اسکریپت این است که بهصورت خودکار روی دادههای هر کندل (Bar) اجرا میشود. این ویژگی باعث میشود محاسبات همیشه بهروز باشند و تحلیلها با تغییر قیمت، فورا بهروزرسانی شوند.

برای شروع، در صفحه نمودار تریدینگ ویو، از پایین صفحه گزینه Pine Editor را باز کنید. سپس مراحل زیر را انجام دهید:
ابتدا نسخه زبان را مشخص کنید. در اولین خط کد باید چیزی شبیه زیر بنویسید:
//@version=5

این کار تعیین میکند که کد شما بر اساس آخرین نسخه زبان پاین اجرا شود. نسخه ۵ آخرین نسخه پایدار پاین است که امکانات زیادی از جمله Namespacing، کتابخانههای خارجی و مدیریت بهتر حافظه را اضافه کرده است.
در ادامه باید مشخص کنید که کد شما اندیکاتور یا استراتژی است. تفاوت این دو در این است که:
مثلا برای ساخت یک اندیکاتور ساده میانگین متحرک ۲۱ روزه میتوانید بنویسید:
indicator("Simple MA", overlay=true)
plot(ta.sma(close, 21))
عبارت overlay=true باعث میشود اندیکاتور روی نمودار اصلی قیمت رسم شود، نه در پنجره جداگانه.
هر استراتژی حرفهای باید قابل تنظیم باشد تا بتوان پارامترهایش را متناسب با بازار یا دارایی تغییر داد. برای این منظور از تابع input استفاده میکنیم تا مقادیر پیش فرض و متغیرهای ورودی را تعریف کنیم.
fastLen = input.int(10, "Fast SMA Length")
slowLen = input.int(30, "Slow SMA Length")

به این ترتیب کاربر بدون ویرایش کد، میتواند مقادیر را در تنظیمات اندیکاتور تغییر دهد.
برای ورود به معامله، باید شرط مشخصی تعریف کنیم. فرض کنید از استراتژی میانگین متحرک استفاده میکنید. در این حالت، وقتی میانگین کوتاهمدت از میانگین بلندمدت عبور کند، سیگنال خرید صادر میشود:
shortSMA = ta.sma(close, fastLen)
longSMA = ta.sma(close, slowLen)
if ta.crossover(shortSMA, longSMA)
strategy.entry("Long", strategy.long)
برای اطمینان بیشتر، میتوانید از فیلترهای تاییدی مثل RSI استفاده کنید تا فقط در شرایطی خاص معامله انجام شود:
rsi = ta.rsi(close, 14)
if ta.crossover(shortSMA, longSMA) and rsi > 50
strategy.entry("Long", strategy.long)
در معاملات، نقطه خروج به اندازه نقطه ورود اهمیت دارد. در پاین، برای بستن معاملات از دستور strategy.exit() استفاده میشود.
میتوانید بر اساس قیمت یا فاصله از نقطه ورود، حد ضرر (Stop) و حد سود (Limit) تعریف کنید:
stopPrice = strategy.position_avg_price * 0.98
takePrice = strategy.position_avg_price * 1.04
strategy.exit("Exit Long", from_entry="Long", stop=stopPrice, limit=takePrice)
به این ترتیب وقتی قیمت به ۲٪ زیر یا ۴٪ بالای قیمت ورود برسد، معامله بسته میشود.
در بازارهای نوسانی، استفاده از Trailing Stop میتواند سود را حفظ کند و ضرر را محدود نگه دارد. مقدار استاپ بر اساس اندیکاتور ATR تعیین میشود تا با نوسانات بازار هماهنگ باشد:
atr = ta.atr(14)
trail = atr * 2
strategy.exit("Trailing Stop", from_entry="Long", trail_points=trail)
در این حالت حد ضرر با حرکت قیمت، بهصورت خودکار جابهجا میشود.
در برخی مواقع، نمیخواهید بلافاصله وارد معامله شوید بلکه میخواهید فقط در صورت رسیدن قیمت به سطح خاصی سفارش فعال شود. در این صورت از دستور strategy.order() استفاده میشود.
برای مثال:
نکته مهم این است که این سفارشها تا زمان لغو فعال میمانند. بنابراین اگر شرایط بازار تغییر کند باید با دستور strategy.cancel_all() آنها را حذف کنید تا از اجرای ناخواسته جلوگیری شود.
بک تست به شما اجازه میدهد استراتژی خود را در دادههای تاریخی تست کنید. پس از اجرای کد، به بخش Strategy Tester بروید تا آمار و نتایج دقیق را ببینید. در این بخش سود خالص، تعداد معاملات، میانگین برد، افت سرمایه (Drawdown) و فاکتور سود قابل مشاهده است.
فاکتور سود (Profit Factor) یکی از شاخصهای مهم است. اگر این عدد بالاتر از ۱.۵ باشد، نشان میدهد استراتژی از نظر آماری سودده است. اما باید مراقب بیشبهینهسازی (Overfitting) باشید. یعنی استراتژی را آنقدر برای دادههای گذشته تنظیم نکنید که در بازار واقعی کارایی نداشته باشد. برای اطمینان، حتما آن را روی دادههای جدید (Out-of-Sample) امتحان کنید.
این ابزار به شما نشان میدهد هر بخش از کد چه میزان از زمان اجرای کلی را مصرف میکند. با این تحلیل میتوانید بخشهای کند یا غیرضروری کد را بهینه کنید. در تایمفریمهای سریع (مثل ۱ دقیقه یا ۵ دقیقه) این موضوع اهمیت بیشتری دارد.
تکنیکهای پیشرفته ساخت اندیکاتور در تریدینگ ویو با استفاده از پاین اسکریپت عبارتند از:
گاهی نیاز است دادهها را از تایمفریم دیگر (مثلا روزانه یا هفتگی) در استراتژی فعلی استفاده کنید. برای این کار از تابع request.security() استفاده میشود:
dailyClose = request.security(syminfo.tickerid, "D", close)
با این روش میتوانید مثلا در نمودار ۱ ساعته، دادههای روزانه را همزمان تحلیل کنید.
برای جلوگیری از بروز خطا یا پرش دادهها، پارامتر barmerge.gaps_on را فعال کنید تا دادههای تایمفریم بالاتر بهدرستی هماهنگ شوند.
در استراتژیهای حرفهای، اندازه معامله نباید ثابت باشد. بر اساس درصدی از موجودی حساب و میزان ریسک تعیین میشود. مثلا میتوانید طوری برنامهریزی کنید که فقط ۱٪ از سرمایه در هر معامله در خطر باشد. این کار به پایداری عملکرد در بلندمدت کمک میکند.
اگر با برنامهنویسی آشنا نیستید، باز هم میتوانید از امکانات تریدینگ ویو استفاده کنید. ابزارهایی مانند Strategy Builder یا ویرایشگرهای گرافیکی مانند Pineify امکان ساخت اندیکاتور را بدون نوشتن کد فراهم میکنند. همچنین با استفاده از ChatGPT یا دیگر مدلهای هوش مصنوعی، میتوانید تنها با توضیح دادن منطق استراتژی خود، کد کامل پاین اسکریپت (حتی نسخه ۶) را دریافت کنید. اگر خطایی رخ دهد، میتوانید پیام خطا را به هوش مصنوعی بدهید تا کد را اصلاح کند.
نکته مهمی که باید بدانید این است که تریدینگ ویو بهصورت مستقیم سفارشات را اجرا نمیکند. بلکه وظیفه آن تولید سیگنال یا هشدار است. برای اجرای واقعی معاملات باید هشدارهای تریدینگ ویو را به سرویسهای واسطهای مانند PineConnector متصل کنید. این سرویسها سیگنالها را از طریق API به حساب شما در صرافی یا بروکر ارسال میکنند. برای استفاده از این قابلیت به حساب پرمیوم تریدینگ ویو نیاز دارید.

قبل از شروع کدنویسی، منطق استراتژی خود را بهصورت گامبهگام روی کاغذ طراحی کنید. این کار باعث میشود درک بهتری از ساختار داشته باشید و کد تمیزتر و قابلدرکتری بنویسید. در طول کار از کامنتها برای توضیح هر بخش استفاده کنید تا در آینده بهراحتی قابل ویرایش باشد. همچنین همیشه استراتژی خود را در بازارها و تایمفریمهای مختلف تست کنید تا از پایداری آن مطمئن شوید.
برای ساخت اندیکاتور در تریدینگ ویو باید از پاین اسکریپت استفاده کنید، با کمی تمرین و تجربه، میتوانید اندیکاتورهایی طراحی کنید که با سبک معاملاتی شما هماهنگ باشند. اگر تازه شروع کردهاید، ابتدا با ساخت اندیکاتورهای ساده مانند میانگین متحرک یا RSI اصلاحشده شروع کنید، سپس به سراغ مفاهیم پیشرفتهتر مثل چند تایمفریمی، فیلترهای ترکیبی و استاپهای متحرک بروید. دنیای پاین اسکریپت وسیع است و با یادگیری آن، عملا به یکی از قدرتمندترین جعبه ابزارهای تحلیل بازار دست پیدا میکنید.
امتیاز خود به این مطلب را ثبت کنید










دیدگاه شما بعد از تایید در سایت نمایش داده خواهد شد
نظرات حاوی الفاظ رکیک، توهین، شماره تلفن و موبایل، آدرس ایمیل، عقاید سیاسی، نام بردن از مسئولین و امثالهم تایید نمیشود.
هنوز کسی نظری ثبت نکرده!