مدیریت خروجی و فیلتر فرمول | راهنمای تنظیمات ویژوال دیده بان
آموزش گامبهگام طراحی تنظیمات ویژوال: آیکن تنظیمات، کنترلهای عدد، تیک، لیست کشویی، چندانتخابی، مرتبسازی و ترتیب چیدمان ستونها.
نویسنده: آپشن باز، تاریخ انتشار: ، آخرین بهروزرسانی: ، 27 دقیقه مطالعه
اشتراکگذاری:
وقتی در کد فرمول یا استراتژی خود پارامترهای ویژوال تعریف میکنید، کنار نام ستون یا فیلتر شما در جدول دیدهبان آیکن تنظیمات (مدیریت خروجی و فیلتر) ظاهر میشود. این قابلیت به کاربران اجازه میدهد بدون نیاز به ویرایش کد جاوااسکریپت، مقادیر عددی، تیکها، لیستهای انتخابی و نحوهٔ مرتبسازی را بهصورت کاملاً تعاملی و ویژوال تغییر دهند.
توضیح مختصر و ایدهٔ اصلی
موتور فرمولنویسی دیدهبان از روی ثابتهای تعریفشده با حروف بزرگ و کامنتهای جلوی آنها تشخیص میدهد که چه کنترلی در پنجرهٔ تنظیمات ظاهر شود. با تغییر مقادیر در پنجرهٔ ویژوال، مقدار آن ثابتها مستقیماً درون کد ذخیره شدهٔ شما بهروزرسانی میشود.
آیکن تنظیمات وقتی میآید که هر دو شرط باشند: نام با حروف بزرگ و زیرخط، و یک کامنت فارسی جلوی همان خط که برچسب کنترل میشود.
شروع سریع با یک مثال ساده: حداقل حجم معاملات
برای آشنایی سریع، فرمول زیر را در دیدهبان به عنوان ستون ذخیره کنید و سپس روی آیکن ستون کلیک کنید:
تغییر مقدار در پنجرهٔ ویژوال، همان ثابت را درون کد ذخیرهشدهٔ شما بازنویسی میکند — تنظیمات جایی جدا از کد نگهداری نمیشود.
const FILTER_MIN_VOLUME = 100; // حداقل حجم
const FILTER_RESULT = false;
const FILTER_SHOW = true;
let vol = option.ti.volume;
// اگر فرمول به عنوان فیلتر ردیف فعال باشد:
if (FILTER_RESULT) return vol >= FILTER_MIN_VOLUME;
// نمایش مقدار ستون:
return vol;
این مثال چطور کار میکند؟
طراحی کنترل عددی: متغیر const FILTER_MIN_VOLUME = 100; در تب فیلترها یک جعبه ورودی عدد با برچسب «حداقل حجم» ایجاد میکند. با تغییر عدد در پنجره، مقدار این متغیر در لحظه تغییر کرده و محاسبات جدول بهروز میشود.
دروازهٔ فیلتر (FILTER_RESULT و FILTER_SHOW): این دو با هم یک کنترل در پنل میسازند: کلید «اعمال فیلترها». تا روشنش نکنید عدد «حداقل حجم» اصلاً اعمال نمیشود.
دامنهٔ اعمال: بعد از روشنکردن کلید انتخاب میکنید که شرط روی کل دیدهبان اجرا شود (قرارداد کمحجم کل ردیفش از جدول میرود) یا فقط این ستون (ردیف میماند و فقط سلولش خالی میشود).
1) چطور آیکن تنظیمات در سرستون ظاهر شود؟
سیستم زمانی متوجه نیاز به تنظیمات ویژوال میشود که حداقل یکی از متغیرهای خود را با حروف بزرگ و زیرخط تعریف کرده و یک کامنت فارسی در جلوی آن نوشته باشید. پیشوندهای مجاز عبارتند از:
سه پیشوند سه بخش پنجرهاند: FILTER_ فیلترها، SHOW_ نمایش و چیدمان، SETTING_ محاسبات. پیشوند جای کنترل را میگوید، نه نوعش را.
FILTER_... → کنترل را در بخش فیلترها قرار میدهد.
SHOW_... → کنترل را در بخش نمایش و چیدمان قرار میدهد.
SETTING_... → کنترل را در بخش محاسبات و تنظیمات قرار میدهد.
const FILTER_MIN_VOLUME = 100; // حداقل حجم ✅ آیکن تنظیمات ظاهر میشود
const filter_min_volume = 100; // ❌ حروف کوچک — سیستم نادیده میگیرد
const SORT_BY = 'volume'; // ❌ مرتبسازی بهتنهایی آیکن تنظیمات را نمیآورد
2) ورودی عددی (Number Input)
اگر مقدار اولیه متغیر یک عدد باشد، یک کنترل ورودی عددی ساخته میشود. همچنین اگر مقدار اولیه خالی باشد ('') اما در نام متغیر کلماتی نظیر MIN، MAX، DISTANCE، PERCENT، FEE یا STRIKE وجود داشته باشد، سیستم بهطور هوشمند آن را ورودی عددی در نظر میگیرد.
نوع کنترل هیچجا اعلام نمیشود: از مقدار اولیه (عدد، بولین، رشته) و از کامنت (براکت، multi، title) استنتاج میشود.
اگر مقدار اولیه یک متغیر برابر با true یا false باشد (و گزینهای درون براکت در کامنت نباشد)، یک دکمهٔ تیک روشن/خاموش برای آن ساخته میشود.
const SHOW_VOLUME = true; // نمایش حجم در خروجی
const SETTING_FEE = false; // اعمال کارمزد معاملات در محاسبات
4) کلید اعمال فیلترها (System Switches)
دو متغیر با نامهای دقیق زیر تیک معمولی نمیسازند. پنل آنها را کنار هم به یک کنترل تبدیل میکند: کلید «اعمال فیلترها» و دامنهای که بعد از روشنشدنش ظاهر میشود. تا این کلید خاموش است، هیچکدام از فیلترهای دیگرِ همان فرمول اجرا نمیشوند. با اولین شرطی که در یکی از فیلترها میگذارید، این کلید خودش روشن میشود (روی «کل دیدهبان»، یا اگر فرمول فیلتر ردیفی ندارد روی «فقط این ستون»)؛ اگر در همان پنجره خاموشش کنید، دیگر خودبهخود روشن نمیشود:
در پنل یک کلید «اعمال فیلترها» بالای بخش فیلترها میبینید؛ بهمحض روشنشدن، دامنهاش بین «کل دیدهبان» و «فقط این ستون» انتخاب میشود.
FILTER_SHOW — نشانهٔ حالت «فقط این ستون». وقتی کاربر این دامنه را انتخاب کند مقدارش در کد شما true نوشته میشود و ترکیبهایی که شرط را ندارند از داخل سلول حذف میشوند؛ ردیف نماد سر جایش میماند.
FILTER_RESULT — هرگز در کد شما نوشته نمیشود. موتور موقع ساختن نسخهٔ فیلترِ فرمول خودش آن را true میکند. انتخاب «کل دیدهبان» فرمول را به فهرست فیلترهای فعال جدول اضافه میکند تا نمادِ بدون ترکیب منطبق، کل ردیفش حذف شود.
در حالت «کل دیدهبان» محتوای سلول هم خودبهخود فیلتر میشود، بدون آنکه FILTER_SHOW نوشته شود. برای همین این دو یک دامنهاند، نه دو سوئیچ مستقل.
const FILTER_SHOW = false; // حالت «فقط این ستون»
const FILTER_RESULT = false; // دروازهٔ فیلتر — پنل خودش مدیریتش میکند
هر دو باید در کد باشند، حتی اگر مقدارشان را دست نزنید: شرطِ فیلتر شما معمولاً به شکل (!FILTER_SHOW && !FILTER_RESULT) || ( … ) نوشته میشود و همین عبارت است که دروازه را میسازد. اگر یکی از این دو را ننویسید، فرمول با خطای «is not defined» میشکند.
5) لیست کشویی تکانتخابی (Dropdown Select)
برای ایجاد منوی کشویی، گزینههای انتخابی را داخل براکت [] در بخش کامنت خط بنویسید. به دو روش میتوانید گزینهها را تعریف کنید:
در براکت، شکل مقدار=برچسب کد را انگلیسی و پایدار نگه میدارد و منو را فارسی؛ یک براکت خالی هم گزینهٔ «بدون فیلتر» میسازد.
فقط مقدار: مقدار انتخاب شده با خود متن گزینه یکی خواهد بود.
رابطه مقدار=برچسب: مقدار ذخیره شده در کد با برچسب فارسی نمایش داده شده در منو متفاوت خواهد بود (روش پیشنهادی برای طراحی زیبا).
// روش اول: مقدار و برچسب یکسان هستند
const FILTER_STATE = 'OTM'; // وضعیت [ITM][OTM][ATM]
// روش دوم (بهتر): مقدار انگلیسی در کد ذخیره میشود، برچسب فارسی نمایش داده میشود
const SETTING_UA_PRICE = 'ask'; // مبنای قیمت [ask=سر خط عرضه] [last=آخرین معامله] [end=قیمت پایانی]
6) گزینه خالی یا پیشفرض در لیست (Empty/Default Option)
اگر بخواهید گزینهای به عنوان «بدون فیلتر» یا «همه» داشته باشید که مقدار خالی '' یا صفر را به کد بفرستد، کافی است یک براکت خالی [] در لیست گزینهها قرار دهید. سیستم آن را با برچسب خط تیره «-» نمایش میدهد.
اگر میخواهید کاربر بتواند همزمان چند گزینه را تیک بزند، کلمه کلیدی multi را در کامنت بنویسید. مقدار ذخیره شده در کد به صورت یک رشته متنی خواهد بود که گزینهها با ویرگول انگلیسی از هم جدا شدهاند (مثلاً '1,3'). در منطق فرمول باید این رشته را تفکیک کنید:
مقدار چندانتخابی یک رشتهٔ متنی با ویرگول است، نه آرایه — باید در کد تفکیکش کنید وگرنه هر مقایسهای نادرست میشود.
const FILTER_ZONES = '1,2'; // محدوده قیمتی multi [1=زیر اعمال] [2=بین اعمال] [3=بالای سربهسر]
// روش تفکیک و چک کردن در کد جاوااسکریپت:
const activeZones = String(FILTER_ZONES).split(',').map(z => z.trim()).filter(Boolean);
const isZoneValid = activeZones.length === 0 || activeZones.includes(String(myCurrentZone));
8) جعبه متن آزاد (Free Text Input)
اگر مقدار متغیر رشتهای باشد اما هیچ گزینهای درون براکت [] در کامنت تعریف نشده باشد، یک کادر ورود متن ساده برای کاربر ایجاد میشود (مثلاً برای ورود دستی یک نماد یا یک مقدار دلخواه).
const SETTING_TARGET_NAMAD = ''; // نماد پایه هدف
9) توضیحات راهنمای شناور (Tooltip)
اگر مایلید در پنجره تنظیمات تعاملی، توضیح کوچکی برای هر پارامتر نشان داده شود تا کاربر کاربرد آن را بداند، از کلمه کلیدی title=... در کامنت استفاده کنید. با نگه داشتن ماوس روی برچسب، این راهنما ظاهر میشود.
const FILTER_BE_DISTANCE = ''; // فاصله تا سربهسر title=عدد مثبت: قیمت سهم بالاتر از سربهسر است
10) لینک راهنمای اختصاصی بالای پنجره (Guide Link)
اگر فرمول شما پیچیده است و تمایل دارید یک لینک راهنمای جامع (مثلاً یکی از مقالات دانشنامه آپشنباز) را به آن متصل کنید، عبارت //link=آدرس_لینک را در خط اول یا دوم کد فرمول بنویسید. دکمهٔ «راهنما» در بالای پنجره ویژوال ظاهر خواهد شد.
//link=/pedia/راهنمای-فرمول-نویسی-استراتژی-آماده-دیده-بان-آپشن-226
const FILTER_MIN_VOLUME = 100; // حداقل حجم معاملات
11) مرتبسازی پیشرفته (SORT_BY / SORT_DIR)
برای فرمولهای پیشرفته یا استراتژیهایی که چندین خروجی را در یک خانهٔ جدول مرتب و چاپ میکنند (با استفاده از تابع سیستمی sortAndFormatResults)، میتوانید متغیرهای زیر را بنویسید تا مرتبسازی در پنجره تعاملی قابل تنظیم باشد:
SORT_BY و SORT_DIR بهتنهایی آیکن تنظیمات را نمیآورند — یک ثابت دیگر لازم است، حتی اگر مقدارش صفر باشد و کاری نکند.
SORT_BY — مشخص میکند کدام ویژگی عددی مبنای مرتبسازی ردیفها قرار گیرد (گزینهها را در براکت بنویسید).
SORT_DIR — جهت مرتبسازی را تعیین میکند: asc صعودی یا desc نزولی.
12) چیدمان، تیک نمایش و ترتیب کشیدنی (Display Order)
اگر فرمول شما بخشهای مختلفی را در خروجی نشان میدهد (مثلاً حجم، تلاطم ضمنی IV، ارزش ذاتی و غیره)، میتوانید برای هر بخش یک تیک نمایش با پیشوند SHOW_... بگذارید. با اضافه کردن آرایهٔ displayOrder به کد، کاربران میتوانند در تب «نمایش و چیدمان» ترتیب ستونها را با کشیدن و رها کردن (Drag & Drop) جابهجا کنند!
const SHOW_VOLUME = true; // نمایش حجم معاملات
const SHOW_IV = true; // نمایش تلاطم ضمنی (IV)
const SHOW_INTRINSIC = true;// نمایش ارزش ذاتی
// ترتیب اولیه چیدمان (این آرایه با کشیدن و رها کردن در پنجره بهطور خودکار ویرایش میشود):
const displayOrder = [
'SHOW_VOLUME',
'SHOW_IV',
'SHOW_INTRINSIC'
];
// ساخت بخشهای مختلف خروجی:
const segments = {
SHOW_VOLUME: SHOW_VOLUME ? `حجم: ${option.ti.volume}` : '',
SHOW_IV: SHOW_IV ? `تلاطم: ${option.iv ?? '-'}` : '',
SHOW_INTRINSIC: SHOW_INTRINSIC ? `ارزش ذاتی: ${Math.max(0, ua.ti.lastPrice - option.strike)}` : '',
};
// چسباندن بخشها به یکدیگر با ترتیب مشخص شده:
return joinDisplaySegments(segments, displayOrder, ' | ');
13) زیرعنوان فیلترها (group=)
اگر فرمول شما فیلترهای زیادی دارد، میتوانید آنها را در بخش «فیلترها» زیر زیرعنوان مرتب کنید. کافی است در کامنت هر فیلتر عبارت group= و نام گروه را بنویسید. چهار گروهی که استراتژیهای آماده هم دارند همیشه به همین ترتیب میآیند: سود، ریسک، ساختار و نقدشوندگی. کنار هر زیرعنوان تعداد فیلترهای پرشدهٔ آن گروه نوشته میشود و خانههای پرشده رنگ ملایمی میگیرند.
زیرعنوان فقط وقتی کشیده میشود که دستکم دو گروه پر باشد، پس فرمولی که group= ندارد همان فهرست یکسرهٔ قبلی را نشان میدهد. اگر در فرمولی که گروه دارد فیلتری برچسب نگیرد، آخر فهرست زیر «سایر» میآید. نام دیگری هم میتوانید بگذارید و بعد از این چهار گروه نمایش داده میشود. نام گروه را با «ی» و «ک» فارسی بنویسید؛ املای عربی یک زیرعنوان جدا و تکراری میسازد.
14) مثال جامع و کاربردی ترکیبی
در نهایت، نمونه زیر یک فرمول کامل و واقعی است که تمامی مفاهیم بالا را به صورت یکجا پیادهسازی کرده است. میتوانید آن را مستقیماً کپی و استفاده کنید:
جمعبندی: طراحی تنظیمات ویژوال در دیدهبان بسیار ساده است. کافیست متغیرهای خود را با نامهای بزرگ مانند FILTER_، SHOW_ یا SETTING_ معرفی کرده و در کامنت خط آنها، برچسب فارسی، براکتهای انتخاب [مقدار=برچسب] و کلمات کلیدی نظیر multi یا title= را بکار ببرید تا زیباترین و کارآمدترین ابزار کنترلی را در اختیار داشته باشید.
اگر سوال یا ابهامی در رابطه با این مطلب دارید، همینجا بپرسید؛ کارشناسان ما پاسخ میدهند.
با ایمیل یا شماره موبایلی که ثبت میکنید، وقتی به کامنتتان پاسخ داده شود خبرتان میکنیم.
پرسشها و نظرات کاربران
2 پیام
امیررضا گل میرزائی
07 دی 1404 - 23:37
سلام وقت بخیر
میخواستم در یک نگاه آپشن هائی که هم حجم بالای 2000 دارن و هم اینکه بالای 10 درصد نسبت به روز قبل افزایش داشتن را ببینم .
ممنون میشم راهنمایی بفرمایید .
تشکر
تیم آپشن بازپاسخ
27 تیر 1405 - 18:29
با فیلتر ستون در دیدهبان، بدون فرمول:
1. روی سرستون «حجم معاملات» آیکن فیلتر → عملگر «بیشتر از» → مقدار `2000`
2. روی سرستون «٪ تغییر آخرین» آیکن فیلتر → عملگر «بیشتر از» → مقدار `10`
هر دو همزمان با منطق AND اعمال میشوند و خروجی همان قراردادهایی است که حجم بالای ۲۰۰۰ دارند و نسبت به دیروز بیش از ۱۰٪ رشد کردهاند.
اگر منظورتان تغییر قیمت پایانی است، بهجای مورد ۲ از ستون «٪ تغییر پایانی» استفاده کنید. فیلترها را بعداً از chipهای «فیلترهای کاربر» هم میتوانید ویرایش یا حذف کنید.