نمونه کدهای کاربردی فیلترنویسی دیده بان اختیار معامله
مجموعه کامل کدهای فیلترنویسی برای دیدهبان اختیار معامله به همراه توضیح: فیلتر بر اساس نقدشوندگی، یونانیها، قیمتگذاری بلک-شولز و استراتژیهای معاملاتی آپشن در بورس.
برای ساخت فیلتر، به دیدهبان آپشن بروید (راهنمای دیدهبان)، یا از طریق میزکار باکس دیدهبان اضافه کنید؛ سپس روی دکمهٔ فیلتر کلیک کنید، یک نام مناسب بگذارید، کد را در ادیتور بنویسید و خروجی نهایی را با دستور return یا به صورت یک شرط منطقی برگردانید، سپس آن را ذخیره کنید.
فیلترهای زیر آمادهٔ کپیاند، ولی برای تغییر دادنشان باید ساختار کد را بشناسید — زبان فرمولنویسی نشان میدهد یک فیلتر با چه دستورهایی به بله یا خیر میرسد. اگر اصلاً نمیخواهید کد بزنید، فیلترهای آمادهٔ دیدهبان همین کارها را با یک کلیک انجام میدهند.
یک فیلتر دیدهبان همواره باید در خط نهایی خود مقدار منطقی true (جهت نمایش ردیف) یا false (جهت پنهان کردن ردیف) را برگرداند.
فیلتر در خط آخر باید درست یا نادرست برگرداند و ستون یک مقدار — همان ویرایشگر، دو قرارداد متفاوت.حجم مالِ گذشته است و دفتر سفارش مالِ همین لحظه — نمادی میتواند صبح معامله شده باشد و حالا هیچ سفارشی نداشته باشد. برای همین چهار شرط لازم است.
این فیلتر نمادهایی را پیدا میکند که فعال هستند، حداقل یک سفارش در سرخط تقاضا و عرضه دارند و فاصلهٔ خرید و فروش (Bid-Ask Spread) در آنها منطقی و کمتر از 25٪ است. جزئیات بیشتر را در مقاله سنجش نقدشوندگی بخوانید:
قیمت عرضهٔ کمتر از ارزش ذاتی شبیه فرصت است ولی معمولاً نشانهٔ نبودِ عمق — شرط حجم سرخط عرضه را کنارش بگذارید.
فیلتر قراردادهای با اهرم بزرگتر یا مساوی 2:
return leverage() >= 2;
یک نکته که وقت زیادی میگیرد اگر ندانیدش: leverage() اهرم ساده است، ولی ستون «اهرم» در دیدهبان اهرم مؤثر را نشان میدهد؛ یعنی همان عدد ضرب در قدرمطلق دلتا. پس اگر خروجی این فیلتر را با ستون مقایسه کنید دو عدد متفاوت میبینید. برای اینکه فیلتر دقیقاً همان چیزی را بسنجد که در ستون میبینید، از effectiveLeverage() استفاده کنید:
return effectiveLeverage() >= 3;
فیلتر قراردادهای درون سود (ITM) با اهرم بسیار بالا (بزرگتر از 4):
return option.state === 'ITM' && leverage() >= 4;
فیلتر قراردادهایی که ارزانتر از ارزش ذاتی تئوریک خود در بازار عرضه شدهاند (فرصت خرید عالی):
انحراف قیمت بازار از قیمت تئوری یک درصد است و بازهٔ ±10 آن را دور صفر نگه میدارد. ترتیب دو ورودی مهم است — جابهجا شود، علامت وارونه میشود.option.iv کسر است (0.5 یعنی 50٪) و ua.ivPercentile عددی بین 0 تا 100 — قاطی کردنشان فیلتر را بیصدا خالی میکند، و صدک میتواند اصلاً مقدار نداشته باشد.
فیلتر قراردادهایی که انحراف قیمت عرضه سرخط بازار آنها با قیمت تئوریک بلکشولز کمتر از 10٪ است:
این فیلتر پیشرفته، نمادهای پایهای را پیدا میکند که بهترین جفتقرارداد اختیار خرید همسررسید روی آنها، یک موقعیت کال اسپرد با سود ماهانه و فاصله قیمت اعمال بهینه ایجاد کند. به لطف استفاده از ثابتهای تعاملی ویژوال، شما میتوانید آستانههای سود و فاصله را بدون نیاز به ادیتور کد و از طریق آیکون چرخدنده (⚙️) سرستون فیلتر کنترل کنید. اگر خواستید فیلتری از این جنس برای شرایط خودتان بسازید، پرامپت فرمولنویسی برای هوش مصنوعی همین ساختار را به زبان دستور به مدل میدهد:
ثابتهای FILTER_ در پنل تنظیمات جعبهٔ عدد میشوند، و حلقهٔ optionSE فیلتر تکقراردادی را به جستوجوی جفت تبدیل میکند.
// --- تنظیمات ویژوال قابل تغییر در پنل ⚙️ ---
const FILTER_MIN_MONTHLY = 2; // حداقل سود ماهانه مورد انتظار (درصد)
const FILTER_MIN_STRIKE_DIST = 10; // حداقل فاصله اعمال بالاتر از سهم (درصد)
let index = 0;
while (optionSE(++index) !== undefined) {
let upper = optionSE(index);
if (!upper || upper.ti.buy1Volume === 0 || option.ti.buy1Volume === 0) continue;
// محاسبه هزینه اولیه پیادهسازی اسپرد
let debit = (option.ti.sell1Price - upper.ti.buy1Price) * option.size;
// محاسبه حداکثر سود در سررسید
let profit = ((upper.strike - option.strike) * option.size) - debit;
// محاسبه سود سالانه شده یا ماهانه
let yCapital = monthlyProfit((profit / debit) * 100, option.daysUntilMaturity);
// فاصله قیمت اعمال بالاتر تا آخرین قیمت سهم پایه
let disStrike = calcRateChange(ua.ti.lastPrice, upper.strike);
// اعمال فیلتر بر اساس پارامترهای ویژوال تنظیم شده
if (disStrike > FILTER_MIN_STRIKE_DIST && disStrike > 0 && yCapital > FILTER_MIN_MONTHLY
&& option.ti.sell1Price > 0 && upper.ti.buy1Price > 0
&& option.type === 'call') {
return true;
}
}
return false;
7. فیلتر فروش خالی و نکول از تحویل (Short Call and Default) با تنظیمات ویژوال (⚙️)
فروشندهٔ اختیار خریدی که در سررسید سهم را تحویل نمیدهد، بهجای تحویل فیزیکی مابهالتفاوت قیمت پایانی و قیمت اعمال را نقدی تسویه میکند و جریمهٔ نکول هم میپردازد. یک ستون محاسباتی همین حسابوکتاب را روی کل بازار اجرا میکند: پرمیومی که امروز با سرخط تقاضا قابل فروش است، منهای مابهالتفاوت روز سررسید، منهای جریمه و کارمزد. نکول یک تخلف ثبتشده است و اینجا توصیه نمیشود؛ کاربرد اصلی عدد برعکس است — میگوید پرمیومی که میفروشید بدترین حالت را پوشش میدهد یا نه.
مبنای محاسبه قیمت امروز نیست، قیمت پایانی فرضی روز سررسید در بدترین حالت است، و دامنهٔ مجاز را از تابلوی خودِ نماد میخواند و مرکب اعمال میکند.
کد کامل این ستون، جدول تکتک پارامترها و مثال عددیاش در مقالهٔ نکول در قرارداد اختیار معامله چیست آمده — همانجا که سازوکار نکول و جریمه هم توضیح داده شده، تا فرمول و مفهومش یکجا بمانند و دو نسخه از یک کد در دو صفحه نگهداری نشود.