برنامه نویسی و اتوماسیون در بازاهای مالی
فعالیت در بازارهای مالی و رقابت با معامله گران کوچک و بزرگ از سرتاسر جهان، مستلزم دانش و تجربه بالا و سرعت و دقت در تحلیل و ورود و خروج به موقعیتهای معاملاتی است. جذابیتهای مالی این بازار موجب گرایش معاملهگران و موسسات مالی به سمت فناوریهای بهروز از جمله هوش مصنوعی و انواع ربات و سیستمهای تحلیلی پیشرفته گردیده است و همین موضوع روز به روز عرصه رقابت را بر معاملهگران سنتی تنگتر مینماید؛ تا حدی که برای دوام و کسب سود در این بازار، استفاده از ابزارهای نوین تحلیلی و معاملاتی ناگزیر به نظر میرسد.
یک تحلیل دقیق، مستلزم دسترسی به دادههای قیمتی، بررسی رفتار قیمت در تایمفریمهای مختلف، یافتن محدودههای حمایت و مقاومت و روندها، بررسی و مقایسه حجم معاملات، در نظر گرفتن رفتار سایر سهام و نمادها، بررسی رفتار اندیکاتورها و اسیلاتورها و … میباشد. انجام چنین تحلیلی به صورت سنتی معمولا بسیار وقتگیر بوده و احتمالا با اشتباهات محاسباتی همراه است.
رفتار و جهشهای ناگهانی قیمت، به ویژه برای نوسانگیران از اهمیت بالایی برخوردار است و با تحلیل دستی، عملا شانسی برای رقابت و موفقیت نخواهیم داشت. ایراد دیگر تحلیل دستی و سنتی آن است که این نوع تحلیل بر روی یک نماد صورت میگیرد و بنابراین شانسها و موقعیتهای معاملاتی در سایر نمادها را از دست خواهیم داد.
از این رو برای محاسبات سریع و دقیق و تحلیل دادههای قیمتی نمادها و سهام مختلف به صورت موازی، میبایست از ابزارهای محاسباتی و تحلیلی استفاده نمود. برای این کار تاکنون نرمافزارها و ابزارهای متفاوتی با ویژگیهای منحصربفرد ایجاد گردیده است. به نحوی که روش تحلیلی ما توسط برنامهنویسی و کد به کامپیوتر معرفی و شناسانده میشود و پس از آن، کامپیوتر با سرعت و دقت بالا وظیفه تحلیل را بر عهده خواهد داشت.
از دیگر کاربردهای مهم برنامهنویسی در بازارهای مالی، امکان بررسی و سنجش ایدهها و استراتژیهای معاملاتی با دادههای قیمتی گذشته (بکتست) و امکان انجام معاملات آنلاین (توسط ربات معاملهگر) میباشد. لازم به ذکر است که یادگیری برنامهنویسی بیش از آن که به آموختن دستورات و کدهای مختلف وابسته باشد، به تمرین و خلاقیت برنامهنویس بستگی دارد و پیشنهاد میگردد همزمان با دیدن آموزشها، مسئله و مثالهایی طرح نموده و سعی در کدنویسی آن نمایید.
معرفی سایت تریدینگ ویو
از جمله ابزارهای تحلیلی میتوان به قابلیت برنامهنویسی در سایت سایت تریدینگ ویو (tradingview.com) اشاره کرد. این سایت امروزه برای تحلیلگران و معامله گران بازارهای مالی کاملا شناخته شده است و امکانات پرشمار و ابزار قدرتمند، موجب محبوبیت روزافزون این سایت و پذیرش و مقبولیت بالای آن در میان فعالان بازارهای فارکس، رمز ارز و … گردیده است.
امکان نوشتن اندیکاتورها و استفاده از ربات برای محاسبات سریع و دقیق و تحلیل دادههای قیمتی نمادها و سهام مختلف و همچنین بررسی و سنجش ایدههای معاملاتی، همواره از مهمترین نیازهای فعالان بازارهای مالی بوده است و از این رو، تاکنون نرمافزارها و ابزارهای متفاوتی با ویژگیهای منحصربفرد ایجاد گردیده و مورد استفاده قرار گرفته است. از جملهی این ابزارها میتوان به قابلیت برنامهنویسی در سایت تریدینگویو اشاره کرد.
زبان برنامه نویسی پاین اسکریپت
در این دوره، کدنویسی با Pine Script آموزش داده میشود. پایناسکریپت، زبان برنامهنویسی اختصاصی سایت تریدینگ ویو است و اگر در مرز بندی میان برنامهنویسی و اسکریپت نویسی سختگیر باشیم، باید پاین اسکریپت را همان طور که از نام آن برمیآید در رده اسکریپت ها تقسیم بندی کنیم.
برخی از ویژگی های پایناسکریپت :
◼ سادگی و راحتی یادگیری و کار کردن با pine script
◼ تحت وب بودن آن و قابلیت دسترسی به کدها در هر مکان از بستر اینترنت
◼ عدم نیاز به نرمافزار خاص
◼ امکان به اشتراکگذاری برنامهها و استفاده از برنامههای نوشته شده توسط دیگران
◼ دسترسی به دادهها و دیتابیس جامع پلتفرم آنلاین تریدینگویو
◼ امکان ساخت اندیکاتورهای سفارشی با حق انتخابهای گسترده
◼ امکان بررسی و ارزیابی استراتژیهای معاملاتی با قابلیت backtest
نمایشی بخش کوتاهی از این آموزش پاین اسکریپت:
ردیف | عنوان |
1 | معرفی دوره معرفی پایناسکریپت / کاربردهای برنامهنویسی در تحلیل و معاملهگری |
نمایش | حجم : 096MB | زمان: 21min | |
2 | مقدمات برنامهنویسی / تعریف مسئله قبل از شروع کدنویسی |
نمایش | حجم : 105MB | زمان: 29min | |
3 | دستورات شرطی ، حلقه / توابع |
نمایش | حجم : 087MB | زمان: 28min | |
4 | ترسیم اندیکاتور با دستور plot |
نمایش | حجم : 141MB | زمان: 30min | |
5 | معرفی انواع متغیر / روشهای نوشتن دستور شرطی if |
نمایش | حجم : 156MB | زمان: 34min | |
6 | معرفی دستور plotshape |
نمایش | حجم : 166MB | زمان: 34min | |
7 | استفاده از دستور for برای حلقه / گرفتن ورودی با دستور input |
نمایش | حجم : 157MB | زمان: 34min | |
8 | ترکیب دستورات شرطی و حلقه |
نمایش | حجم : 080MB | زمان: 21min | |
9 | معرفی دستورهای fill ، sma و cross / استفاده از رنگهای مشروط در ترسیمات |
نمایش | حجم : 094MB | زمان: 24min | |
10 | دستور bgcolor برای تغییر رنگ زمینه کندلها / دستور label.new برای ایجاد برچسب در کندلها |
نمایش | حجم : 068MB | زمان: 19min | |
11 | استفاده از اطلاعات تایمفریمهای دیگر / استفاده از اطلاعات نمادهای دیگر |
نمایش | حجم : 132MB | زمان: 27min | |
12 | مثال از ترکیب الگوی پوششی و RSI برای تعیین نقاط معاملاتی |
نمایش | حجم : 166MB | زمان: 35min | |
13 | تنظیمات آلارم در سایت tradingview / دستور alertcondition برای نوشتن هشدارها |
نمایش | حجم : 116MB | زمان: 23min | |
14 | دستور tostring برای استفاده از دادهها در متن / مقداردهی به متغیر با دستور var / تنظیمات اندیکاتور در دستورات study و plot / نمایش کندل با barcolor و plotcandle |
نمایش | حجم : 138MB | زمان: 28min | |
15 | استراتژی نویسی و بکتستگیری / از کردن و بستن معامله / تعیین حد ضرر و حد سود |
نمایش | حجم : 346MB | زمان: 71min | |
16 | معرفی دستور time / تعیین بازه زمانی برای بکتست / تعریف تابع |
نمایش | حجم : 202MB | زمان: 52min |
ویدئو های پیوست شده جدید :
17 | تنظیم هشدار (1) : تنظیم هشدار در تریدینگ ویو / تنطیم آلارم روی قیمت / تنظیم آلارم روی اندیکاتور / تنظیم هشدار روی استراتژی / تنطیم هشدار روی ابزارهای ترسیمی |
نمایش | حجم : 100MB | زمان: 30min | |
18 | تنظیم هشدار (2) : استفاده از پیغام داینامیک / استفاده از پیغام های ترکیبی /بررسی شرایط جداگانه برای هشدارهای مستقل |
نمایش | حجم : 087MB | زمان: 27min | |
19 | تنظیم هشدار (3) : استفاده از دستور alert / تنظیم هشدار روی واچ لیست / بسط هشدار به نمادها و تایم فریم های دیگر |
نمایش | حجم : 106MB | زمان: 36min | |
20 | ابزارهای ترسیمی : ایجاد ابزارهای ترسیمی و نوشتاری / ترسیم باکس و خطوط و جدول |
نمایش | حجم : 136MB | زمان: 37min |
|
21 | اندیکاتور ها : استفاده از بیش از 3 اندیکاتور در اکانت های رایگان سایت تریدینگ ویو با روش ترکیب اندیکاتورها |
نمایش | حجم : 067MB | زمان: 18min | |
22 | آرایه ها : تعریف، ویرایش و استفاده از آرایه ها در پاین اسکریپت |
نمایش | حجم : 136MB | زمان: 43min |
33 دیدگاه
Afshin
چه جوری میشه با ایشون در ارتباط بود
آیدی یا ایمیل دارن
مدیریت
در پاسخ به: Afshinای دی کانال در ابتدای ویدئو ها درج شده
tasoomas
با عرض سلام خدمت سایت وزین فراچارت و جناب آقای خیر اندیش و تشکر بابت زحمتی که در ارایه این اثر فاخر کشیدن. یه تقاضایی داشتم ازونجایی که مطالب پیوسته به ذهن بشینه و فراگیری یک دست باشه ارایه آموزش ها زمانبندی خاصیه داره؟ یعنی هر هفته قراره ارایه بشن آموزش ها؟
با تشکر
مدیریت
در پاسخ به: tasoomasسلام ممنون از شما. در کمتر از یک هفته دیگر کل آموزش ها در سایت قرار خواهد گرفت
کیوان
تشکر از شما آقای وحید خیر اندیش.
زحمات همه شما بزرگواران مطمئنن راه گشای بسیاری خواهد بود.
وحید
در پاسخ به: کیوانسلام، ممنون. امیدوارم که این دوره آموزشی مفید واقع بشه. پر سود باشین
آرش
سوالی داشتم از مدیر یا استاد خیر اندیش
تا جایی که بنده اطلاع دارم ایرانیان از سایت تریدینگ ویو صرفا جهت تحلیل استفاده میکنند , مگر امکان باز کردن حساب لایو و پوزیشن گیری هم وجود دارد ؟
وحید
در پاسخ به: آرشسلام دوست عزیز
تریدینگ ویو یک بستر تحلیلی است، و همه افراد، چه ایرانی و چه غیرایرانی از آن صرفا برای تحلیل استفاده می کنند. ارسال سیگنال های سایت تریدینگ ویو به بسترهای معاملاتی (مثلا صرافی بایننس) برای معامله و پوزیشن گیری نیز با ابزارهای واسطه امکان پذیر است.
علیرضا اورانوس
سلام آقای خیراندیش عزیز
ممنون از بابت ویدیو های مفیدی که ساختید.
دو تا سوال خیلی مهم داشتم از حضورتون.
یکی اینکه چطور میشه داخل استراتژی گفت که استاپ لاس رو بذار مثلا ۱ دلار پایین از لوی همون کندلی که سیگنال خرید داده.
و دوم اینکه چطور میشه گفت حد سود رو بذاره وقتی قیمت ۲ درصد بیشتر از قیمت خرید شد. این همش کلوز کندل رو معیار میگیره. من میخوام بگم کلوزش رو در نظر نگیره، های رو در نظر بگیره
وحید
در پاسخ به: علیرضا اورانوسسلام دوست عزیز
ورود به پوزیشن رو زیر مجموعه یک دستور شرطی if قرار بدین و حد ضرر رو هم توی همون زیرمجموعه تعریف کنین، اینجوری دیگه توی کندلهای بعد چون شرایط if واسه ورود به معامله برقرار نیست وارد زیرمجموعه if نمیشه و بنابراین حد ضرر تغییر نمیکنه
واسه سوال دوم حد سود رو با دستور زیر محاسبه کنید:
strategy.position_avg_price * 1.02
sabbagh
با عرض سلام و احترام . ممنونم از جناب آقای خیر اندیش بابت این آموزش مفید
دلایل مفید بودن ویدیو ها :
۱-توضیح کامل مطالب
۲-خودداری از توضیحات اولیه و تکنیکال که باعث خستگی میشود
۳-آموزش نحوه یادگیری از آموزش های پاین اسکریپت سایت تریدینگ ویو
۴-آموزش به روش کاملا حرفه ای و قابل فهم برای کلیه مخاطبان
۵- صدای خوب آموزش و بدون خستگی و بدون توپوق زدن که باعث میشه تا مخاطبین به هیچ وجه در زمان یادگیری خسته نشوند . همچنین سرعت مناسب در توضیح موضوعات
۶- تهیه کل ویدیوها و بستن کل مباحث
۷- آموزش فرمت اصلی برنامه نویسی از لحاظ ساختار الگوریتم بدون بیان توضیحات خسته کننده
در کل از جناب آقای خیر اندیش سپاسگذارم و به ایشون تبریک میگم .
به مدیر سایت پیشنهاد میدم قسمتی رو در سایت تعبیه کنید تا هر مخاطبی برای هر ویدیوی مفیدی که دوست داشت بتونه مبلغی رو پرداخت کنه . چون بعضی و فقط بعضی از آموزش های سایت واقعا ارزش پرداخت هزینه دارند همانطور که بعضی از ویدیوها اصلا ارزش دیدن ندارند.
وحید
در پاسخ به: sabbaghسلام دوست عزیز
ممنونم از لطف شما
امیدوارم که آموزش ها برای شما و سایر دوستان مفید باشه
پرسود باشین
siamak vakili
استاد خیر اندیش،آموزش تان بسیار عالی است، خدا به شما سلامتی و برکت دهد.
وحید
در پاسخ به: siamak vakiliسلام، سپاس از بزرگواری شما. سربلند باشین
Reza
با عرض سلام و خسته نباشید خدمت مدیر سایت، لینک ویدئوهای ۱۷ تا ۲۲ در دسترس نیست و نمیشه دانلود کرد.
مدیریت
در پاسخ به: Rezaسلام و احترام. ایرادی نداره اوکی هست
saman
با سلام ممنون از اموزش عالی
من چند تا سوال داشتم اگر لطف کنید جواب بدید واقعا ممنونتون میشم.
در حساب پریمیوم
۱٫چطور میشه در تریدینگ ویو (تعداد)کندلها در یک چارت رو به صورت نامحدود گذاشت مانند متا تریدر که گزینه برای نامحدود کردن تعداد کندلها داره درتریدینگ ویو در تایم فریمهای پایین گذشته چارت به دلیل محدود بودن تعداد کندلها نمایش داده نمیشود.
۲-چطور میشه بر روی یک اندیکاتور چند تا اندیکاتور دیگه انداخت مثلا بر روی rsi دو تا موینگ انداخت .در متا تریدر با درگ کردن اندیکاتور میشه این کار رو کرد .
۳٫فیبو ناچی در متا تریدر میشه به هر تعداد خطوطی که کاربر بخواد در تنظیمات میشه اضاف کرد و حتی شماره خطوط رو هم میشه انتخاب کرد ایا در تریدینگ ویو هم امکان این هست ؟ چطور؟
واقعا اگر جواب بدید خیلی ممنونتم
وحید
در پاسخ به: samanسلام دوست عزیز
متاسفانه محدودیت تعداد کندل وجود داره و توی اکانت های رایگان تقریبا ۵ هزار کندل (در هر تایم فریم) نمایش داده میشه و توی اکانت های پریمیوم تعداد کندل ها حدودا ۴ برابر هست
با اکانت های رایگان تریدینگ ویو میشه تا ۳ اندیکاتور روی چارت اضافه کرد. واسه اندیکاتورهای بیشتر میتونید اون ها رو با هم ترکیب کنید. آموزش این قسمت رو توی قسمت “ویدئوهای پیوست شده” ببینید
توی تریدینگ ویو هم میتونید ۲۴ تا سطح مختلف رو واسه فیبوناچی به دلخواه تعیین کنید که معمولا این تعداد سطح واسه تحلیل نیاز نیست، و در کنار این موضوع، امکان کدنویسی واسه ابزار دلخواه هم وجود داره
Sepehr
تشکر فراوان خدمت استاد خیر اندیش بابت زحمتی که کشیدید
داخل ویدیو ها ابتدای کد ها ورژن ۴ نوشته شده
در صورتی که وقتی اسکریپت جدید باز می کنم ورژن ۵ نوشته شده
و کلا ارور میده مخصوصا دستورات for و if
چیکار کنم که مشکل حل بشه
وحید
در پاسخ به: Sepehrسلام دوست عزیز
ورژن ۵ پاین اسکریپت بعد از انتشار این دوره آموزشی ریلیز شده
اما تفاوت های بین ورژن ۴ و ۵ خیلی زیاد نیست
یک فیلم آموزشی راجع به این موضوع توی یوتیوب منتشر کردم و انشالا در صورت صلاحدید مدیریت محترم سایت فراچارت بعدا ویدئوهای جدید همین جا هم در اختیارتون قرار میگیره
Behshad
سلام
خیلی عالی بود. تا آخر دوره رو دیدم. ممنون از تدریس خیلی خوبتون
وحید
در پاسخ به: Behshadسلام، ممنونم از لطفتون. پاینده باشین
شهرام
در پاسخ به: وحیدسلام. استاد. ممنون از مطالب پر باری که به اشتراک گذاشتید.فعلا دو کلیپ اول رو دیدم لذت بردم. اگر ممکنه مقایسه ای بین زبان mql و afl و pine script انجام بدید، میخوام یکی از این زبان ها رو مسلط بشم.
شهرام
در پاسخ به: وحیدآموزش ها رو کامل دیدم. خلاصه اما بسیار مفید بود. لطفا آموزش ها رو ادامه بدید. ممنون
arsh_imani
سلام خدمت شما استاد خیراندیش
اول میخواستم تشکر کنم از آموزش های خیلی عالی و مفید شما
و چند سوال هم داشتم که اگر پاسخ بفرمایید متشکر میشم
۱- اگر بخواهیم یک برنامه ای که نوشتیم روی چند ارز یا در چند تایم فریم استفاده کنیم ، مثلا دستور security در ورژن چهار یا معادلش در ورژن ۵ پاین اسکیریپت ، ظاهرا محدودیتی وجود داره برای استفاده از این دستور در دستور شرطی یا حلقه ها ، آیا راهی هست که بشه این کار رو کرد و هم زمان در یک برنامه ، اسامی ارزها را از آرایه گرفت و یا از آرایه چند تایم فریم رو گرفت و کنترل کرد؟
۲ – میخوام با دستور ta.pivothigh پیوتهای ۵۰ کندل آخر رو مشخص کنم منتهی دستوری برای این که محدود کنم این بازه رو پیدا نکردم ، if bar_index > last_bar_index -50 از این دستور استفاده کردم که برنامه اجرا میشه منتهی این خطا رو میده :
The function ‘ta.pivothigh’ should be called on each calculation for consistency. It is recommended to extract the call from this scope.
سعی کردم از دستور max_bars_back هم استفاده کنم متاسفانه جواب نداد
۳ – مرجعی انگلیسی برای یادگیری پاین اسکریپ اگه معرفی بفرمایید متشکر میشم ، خود تریدینگ ویو خیلی جاها دستورات را سطحی اشاره کرده و رد شده
خیلی متشکر از آموزش شما ، همین آموزشها باعث شد که امیدوارانه تر استارت بزنیم یادگیری این اسکریپت را
masiha107
سلام و خدا قوت . سپاسگذارم از آموزش فوق العاده عالیتون .
یک سوال داشتم ممنون میشم کمکم کنید من میخواستم چارت زنده ی تریدینگ ویو رو در سایت خودم قرار بدم چطور میتونم این کار رو انجام بدم؟ برای سایتی میخوام که انگلیسی هیت و برای خارج از کشوره .
majid15
سلام وقت بخیر . میخوام برای اندیکاتور ssl hybrid (mihkel00) الرت بنویسم که روی سایر symbol ها هم پیام بده اما با ارور :
Cannot use a mutable variable as an argument of the security function
مواجه میشم . خیلی گشتم اما چیزی در این باره پیدا نکردم که علت این ارور برای چیست . ممنون میشم راهنمایی کنید
Mhmdmlkn
سلام وقتتون بخیر، یه سوال
در پاین اسکریپت چطور می تونم وقتی یک معامله ی باز دارم یه معامله ی جدید باز کنم بدون اینکه معامله ی قبلی بسته بشه؟
younes145
سلام استاد گرامی. ایا با پاین اسکریپت امکان فیلتر نویسی هم هست؟ اینکه بین چند صد ارز دیجیتال بگرده وارز دیجیتال با اون شرایطی که مد نظر ما برای خرید هست پیدا کنه و به ما نشون بده. دقیقا مثل چیزی که در متا تریدر داریم.
مدیریت
در پاسخ به: younes145سلام بله امکان فیلتر کردن ارزها بر اساس شروطی که برنامه نویس مشخص میکنه وجود داره
Yasin80hm
سلام استاد وقتتون بخیر
۱_ با استفاده از زبان pine script میشه ربات آربیتراژ مثلثی رو طراحی کرد؟
۲_ کد های نوشته شده با زبان c++ ، روی تریدینگ ویو قابل اجرا هستن؟
۳_ سرعت اجرای کدوم زبان بالاتر هست؟c++ یا pine script؟
aminhazegh
با سلام و خسته نباشید خدمت دوستان برنامه نویس
در در خواستی داشتم
چون در برنامه نویسی اگه یک تیم باشیم و در مورد ایده و برنامه هم فکری وجود داشته باشه ،خیلی خیلی زودتر و بهتر به نتیجه میرسیم، پس بیاین به جایی این که از کسی کمک بگیریم و به این فکر کنیم که چرا نمیتونیم جایی مشغول به کار بشیم ،خودمون یک تیم تشکیل بدیم،خودمون ایده بدیم و طراحی و کدنویسیش کنیم،بعد میتونیم هم خودمون تو چارت ازش استفاده کنیم و یا اینکه این ربات رو بفروشمیش.من خودم چندتا ایده دارم، ولی نیاز به چند نفر مثل خودم دارم،اگه کسی خواست تو این تیم باشه ،به ایمیل من ، یا همینجا یک پیام بده،ممنون از اینکه وقت گذاشتین
ادرس ایمیل من
aminhazeghi2020@gmail.com
arman4704
سلام وقتتون بخیر
یه کد نوشته شده دارم که نتونستم بفهمم چیکار میکنه تو تعریفش مشکل دارم
ممنون میشم کمکم کنین
\study(“G-Channel Trend Detection”,shorttitle=”G-Trend”,overlay=true)
length = input(100),src = input(close)
//—-
a = 0.,b = 0.
a := max(src,nz(a[1])) – nz(a[1] – b[1])/length
b := min(src,nz(b[1])) + nz(a[1] – b[1])/length
avg = avg(a,b)
//—-
crossup = b[1] close
crossdn = a[1] close
bullish = barssince(crossdn) <= barssince(crossup)
c = bullish ? color.lime : color.red