دیدهبان سایت مدیریت فناوری بورس تهران (TSETMC) یک زبان فیلترنویسی دارد که با آن میشود ردیفهای جدول را غربال کرد و ستونهای ساختهٔ خودتان را کنارشان نشاند. این مقاله نشان میدهد چطور برای قراردادهای اختیار معامله چنین فیلتری بنویسید: قیمت اعمال و وضعیت مالی را از دادههای خام بیرون بکشید، در یک ستون شخصی نمایششان دهید و فقط ردیفهای اختیار معامله را نگه دارید.
دو چیز را از همین اول بدانید: این آموزش برای نسخهٔ کلاسیک دیدهبان TSETMC نوشته شده، و همان کارها در دیدهبان آپشنباز بدون این محاسبات دستی انجام میشوند. بخش آخر مقاله همین مقایسه را دارد.
فیلتر نویسی در سایت TSETMC چطور کار میکند؟
فیلتر در دیدهبان TSETMC یک قطعه کد است که برای هر ردیف جدول جداگانه اجرا میشود و در پایان باید بگوید آن ردیف بماند یا برود. دادههای همان ردیف با نامهای کوتاهی مثل l18 (نماد)، l30 (نام کامل نماد)، pl (آخرین قیمت) و tvol (حجم معاملات) در دسترساند، و چند فیلد خالی به نام cfield0 تا cfield2 هم هست که میتوانید خروجی محاسباتتان را در آنها بریزید و به شکل ستون ببینید.
همین «هر ردیف جدا» است که تعیین میکند چه چیزی با فیلتر شدنی است و چه چیزی نه. مثلاً «بیشترین ارزش معاملات» با فیلتر به دست نمیآید، چون هیچ ردیفی از ردیفهای دیگر خبر ندارد؛ راهش این است که یک آستانه بگذارید و بعد ستون ارزش را نزولی مرتب کنید.
این آموزش برای کدام نسخهٔ سایت است؟
تصویرهای این صفحه از دیدهبان کلاسیک TSETMC گرفته شدهاند. سایت از آن زمان رابط کاربریاش را عوض کرده، پس مسیر منوها و شکل پنجرهها ممکن است دیگر همان نباشد که در تصویرها میبینید.
ولی نیمهٔ دیگر مقاله کهنه نمیشود: اینکه قیمت اعمال داخل نام نماد است، اینکه فیلتر خروجی درست یا نادرست دارد و اینکه دادهٔ روز قبل فیلدی ندارد، به شکل داده مربوطاند نه به جای دکمهها. همانها هستند که در ادامه بیشترین جای کار را دارند.
مرحله به مرحله: ساخت قالب شخصی و فیلتر
شرح کامل این مراحل در ویدیوی انتهای مقاله هم آمده است.
1 — وارد دیدهبان سایت بورس اوراق بهادار تهران شوید. نشانیاش tsetmc.com است.

2 — تنظیمات دیدهبان را مطابق شکل انجام دهید.

3 — قالب شخصی انجامشده در ویدیو به این شکل است.

4 — ترجیحاً یک فیلد خالی مثل cfield1 را همیشه در دسترس بگذارید.
5 — نوع قالب را شخصی انتخاب کنید.

6 — یک فیلتر جدید بسازید، کد زیر را در آن وارد کنید، اعتبارسنجی و ثبت نمایید.

سه بخش دارد: خط اول قیمت هر نماد را در حافظهٔ همان جلسه ثبت میکند، بخش میانی قیمت اعمال و وضعیت مالی را حساب میکند، و تابع پایانی هم ستون را پر میکند هم میگوید ردیف بماند یا نه. سه بخش بعدی مقاله دقیقاً همین سه قسمت را باز میکنند.
قیمت اعمال قرارداد کجاست؟
TSETMC فیلد جدایی برای قیمت اعمال ندارد. عدد داخل نام کامل نماد است و باید از همان بیرون کشیده شود.
نام کامل نماد به شکل «اختیار خرید ... - قیمت اعمال - تاریخ سررسید» است، پس تکهای که بین اولین و آخرین خط تیره میافتد همان قیمت اعمال است. parseInt آن را از رشته به عدد تبدیل میکند تا بشود در شرطها مقایسهاش کرد. تاریخ سررسید هم با همین منطق از هشت کاراکتر آخر جدا میشود.
در دیدهبان آپشنباز همین مقدار مستقیم با option.strike در دسترس است و لازم نیست رشته ببرید.
ستون محاسباتی: cfield0 و cfield1
کد شما هیچ ستونی نمیسازد؛ فقط یک رشته در یکی از فیلدهای خالی میریزد. دیده شدن آن رشته دو شرط دیگر دارد.
اول باید در پنجرهٔ «ساخت قالب نمایش» ستونی تعریف کنید که Data آن همان فیلد باشد، و دوم اینکه نوع قالب روی «شخصی» باشد؛ در قالب کلاسیک تگهای HTML به شکل متن ساده چاپ میشوند. اگر یکی از این دو نباشد سلول خالی یا خام دیده میشود و هیچ خطایی هم داده نمیشود.
نمونهٔ زیر برای cfield1 نوشته شده و سهم خرید و فروش حقیقی را به درصد کل حجم نشان میدهد:
معادل همین کار در محیط ما، با نمونههای آماده، در نمونه کدهای کاربردی ایجاد ستون جمع شده است.
چرا رنگها اعمال نمیشوند؟
پرتکرارترین مشکل همین است و معمولاً ربطی به کد ندارد. رنگها باید مقدار واقعی داشته باشند: چیزی مثل gray یا red یا یک کد رنگ.
یک متغیر CSS فقط داخل صفحهای معنا دارد که تعریفش کرده باشد؛ در صفحهٔ دیگر بیمقدار است و مرورگر بیسروصدا رنگ پیشفرض را میگذارد. پس اگر ستون ساخته شد ولی بیرنگ ماند، اول همین را نگاه کنید و بعد سراغ قالب بروید.
محدودیتهای فیلترنویسی در TSETMC
دو محدودیت هست که هر چه کد بزنید دور نمیخورند، چون از نبودِ داده میآیند نه از نوشتن کد.
محدودیت اول: تاریخچهای در کار نیست. فیلتر فقط عکسِ همین لحظه را میبیند.
حجم و ارزش و تعداد معاملات امروز در دسترساند، ولی از دیروز تنها قیمت مانده است. پس شرطهایی مثل «ارزش معاملات امروز سه برابر دیروز» نوشتنی نیستند، چون طرف دوم مقایسه اصلاً فیلدی ندارد.
محدودیت دوم: وضعیت مالی به ردیف نماد پایه بند است.
کد قیمت پایه را از حافظهٔ همان جلسه میخواند، و آن حافظه وقتی پر میشود که ردیف نماد پایه در همان دیدهبان پردازش شده باشد. اگر نماد پایه در فهرست نباشد — یا در روزی که بازار باز نشده و ردیفها مقدار نگرفتهاند — قیمت اعمال همچنان درست در میآید ولی وضعیت مالی خالی برمیگردد. این نه باگ کد است و نه ایراد فیلتر.
موقعیت باز و تفکیک حقیقی و حقوقی هم دادهٔ همان جلسهٔ معاملاتیاند و در روز تعطیل مقداری ندارند.
همین کارها در دیدهبان آپشنباز
تا اینجا بدیهیاتی گفته شد که یک معاملهگر آپشن به آن نیاز دارد. برای معاملات حرفهای به ابزاری نیاز دارید که در کوتاهترین زمان مناسبترین خروجی استراتژیهای اختصاصیتان را بدهد.
تفاوت اصلی این است که چیزهایی که آنجا باید دستی میساختید، اینجا فیلد آمادهاند: وضعیت مالی، فاصلهٔ خرید و فروش، روز تا سررسید، دلتا و قیمت تئوری بلکشولز. کد کوتاهتر میشود و جای اشتباه هم کمتر.

برای شروع سه مسیر هست: فرمولهای آماده که بدون نوشتن حتی یک خط کد فعال میشوند، ساخت ستون و فیلتر با رابط گرافیکی برای شرطهای ساده، و زبان فرمولنویسی اگر میخواهید خودتان کد بزنید. فهرست کامل نمونهها هم در نمونه کدهای کاربردی فیلترنویسی است.
با همین کدهای ساده میتوانید واچلیست بسازید و محاسبات سود و زیان پرتفوی خود را هم در آپشنباز انجام دهید؛ راهنمای کامل این بخش در راهنمای دیدهبان آپشنباز آمده است.

ویدیوی آموزشی
جمعبندی
- فیلتر TSETMC برای هر ردیف جدا اجرا میشود و فقط «بماند یا برود» میگوید — «بیشترین» یک مرتبسازی است، نه یک فیلتر.
- قیمت اعمال و تاریخ سررسید فیلد ندارند و باید از نام کامل نماد بریده شوند.
- ستون شخصی سه قدم دارد و نبودِ هر قدم بیصدا شکست میخورد؛ رنگها هم باید مقدار واقعی باشند.
- دادهٔ روز قبل و وضعیت مالیِ بدون ردیف نماد پایه، هر دو خارج از دسترساند.
اگر نمیخواهید هر بار این محاسبات را دستی بسازید، همین شرطها را در دیدهبان اختیار معامله با فیلدهای آماده بنویسید.