سیف بروکر
آموزش ساخت اندیکاتور در تریدینگ ویو با استفاده از پاین اسکریپت

آموزش ساخت اندیکاتور در تریدینگ ویو با استفاده از پاین اسکریپت

دسته‌بندی‌ها:

تاریخ به روز رسانی:

۱۴۰۴/۸/۱۲

تریدینگ ویو (TradingView) یکی از محبوب‌ترین و پیشرفته‌ترین پلتفرم‌های تحلیل تکنیکال در جهان است. این پلتفرم ابزارهای قدرتمندی برای تحلیل و ترسیم نمودارها در اختیار کاربران قرار می‌دهد و با زبان برنامه‌نویسی اختصاصی خود یعنی پاین اسکریپت (Pine Script)، امکان طراحی و اجرای اندیکاتورهای سفارشی، هشدارها و استراتژی‌های معاملاتی خودکار را نیز فراهم کرده است. برای هر تریدر حرفه‌ای، داشتن یک اندیکاتور شخصی‌سازی شده که با سبک و منطق معاملاتی خودش هماهنگ باشد، مزیت بزرگی محسوب می‌شود. در این مقاله به آموزش ساخت اندیکاتور در تریدینگ ویو با استفاده از پاین اسکریپت و ساخت استراتژی در تریدینگ ویو می‌پردازیم.

ساخت اندیکاتور در تریدینگ ویو

پاین اسکریپت زبان اختصاصی تریدینگ ویو است که با هدف ساده‌سازی فرآیند ساخت اندیکاتورها و استراتژی‌ها طراحی شده. این زبان سبک و سریع است اما قدرت بالایی دارد و بسیاری از اندیکاتورهای معروف موجود در پلتفرم نیز با همین زبان نوشته شده‌اند. نکته جالب در مورد پاین اسکریپت این است که به‌صورت خودکار روی داده‌های هر کندل (Bar) اجرا می‌شود. این ویژگی باعث می‌شود محاسبات همیشه به‌روز باشند و تحلیل‌ها با تغییر قیمت، فورا به‌روزرسانی شوند.

ساخت اندیکاتور در تریدینگ ویو
اندیکاتور در تریدینگ ویو با کدنویسی در Pine Script ساخته می‌شود.

شروع کار در Pine Editor

برای شروع، در صفحه نمودار تریدینگ ویو، از پایین صفحه گزینه Pine Editor را باز کنید. سپس مراحل زیر را انجام دهید:

ابتدا نسخه زبان را مشخص کنید. در اولین خط کد باید چیزی شبیه زیر بنویسید:

//@version=5

ساخت اندیکاتور در تریدینگ ویو
نسخه 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")

ساخت استراتژی تریدینگ ویو
ساخت اندیکاتور در تریدینگ‌ویو با نوشتن کد در زبان Pine Script و استفاده از تابع indicator() انجام می‌شود.

به این ترتیب کاربر بدون ویرایش کد، می‌تواند مقادیر را در تنظیمات اندیکاتور تغییر دهد.

طراحی منطق ورود (Entry Rules)

برای ورود به معامله، باید شرط مشخصی تعریف کنیم. فرض کنید از استراتژی میانگین متحرک استفاده می‌کنید. در این حالت، وقتی میانگین کوتاه‌مدت از میانگین بلندمدت عبور کند، سیگنال خرید صادر می‌شود:

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)

در این حالت حد ضرر با حرکت قیمت، به‌صورت خودکار جابه‌جا می‌شود.

دستورات پیشرفته ورود (Limit و Stop Orders)

در برخی مواقع، نمی‌خواهید بلافاصله وارد معامله شوید بلکه می‌خواهید فقط در صورت رسیدن قیمت به سطح خاصی سفارش فعال شود. در این صورت از دستور strategy.order() استفاده می‌شود.

برای مثال:

  • اگر می‌خواهید در شکست مقاومت وارد شوید، از Buy Stop استفاده کنید.
  • اگر می‌خواهید در اصلاح قیمتی خرید کنید، از Buy Limit کمک بگیرید.

نکته مهم این است که این سفارش‌ها تا زمان لغو فعال می‌مانند. بنابراین اگر شرایط بازار تغییر کند باید با دستور strategy.cancel_all() آن‌ها را حذف کنید تا از اجرای ناخواسته جلوگیری شود.

بک تست، بهینه‌سازی و ارزیابی عملکرد استراتژی

بک تست به شما اجازه می‌دهد استراتژی خود را در داده‌های تاریخی تست کنید. پس از اجرای کد، به بخش Strategy Tester بروید تا آمار و نتایج دقیق را ببینید. در این بخش سود خالص، تعداد معاملات، میانگین برد، افت سرمایه (Drawdown) و فاکتور سود قابل مشاهده است.

فاکتور سود (Profit Factor) یکی از شاخص‌های مهم است. اگر این عدد بالاتر از ۱.۵ باشد، نشان می‌دهد استراتژی از نظر آماری سودده است. اما باید مراقب بیش‌بهینه‌سازی (Overfitting) باشید. یعنی استراتژی را آن‌قدر برای داده‌های گذشته تنظیم نکنید که در بازار واقعی کارایی نداشته باشد. برای اطمینان، حتما آن را روی داده‌های جدید (Out-of-Sample) امتحان کنید.

ابزار Pine Profiler

این ابزار به شما نشان می‌دهد هر بخش از کد چه میزان از زمان اجرای کلی را مصرف می‌کند. با این تحلیل می‌توانید بخش‌های کند یا غیرضروری کد را بهینه کنید. در تایم‌فریم‌های سریع (مثل ۱ دقیقه یا ۵ دقیقه) این موضوع اهمیت بیشتری دارد.

تکنیک‌های پیشرفته ساخت اندیکاتور در تریدینگ ویو

تکنیک‌های پیشرفته ساخت اندیکاتور در تریدینگ ویو با استفاده از پاین اسکریپت عبارتند از:

تایم‌فریم‌های چندگانه (MTF)

گاهی نیاز است داده‌ها را از تایم‌فریم دیگر (مثلا روزانه یا هفتگی) در استراتژی فعلی استفاده کنید. برای این کار از تابع request.security() استفاده می‌شود:

dailyClose = request.security(syminfo.tickerid, "D", close)

با این روش می‌توانید مثلا در نمودار ۱ ساعته، داده‌های روزانه را همزمان تحلیل کنید.

برای جلوگیری از بروز خطا یا پرش داده‌ها، پارامتر barmerge.gaps_on را فعال کنید تا داده‌های تایم‌فریم بالاتر به‌درستی هماهنگ شوند.

محاسبه اندازه پوزیشن

در استراتژی‌های حرفه‌ای، اندازه معامله نباید ثابت باشد. بر اساس درصدی از موجودی حساب و میزان ریسک تعیین می‌شود. مثلا می‌توانید طوری برنامه‌ریزی کنید که فقط ۱٪ از سرمایه در هر معامله در خطر باشد. این کار به پایداری عملکرد در بلندمدت کمک می‌کند.

ساخت استراتژی در تریدینگ ویو بدون کدنویسی

اگر با برنامه‌نویسی آشنا نیستید، باز هم می‌توانید از امکانات تریدینگ ویو استفاده کنید. ابزارهایی مانند Strategy Builder یا ویرایشگرهای گرافیکی مانند Pineify امکان ساخت اندیکاتور را بدون نوشتن کد فراهم می‌کنند. همچنین با استفاده از ChatGPT یا دیگر مدل‌های هوش مصنوعی، می‌توانید تنها با توضیح دادن منطق استراتژی خود، کد کامل پاین اسکریپت (حتی نسخه ۶) را دریافت کنید. اگر خطایی رخ دهد، می‌توانید پیام خطا را به هوش مصنوعی بدهید تا کد را اصلاح کند.

اتصال استراتژی به معاملات زنده

نکته مهمی که باید بدانید این است که تریدینگ ویو به‌صورت مستقیم سفارشات را اجرا نمی‌کند. بلکه وظیفه آن تولید سیگنال یا هشدار است. برای اجرای واقعی معاملات باید هشدارهای تریدینگ ویو را به سرویس‌های واسطه‌ای مانند PineConnector متصل کنید. این سرویس‌ها سیگنال‌ها را از طریق API به حساب شما در صرافی یا بروکر ارسال می‌کنند. برای استفاده از این قابلیت به حساب پرمیوم تریدینگ ویو نیاز دارید.

نسخه پرمیوم تریدینگ ویو
نسخه پرمیوم به دلیل تعادل بین امکانات پیشرفته، بهترین گزینه برای اکثر معامله‌گران حرفه‌ای محسوب می‌شود.

مزایا و معایب ساخت اندیکاتور در تریدینگ ویو

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

مزایای پاین اسکریپت

  • یادگیری سریع و ساختار ساده
  • اجرای سریع روی سرورهای تریدینگ ویو
  • امکان بک‌تست دقیق و مقایسه عملکرد
  • دسترسی به کتابخانه‌های آماده و مثال‌های متنوع
  • پشتیبانی از چند تایم‌فریم و اندیکاتورهای ترکیبی

محدودیت‌ها و خطاهای رایج

  • عدم اجرای مستقیم سفارش در بازار (نیاز به واسطه)
  • محدودیت حافظه و تعداد خطوط در اسکریپت‌های پیچیده
  • احتمال بروز خطای «Loop Too Deep» در حلقه‌های سنگین
  • استفاده نادرست از توابع سری زمانی که ممکن است باعث داده‌پریشی (repainting) شود

نکات برای رفع خطاها

  • نکات مهم برای رفع خطاها هنگام ساخت اندیکاتور در تریدینگ ویو:
  • از دستور var برای ذخیره متغیرهای پایدار استفاده کنید.
  • برای دیباگ کردن کد از تابع label.new() برای چاپ داده‌ها روی نمودار کمک بگیرید.
  • اگر ارور نسخه می‌گیرید، مطمئن شوید اولین خط کد //@version=5 است.

خلاصه مقاله ساخت اندیکاتور در تریدینگ ویو

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

ثبت امتیاز مطلب

امتیاز خود به این مطلب را ثبت کنید

01234
25 / 5.0

به اشتراک بگذارید

دیدگاه کاربران

دیدگاه شما بعد از تایید در سایت نمایش داده خواهد شد



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

ارزیابی

هنوز کسی نظری ثبت نکرده!