مستندات
  • معرفی
  • شروع
  • پارامترها
  • توابع
  • مثال فیلتر
  • مثال ستون
  • نکات

فیلتر ابزاری است که با آن می توانید بین تمام نمادها جستجو کرده و مواردی که شرایط مورد نظر شما داشته باشند را پیدا کنید. با فیلتر می توانید صدها و هزاران نماد را در کمتر از یک ثانیه بررسی کرده و نتایج را بلافاصله مشاهده کنید. بعنوان مثال اگر دنبال قراردادهایی هستید که قیمت اعمال آن بیشتر از مقدار مشخصی باشد بسادگی با نوشتن یک فیلتر ساده می توانید تمام قراردادهایی که این شرط را دارند را پیدا کرده و نمایش دهید.

برای شروع یک فیلتر ساده را می خواهیم بنویسیم تا تمام قراردادهایی که کمتر از 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;

ستون ها: هر ستون در صورتی که فعال باشد مقدار مشخصی بار محاسباتی ایجاد میکنید تا آن ستون محاسبه و برای شما نمایش داده شود. البته در پلتفرم آپشنچی از تکنیک ها و تکنولوژی هایی استفاده شده است که بار محاسباتی آن را به حداقل ممکن کاهش داده اند و به عدد ناچیزی رسیده است اما باز هم اگر به ستونی نیاز ندارید با غیر فعال کردن آن ستون می توانید مقداری سرعت محاسبات را بالاتر ببرید.