تابع قراردادهای هم گروه optionSE
این تابع کلیه قراردادها با سررسید و نماد پایه یکسان را برمی گرداند همچنین از طریق این تابع میتوان به قراردادهای با اعمال بالاتر و پایین تر زنجیره دسترسی پیدا کرد(Option Same Expiration)در این مقاله ما بخشی که کلیه قراردادها را برمی گرداند توضیح خواهیم داد .
شاید این سوال براتون بوجود بیاد که این تابع کدوم یکی زجیره از قراردادها رو بر می گردونه ؟ یا از کجا می فهمه ما چه زنجیره ای رو می خوایم
فرض کنید در جدول دیدهبان 10 تا خروجی دارید که یکی از آنها قرارداد ضستا1211 میباشد . دارایی پایه این قراداد شستا و سررسید آن 1402/12/9 میباشد . وقتی تابع optionSE روی این سطر اجرا میشه کلیه قرادادهایی که دارایی آنها شستا و تاریخ سررسیدشان 1402/12/9 میباشد رو بر می گرداند (اختیار خرید و فروش) . در حقیقت این تابع و موارد روی هر سطر با مقادیر همان سطر اجرا میشود
استفاده از حلقه : به این دلیل از حلقه استفاده می کنیم که از قبل تعداد قرارداها رو نمی دانیم و می خواهیم با یک حلقه به کل زنجیره دسترسی پیدا
مثال از while: نمایش کلیه قراردادهای هم گروه
let result = '';
index = 0;
while (optionSE()[index] != undefined) {
//شرط در صورت نیاز
result += showDetail(optionSE()[index].namad )
index++;
}
result;
..
- index همان اندیس یا ایندکس در حلقه میباشد که مقدار آن از 0 شروع و تا اندازه قرارداد منهای 1 قرارداد میتواند باشد . برای مثال اگر زنجیره 10 تا قرارداد داشته باشه اندیس از 0 تا 9 میباشد و از طریق این اندیس ها می تونیم به قرارداد دسترسی داشته باشیم .
- دستور optionSE()[index] != undefined برای این استفاده که در حلقه while ما تعداد حلقه رو مشخص نمی کنم ولی شرطی برای اجرا حلقه میزاریم که در اینجا تهی یا بی مقدار نبودن optionSE()[index] هست .
- index در ابتدار صفر هست و در درون حلقه یکی به مقدار آن اضافه میشود(++index) تا کل زنجیره پیمایش بشه
- جنس optionSE()[index] از نوع option هست یعنی هر ویژگی که option داره مثل option.ti.lastPrice یا option.type رو دارا می باشه . در کد بالا به اسم نماد optionSE()[index].namad دسترسی داریم
به زبان ساده کد بالا می گه اگر قرارداد با اندیس index مقدار داشت برو داخل while و کدها رو اجرا کن و یکی به مقدار index اضافه کن و اگر مقدار نداشت یعنی کل زنجیره پیمایش شده و دستورات بعد از حلقه اجرا خواهند شد .
مثال for : نمایش کلیه قراردادهای هم گروه
let result = '';
for(index = 0; index < optionSE().length ; index++)
{ //if ..
result += showDetail(optionSE()[index].namad )
}
result;
- تفاوت for با while در این هست که در ابتدای مقدار اولیه و انتهای حلقه مشخص هست
- کد بالا با اندیس صفر شروع میشه و تا زمانی که اندیس کوچکتر از اندازه تعداد زنجیره باشه ادامه پیدا میکنه
- در هر پیمایش یکی به مقدار index اضافه میشه و مقدار showDetail به result اضافه میشه
- جنس optionSE()[index] از نوع option هست یعنی هر ویژگی که option داره مثل option.ti.lastPrice یا option.type رو دارا می باشه . در کد بالا به اسم نماد optionSE()[index].namad دسترسی داریم
معنی کد +=
x += y is equivalent to x = x + y
مثال : پیدا کردن و دسترسی به اطلاعات قراردادی که ATM هست همه قراردادهای هم گروه رو از طریق optionSE بر می گردانیم و با حلقه آنها رو پیمایش می کنیم و شرط ATM بودن رو تست می کنیم و و در صورت وجود اندیس آن قرارداد رو بر می گردانیم
var index = 0;
var atmIndex = undefined;
while (optionSE()[index] != undefined) {
if (optionSE()[index].state == "ATM") atmIndex = index;
index++;
} if (atmIndex != undefined)
showDetail(optionSE()[atmIndex].namad);
else 'زنجیره قرارداد atm ندارد';
- اگر شرط ATM برقرار باشه اندیس آن را در atmIndex ذخیره می کنیم و بعد از پایان حلقه نام آن را نشان می دهیم در غیر این صورت پیام زنجیره قرارداد ATM ندارد نمایش داده میشه
- جنس optionSE()[atmIndex] از نوع option هست یعنی هر ویژگی که option داره مثل option.ti.lastPrice یا option.type رو دارا می باشه .