جهت نوشتن فرمول و فیلتر به
صفحه دیده بان رفته سپس بر روی
ساخت ستون یا ساخت فیلتر کلیک کنید.
نام ستون یا فیلتر را مشخص، کد را در قسمت
ادیتور نوشته و در نهایت جهت مشاهده نتیجه بر روی
ذخیره کلیک کنید .
برای نوشتن فرمول و فیلتر نیاز به دانش برنامه نویسی نیست و ما فقط چیزی را که فکر می کنیم ، بصورت کد در می آوریم و شاید بتوان گفت اگر هیچ دانشی نداشته باشید یاد گرفتن و انجام آن کمتر از چند ساعت زمان لازم دارد.
در مقاله
کاورد کال به طور کامل به نحوه پیاده سازی و جزییات لازم پرداخته ایم. اکنون به اموزش کد نویسی برای یافتن موقعیت های مناسب می پردازیم.
برای تشخیص مناسب بودن قرارداد جهت کاورد کال یکی از مهمترین پارامتر ها محاسبه سود ماهیانه با توجه به مبلغ دریافتی و هزینه ای اجرای استراتژی می باشد . معمولا اگر سود بدست آمده از سود بدون ریسک(سود بانکی) بالاتر باشد می توان گفت قرارداد جهت کاورد کال مناسب است و هر چه این سود بالاتر باشد بهتر .
در مرحله اول لازم است با استفاده از
راهنمای فرمول نویسی کدهای لازم را استخراج کنید تا در نوشتن از ان ها بهره ببرید.
ایجاد ستون و محاسبه سود در صورت اعمال (در سود بسته شدن قرارداد)
الف- در حالت فروش قرارداد و وثیقه قرار دادن سهم پایه
به این منظور لازم است ابتدا متغیر هایی تعریف کید
1. مبلغ دریافتی در زمان سررسید( حداکثر سود)
( قیمت اعمال – قیمت خرید سهم ) + پرمیوم دریافتی
;var profit = (Option.Strike - UA.TI.LastPrice + Option.TI.Buy_1_Price) * Option.Size
2. سرمایه درگیر
در این حالت پریمیوم
دریافتی آزاد و فقط پول خرید سهام پایه به عنوان وجه بلوکه در نظر گرفته میشود
نحوه محاسبه
سرمایه درگیر با سر به سری فروشنده مشابه می باشد
قیمت خرید سهم
– قیمت فروش قرارداد( پرمیوم دریافتی)
var block = (UA.TI.LastPrice -
Option.TI.Buy_1_Price)* Option.Size;
3. درصد سود کل
var rate = (profit / block) * 100;
فرمول کل
var profit = (Option.Strike - UA.TI.LastPrice +
Option.TI.Buy_1_Price) * Option.Size;
var block = (UA.TI.LastPrice - Option.TI.Buy_1_Price)*
Option.Size;
var rate = (profit / block) * 100;
جهت محاسبه سود ماهیانه لازم است متغیر آن تعریف شود
محاسبه تعداد ماه مانده تا سررسید
var month = 1;
if (Option.DaysUntilMaturity > 30)
month = (Option.DaysUntilMaturity / 30);
month = month.toFixed(1);
toFixed جز تابع های پر کاربرد می باشد که تعداد رقم های
اعشار عدد را مشخص می کند . در کد بالای برای رند شدن تعداد ماه از آن استفاده کرده ایم .
همچنین می توان از تابع MP برای تبدیل سود کل به ماهیانه استفاده کرد.
var mp = MP((profit / block) * 100, Option.DaysUntilMaturity);
در نهایت با قراردادن تمامی قطعه کدهای گفته شده به فرمول نهایی می رسید و در دیده بان می توانید ستونی ایجاد کنید که سود ماهیانه هر موقعیت کاورد کال را می توانید مشاهده کنید.
var month = 1;
if (Option.DaysUntilMaturity > 30)
month = (Option.DaysUntilMaturity / 30);
month = month.toFixed(1);
var block = (UA.TI.LastPrice - Option.TI.Buy_1_Price)* Option.Size;
var profit = (Option.Strike - UA.TI.LastPrice + Option.TI.Buy_1_Price) * Option.Size;
//محاسبه سود ماهانه
var mp = (profit / block) * 100;
mp = (mp / month).toFixed(1);
if (Option.TI.Buy_1_Price>0)
mp;
else '';
از شرطها زمانی استفاده میشود که میخواهیم در صورت برقراری یک وضعیت خاص، قطعه کد مشخص اجرا شود.در کد بالا شرط
if (Option.TI.Buy_1_Price>0) به این منظور قرار داده شده که اگر در سمت تقاضا اردری وجود داشت سود را محاسبه کند و این شرط ها در ساختار فرمول ها در سریعتر رسیدن به موقعیت های مورد نظر و حذف داده های پرت بسیار کاربردی می باشند
ستون سود ماهانه با استفاده از تابع MP
//سرمایه درگیر
let block = (UA.TI.LastPrice - Option.TI.Buy_1_Price)* Option.Size;
//مبلغ دریافتی در زمان سررسید
let receive = (Option.Strike - UA.TI.LastPrice + Option.TI.Buy_1_Price) * Option.Size;
//محاسبه سود ماهاینه
var mp = MP((receive / block) * 100, Option.DaysUntilMaturity);
mp;
ب. در حالت بلوکه شدن وجه تضمین و پرمیوم ( بدون وثیقه سهم)
در این حالت هیچ پولی تا زمان سررسید دریافت نمی کنیم، پس مبلغی که در کل بلوکه می کنیم وجه تضمین + مبلغ خرید سهم پایه می باشد
بنابراین فقط سرمایه درگیر در فرمول بالا تغییر می کند
;var block = Option.Required_Margin + (UA.TI.LastPrice * Option.Size
و فرمول نهایی به این صورت می شود
var month = 1;
if (Option.DaysUntilMaturity > 30)
month = (Option.DaysUntilMaturity / 30);
month = month.toFixed(1);
//کل مبلغ بلوکه شده
var block = Option.Required_Margin + (UA.TI.LastPrice * Option.Size);
var receive = (Option.Strike - UA.TI.LastPrice + Option.TI.Buy_1_Price) * Option.Size;
var mp = (receive / block) * 100;
mp = (mp / month).toFixed(1);
if (Option.TI.Buy_1_Price>0)
mp;
else'';
نکته : در هر کدام از موارد بالا می توانیم عبارت را برای مشاهده و تست بصورت ستون ایجاد کنید. برای مثال می خواهید تعداد ماه محاسبه شده رو ببینید : یک ستون ایجاد کنید و کد زیر رو بنویسید . خروجی مقدار month می باشد
var month = 1;
if (Option.DaysUntilMaturity > 30)
month = (Option.DaysUntilMaturity / 30);
month = month.toFixed(1);
month;
ایجاد فیلتر کاورد کال
برای اینکار فقط کافیست شروطی را به فرمولی که برای ایجاد ستون نوشته اید اضافه کنید و در بخش ایجاد فیلتر بگذارید
به عنوان مثال شما فقط می خواهید برای کاورد وثیقه قراردادهایی را ببنید که از نوع call ، دارای تقاضا هستند و بازدهی ماهانه بالای 5درصد دارند
var month = 1;
if (Option.DaysUntilMaturity > 30)
month = (Option.DaysUntilMaturity / 30);
month = month.toFixed(1);
var block = (UA.TI.LastPrice - Option.TI.Buy_1_Price)* Option.Size;
var profit = (Option.Strike - UA.TI.LastPrice + Option.TI.Buy_1_Price) * Option.Size;
var mp = (profit / block) * 100;
mp = (mp / month).toFixed(1);
Option.TI.Buy_1_Price > 1 && rate > 5 && Option.Type == 'call'
با استفاده از var1 و var2 در فیلد فیلتر امکان تغییر شروط بدون تغییر در کد امکان پذیر است. نحوه استفاده در مقاله تغییر متغیر از بیرون کد توضیح داده شده است
همچنین با استفاده از تابع ScalePrice می توانید نتیجه محاسبات را بر اساس معیار مشخص شده در دیده بان (آخرین قیمت ، قیمت پایانی ، عرضه یا تقاضا ) مشاهده کنید بدون تغییر در سورس کد
به عنوان مثال شما می خواهیدOption.TI.Buy_1_Price در تایم معاملاتی بر اساس معیار مشخص شده در دیده بان تغییر کند و فرضا بر اساس قیمت پایانی نتیجه سود ماهانه را مشاهده کنید کافیست در فرمول از تابع به جای این قطعه استفاده کنید
var month = 1;
if (Option.DaysUntilMaturity > 30)
month = (Option.DaysUntilMaturity / 30);
month = month.toFixed(1);
var block = (UA.TI.LastPrice - ScalePrice(Option.TI))* Option.Size;
var receive = (Option.Strike - UA.TI.LastPrice + ScalePrice(Option.TI)) * Option.Size;
var mp = (receive / block) * 100;
mp = (mp / month).toFixed(1) ;
if (ScalePrice(Option.TI)>0)
mp;
else '';
در قسمت کدهای اماده در بخش دیده بان سایت آپشن باز فرمول کاورد کال با جزییات بیشتر و کاربردی جهت استفاده کاربران قرار داده شده است (مشاهده ویدیو ) . این متن صرفا جهت اشنایی با محاسبات ضروری این استراتژی و نحوه نوشتن ان قرار داده شده است .