مستندات
- معرفی
- شروع
- پارامترها
- توابع
- مثال فیلتر
- مثال ستون
- نکات
فیلتر ابزاری است که با آن می توانید بین تمام نمادها جستجو کرده و مواردی که شرایط مورد نظر شما داشته باشند را پیدا کنید. با فیلتر می توانید صدها و هزاران نماد را در کمتر از یک ثانیه بررسی کرده و نتایج را بلافاصله مشاهده کنید. بعنوان مثال اگر دنبال قراردادهایی هستید که قیمت اعمال آن بیشتر از مقدار مشخصی باشد بسادگی با نوشتن یک فیلتر ساده می توانید تمام قراردادهایی که این شرط را دارند را پیدا کرده و نمایش دهید.
برای شروع یک فیلتر ساده را می خواهیم بنویسیم تا تمام قراردادهایی که کمتر از 20 روز به قیمت اعمال آن ها باقی مانده را به ما نشان دهد. با رفتن به بخش ساخت فیلتر و انتخاب گزینه ساخت فیلتر جدید می توانیم فیلتر مورد نظر خود را بنویسیم. برای شروع یک شرط باید بنویسید تا قراردادهایی که روزهای باقیمانده تا سررسید آن ها کمتر از 20 باشد را پیدا کنید. با نوشتن کلمه data. بلافاصله مطابق شکل مقابل پنجره ای باز می شود که تمام پارامترها را به شما نشان می دهد و می توانید مقدار مورد نظر را از بین آن ها انتخاب کنید.
با انتخاب گزینه روزهای مانده تا سررسید، پارامتر data.roozhayemande بصورت خودکار برای شما قرارداده می شود. حالا فقط باید در قسمت شرط مشخص کنید که اگر روزهای مانده کمتر از 20 بود مقدار true را برگرداند یا به عبارتی آن قرارداد را نمایش دهد.
if(data.roozhayemande < 20) { return true; }
فیلتر را ذخیره کرده تا در بخش فیلترها اضافه شود سپس با انتخاب فیلتر مورد نظر نتیجه را مشاهده خواهید کرد.
1 |
نام قرارداد |
data.name |
2 |
نماد پایه |
data.namadepaye |
3 |
تاریخ اعمال |
data.tarikh |
4 |
روزهای مانده تا سررسید |
data.roozhayemande |
5 |
قیمت اعمال |
data.emal |
6 |
تعداد قرارداد |
data.size |
7 |
اولین قیمت امروز |
data.avalingheimat |
8 |
قیمت دیروز |
data.gheimatdirooz |
9 |
قیمت نماد پایه |
data.gheimat_namadepayeh |
10 |
پایانی نماد پایه |
data.payani_namadepayeh |
11 |
بالاترین قیمت امروز |
data.balatarin_gheimat |
12 |
کمترین قیمت امروز |
data.kamtarin_gheimat |
13 |
آخرین قیمت |
data.akharin_gheimat |
14 |
درصد آخرین قیمت |
data.darsad_akharin_gheimat |
15 |
قیمت پایانی |
data.gheimat_payani |
16 |
درصد قیمت پایانی |
data.darsad_gheimat_payani |
17 |
تعداد معاملات(تراکنش ها) |
data.tedad_tarakonesh |
18 |
حجم معاملات (تراکنش ها) |
data.hajm_tarakonesh |
19 |
ارزش معاملات (تراکنش ها) |
data.arzesh_tarakonesh |
20 |
تعداد اردر خرید اول |
data.tedad_kharid_1 |
21 |
تعداد اردر خرید دوم |
data.tedad_kharid_2 |
22 |
تعداد اردر خرید سوم |
data.tedad_kharid_3 |
23 |
تعداد اردر خرید چهارم |
data.tedad_kharid_4 |
24 |
تعداد اردر خرید پنجم |
data.tedad_kharid_5 |
25 |
قیمت اردر خرید اول |
data.gheimat_kharid_1 |
26 |
قیمت اردر خرید دوم |
data.gheimat_kharid_2 |
27 |
قیمت اردر خرید سوم |
data.gheimat_kharid_3 |
28 |
قیمت اردر خرید چهارم |
data.gheimat_kharid_4 |
29 |
قیمت اردر خرید پنجم |
data.gheimat_kharid_5 |
30 |
حجم اردر خرید اول |
data.hajm_kharid_1 |
31 |
حجم اردر خرید دوم |
data.hajm_kharid_2 |
32 |
حجم اردر خرید سوم |
data.hajm_kharid_3 |
33 |
حجم اردر خرید چهارم |
data.hajm_kharid_4 |
34 |
حجم اردر خرید پنجم |
data.hajm_kharid_5 |
35 |
تعداد اردر خرید اول |
data.tedad_foroosh_1 |
36 |
تعداد اردر فروش دوم |
data.tedad_foroosh_2 |
37 |
تعداد اردر فروش سوم |
data.tedad_foroosh_3 |
38 |
تعداد اردر فروش چهارم |
data.tedad_foroosh_4 |
39 |
تعداد اردر فروش پنجم |
data.tedad_foroosh_5 |
40 |
قیمت اردر فروش اول |
data.gheimat_foroosh_1 |
41 |
قیمت اردر فروش دوم |
data.gheimat_foroosh_2 |
42 |
قیمت اردر فروش سوم |
data.gheimat_foroosh_3 |
43 |
قیمت اردر فروش چهارم |
data.gheimat_foroosh_4 |
44 |
قیمت اردر فروش پنجم |
data.gheimat_foroosh_5 |
45 |
حجم اردر فروش اول |
data.hajm_foroosh_1 |
46 |
حجم اردر فروش دوم |
data.hajm_foroosh_2 |
47 |
حجم اردر فروش سوم |
data.hajm_foroosh_3 |
48 |
حجم اردر فروش چهارم |
data.hajm_foroosh_4 |
49 |
حجم اردر فروش پنجم |
data.hajm_foroosh_5 |
50 |
وجه تضمین |
data.tazmin |
51 |
تعداد موقعیت باز |
data.tedad_mogheiat_baz |
52 |
وضعیت نماد (در سود یا در زیان) |
data. vaziat |
توابع در پلتفرم آپشنچی تعریف شده اند که با آن ها می توانید به اطلاعات بیشتری دسترسی پیدا کنید.
توابع:
chain() chaindate()
()chain :
این تابع تمام زنجیره قراردادهای هم گروه قرارداد فعلی را به شما بر میگرداند.
()chaindate :
این تابع تمام زنجیره قراردادهای هم گروه را برمیگرداند که تاریخ اعمال یکسانی نیز داشته باشند.
دقت کنید که این توابع دارای بار محاسباتی بالایی می باشند پس حتما ابتدا یکبار تابع را فراخوانی کرده و خروجی را در یک متغیر ذخیره کنید سپس از متغیر مورد نظر هرجا که نیاز داشتید استفاده کنید تا کدهای شما سنگین نشده و سیستم شما را کند نکنند. بعنوان مثال در کد زیر تابع را فراخوانی کرده ایم سپس اولین قراردادی که قیمت اعمال یکسانی با قرارداد فعلی دارد را برگردانده و در ستون محاسباتی نمایش داده ایم.
var i=0; var result = Chain(); while(i < Object.keys(result).length) { if(result[i].emal == data.emal && result[i].name != data.name) { return result[i].name; break; } i++; } return "موردی پیدا نشد";
خروجی کد بالا را می توانید در تصویر زیر مشاهده کنید:
برای آشنایی بیشتر چند نمونه فیلتر ساده را با هم مرور می کنیم:
فیلتر قراردادهای با حجم معاملات بالا:
با یک شرط ساده می توانیم قراردادهایی که حجم معاملات آن ها بالای 100 باشد را پیدا کنیم. کافی است شرط کنیم که حجم معاملات بالای 100 باشد و کد آن به صورت ذیل است:
if(data.hajm_tarakonesh > 100) { return true; }
حال یک شرط دیگر را هم اضافه می کنیم، قراردادهایی که قیمت اعمال آن ها کمتر از قیمت سهم پایه باشد و حجم تراکنش های آن ها بالای 100 باشد:
if(data. > 100 && data.emal < data.gheimat_namadepayeh) { return true; }
حالا فیلتر پیچیده تری را با هم مرور می کنیم:
فیلتر کاوردکال:
var result = 0; if(data.vaziat == 0) { result= (data.emal - (data.gheimat_namadepayeh - data.gheimat_kharid_1)) * 100 /(data.gheimat_namadepayeh - data.gheimat_kharid_1); } else { result= (data.gheimat_kharid_1 * 100) / (data.gheimat_namadepayeh - data.gheimat_kharid_1); } if(result> 0 ) { return true; } else { return false; }
ستون ها ابزاری هستند که با آن می توانید اطلاعات مورد نظر خود در مورد قراردادها را مشاهده کنید. فرض کنید میخواهید بدانید قراردادها در سود هستند یا در زیان؟ یا می خواهید بدانید یک قرارداد چه مقدار بالای سربسری قرار دارد؟ بسادگی با نوشتن فرمول آن در بخش ساخت ستون می توانید ستون سفارشی مورد نظر خود را بسازید. اصول کلی ستون نویسی دقیقا مشابه فیلترنویسی است با این تفاوت که در ستون نویسی باید مقدار مشخصی را در بخش return قرار دهید. بعنوان مثال ما قیمت سربسری خرید قراردادهای اختیار خرید را محاسبه و برمی گردانیم تا در ستون نمایش داده شود:
return data.emal + data.gheimat_foroosh_1;
حال مثال پیچیده تری را با هم مرور میکنیم. فرض کنیم میخواهیم بدانیم قیمت سربسری برای خریدار یک قرارداد اختیار خرید چقدر پایین تر از قیمت نماد پایه می باشد؟ که سود احتمالی آن قرارداد را نشان می دهد:
return data.gheimat_namadepayeh - (data.emal + data.gheimat_foroosh_1);
بگذارید یک مثال دیگر را نیز با هم مرور کنیم. فرض کنیم میخواهیم در یک ستون وضعیت در سود یا در زیان بودن قراردادها را ببینیم. کد زیر به سادگی این خروجی را به ما نشان می دهد:
if(data.vaziat == 0) { return "در سود"; } else if(data.vaziat == 1) { return "در ضرر"; } else { return "بی تفاوت"; }
کد بالا پارامتر وضعیت را بررسی میکند، اگر مساوی صفر بود که به معنای در سود بودن قرار داد است آنگاه در ستون کلمه در سود را برمیگرداند و اگر مساوی یک بود در زیان و در غیر اینصورت کلمه بی تفاوت را نشان می دهد. در شکل زیر می توانید خروجی را ببینید.
می توانید برای خوانایی و زیبایی بیشتر از تگ های html استفاده کنید. بعنوان نمونه کد بالا را به شکل زیر می نویسیم تا قراردادهای در سود را با رنگ سبز و قراردادهای در زیان را با رنگ قرمز به ما نشان دهد:
if(data.vaziat == 0) { return "<span style=\'color:green\'>در سود </span>"; } else if(data.vaziat == 1) { return "<span style=\'color:red\'>در ضرر </span>"; } else { return "بی تفاوت"; }
خروجی کد بالا را در تصویر زیر می توانید مشاهده کنید:
کد زیر را نیز می توانید جهت یادگیری بیشتر مرور کرده که سود کاوردکال را محاسبه کرده و در ستون محاسباتی نمایش می دهد
var result; if(data.vaziat == 0) { result=( (data.emal - (data.gheimat_namadepayeh - data.gheimat_kharid_1)) * 100 ) / (data.gheimat_namadepayeh - data.gheimat_kharid_1); } else { result=(data.gheimat_kharid_1 * 100) / (data.gheimat_namadepayeh - data.gheimat_kharid_1); } return result.toFixed(1);
حلقه های بی انتها: مراقب حلقه های بی انتها باشید. زمانی که یک حلقه می نویسید اگر به اشتباه یک حلقه بی انتها بنویسید آنگاه این کد می تواند باعث هنگ کردن و متوقف شدن کامل صفحه وب شما شود. برای نمونه به حلقه زیر دقت کنید که در حالت اول شماره نداشته و در یک loop بی انتها گرفتار می شود. و در حالت دوم مشکل اصلاح شده و با اضافه کردن یک شمارنده حلقه در حالت طبیعی خود کار میکند.
// حلقه بی انتها var i=0; while(i<5) { // کدهای دلخواه } // حلقه استاندارد var i=0; while(i<5) { // کدهای دلخواه i++; }
توابع محاسباتی : هر کدام از این توابع حجم محاسبات بسیار بالایی را انجام می دهند از این رو در استفاده از آن ها دقت کنید و همیشه یکبار آن ها را فراخوانی کرده، نتیجه را در یک متغیر ذخیره و سپس آن متغیر را استفاده کنید.
var i=0; var result = Chain(); return result[0].emal;
ستون ها: هر ستون در صورتی که فعال باشد مقدار مشخصی بار محاسباتی ایجاد میکنید تا آن ستون محاسبه و برای شما نمایش داده شود. البته در پلتفرم آپشنچی از تکنیک ها و تکنولوژی هایی استفاده شده است که بار محاسباتی آن را به حداقل ممکن کاهش داده اند و به عدد ناچیزی رسیده است اما باز هم اگر به ستونی نیاز ندارید با غیر فعال کردن آن ستون می توانید مقداری سرعت محاسبات را بالاتر ببرید.