قبل از شروع می خواهیم به این سوال پاسخ بدیم که چرا وقتی میشه از ماژول ها و ابزارهای آماده (no code) استفاده کرد، نیاز هست خودمون با کد فرمول و فیلتر بنویسیم
هدف تمامی این ابزارها بالا بردن سرعت و دقت در تحلیل و آنالیز داده ها ی معاملاتی می باشد. اما ویژگی های منحصر بفرد فقط که در زیر آمده فقط در فرمول نویسی وجود دارد:
-
🔄 🎛️ نهایت انعطاف، کنترل و سفارشی سازی
- امکان ایجاد استراتژیهای منحصر به فرد متناسب با نیازهای خاص
- قابلیت تنظیم دقیق پارامترها و شرایط ورود و خروج از معاملات
- امکان ترکیب ایدههای مختلف و ایجاد استراتژیهای پیچیده
- سهولت در اضافه کردن شاخصها یا روشهای تحلیلی جدید
- امکان اعمال سریع تغییرات در پاسخ به تغییرات شرایط بازار
- قابلیت ایجاد مکانیسمهای خودکار برای تطبیق با روندهای جدید
- توانایی اصلاح و بهبود سریع استراتژی در صورت نیاز
-
🔒 🛡️ امنیت و محرمانگی
- اطمینان از عدم وجود کدهای مخرب یا ناشناخته در استراتژی
- حفظ محرمانگی استراتژیهای اختصاصی
-
🚀 🌟 خلاقیت و نوآوری
- فرصت برای پیادهسازی ایدههای جدید و نوآورانه در معاملات
- امکان ترکیب روشهای سنتی با تکنیکهای مدرن مانند یادگیری ماشین
شروع کد نویسی
در این بخش می خواهیم ببینیم چطور می توانیم به اطلاعات معاملاتی و موارد مورد نیاز که در نماد پایه وجود داره جهت استفاده در فرمول نویسی دسترسی پیدا کنیم.
جهت دسترسی به نماد پایه از کلمه کلیدی UA استفاده می کنیم سپس با گزاشتن نقطه به مقادیر مورد نیازمون دسترسی پیدا می کنیم.
برای مثال جهت دسترسی به نام نماد از کد UA.Namad و نوسان پذیری تاریخی UA.HV
استفاده می کنیم.
توضیحات کامل و ویژگی های و مقادیر در قسمت راهنمای فرمول نویسی بخش نماد پایه آمده ما در اینجا فقط می خواهیم نحوه استفاده از اونها رو تمرین کنیم.
در این تمرین اطلاعات نماد پایه به شکل زیر است
قرارداد
در این بخش می خواهیم ببینیم چطور می توانیم به اطلاعات معاملاتی و موارد مورد نیاز که در قرارداد وجود داره جهت استفاده در فرمول نویسی دسترسی پیدا کنیم.
جهت دسترسی به نماد پایه از کلمه کلیدی Option استفاده می کنیم سپس با گزاشتن نقطه به مقادیر مورد نیازمون دسترسی پیدا می کنیم.
برای مثال جهت دسترسی به نام نماد از کد Option.Namad و قیمت اعمال Option.Strike
استفاده می کنیم.
توضیحات کامل و ویژگی های و مقادیر در قسمت راهنمای فرمول نویسی بخش قرارداد آمده ما در اینجا فقط می خواهیم نحوه استفاده از اونها رو تمرین کنیم.
در این تمرین اطلاعات نماد پایه به شکل زیر است
اطلاعات معاملاتی
در این بخش می خواهیم ببینیم چطور می توانیم به اطلاعات معاملاتی نماد پایه و قرارداد جهت استفاده در فرمول نویسی دسترسی پیدا کنیم.
جهت دسترسی به اطلاعات معاملاتی از پراپرتی TIاستفاده می کنیم
در نماد پایه UA.TI
و در قرارداد از Option.TI
سپس با گزاشتن نقطه به مقادیر مورد نیازمون دسترسی پیدا می کنیم.
برای مثال جهت دسترسی به آخرین قیمت در نماد پایه از کد Option.TI.LastPrice و در قرارداد Option.TI.LastPrice
استفاده می کنیم. نام پراپرتی های TI در نماد پایه و قرارداد یکسان می باشد
توضیحات کامل و ویژگی های و مقادیر در قسمت راهنمای فرمول نویسی بخش TI آمده ما در اینجا فقط می خواهیم نحوه استفاده از اونها رو تمرین کنیم.
در این تمرین اطلاعات معملاتی نماد پایه به شکل زیر است
در این تمرین اطلاعات معاملاتی قرارداد به شکل زیر است
ایجاد ستون های محاسباتی
تبریک به بخش هیجان انگیز و کاربری فرمول نویسی رسیدید! از این جا به بعد فرمول های کاربردی می نویسیم و تمرین می کنیم و متوجه خواهید شد که چرا تمرین های ساده قبلی رو انجام دادیم.
تمرین های این قسمت به سادگی قسمت های قبل هست اما کاربردی
در این تمرین اطلاعات معملاتی نماد پایه به شکل زیر است
در این تمرین اطلاعات معاملاتی قرارداد خرید (call) به شکل زیر است
فیلتر نویسی
به زبان ساده فیلترها ابزاری هستند که به شما کمک میکنند تا از بین صدها قرارداد که در دیدهبان وجود دارد، قراردادی را شناسایی کنید که تمام فاکتورهای مد نظر شما را دارا باشند. در این قسمت می خواهیم فرمول چند فیلتر ساده را بنویسیم و تمرین کنیم. جهت اجرا و مشاهده نتیجه فیلتر ها در قسمت دیده بان روی ساخت فیلتر کلیک کنید
بخاطر داشته باشید ما در فیلتر نویسی چیزی را نمایش نمی دهیم فقط یک یا چند شرط را روی قرارداد ها اجرا می کنیم و در نهایت باعث فیلتر شدن تعداد مشخصی قرارداد
با مشخصاتی که مد نظر ما هست می شویم . به مثال ها توجه کنید
فیلتر قراردادهایی که نماد پایه آنها "اهرم" می باشد
توجه کندی جهت شرط مساوی از == استفاده می کنیم
فیلتر قراردادهایی که موقعیت باز بیشتر از 100 دارند
فیلتر قراردادهایی که نماد پایه ان ها صف خرید می باشد
بازه بیشترین قیمت daily_price_high
فیلتر قراردادهایی که حجم معاملات بالای 100 دارند
فیلتر نماد هایی که ارزش ذاتی بیشتر از صفر دارند
let intrinsictValue;
if (Option.Type == 'call')
intrinsictValue = UA.TI.LastPrice - Option.Strike;
else intrinsictValue = Option.Strike - UA.TI.LastPrice;
intrinsictValue > 0;
ابتدا مقدار ارزش ذاتی را بدست می آوریم و داخل متغییر intrinsictValue قرار می دهیم سپس شرط را اجرا می کنیم
اختلاف سر به سری (عرضه) قرارداد اختیار خرید کمتر از 10درصد تا نماد پایه باشد
//محاسبه سربه سری
let n1 = Option.TI.Sell_1_Price+ Option.Strike;
//محاسبه درصد اختلاف
let n2 = CalcRateChange(UA.TI.LastPrice, n1);
//شرط
n2 < 10
فیلتر قراردادهایی که کمتر از 30 روز تا سر رسید دارند
پایان