نمونه کدهای کاربردی در ایجاد ستون

مجموعه کاملی از نمونه کدهای آماده و کاربردی برای ساخت ستون‌های محاسباتی شخصی‌سازی‌شده و پیشرفته در دیده‌بان بر اساس بلک‌شولز، سر به سر، یونانی‌ها و موقعیت باز.

نویسنده: آپشن بازتاریخ انتشار: 1401/02/01آخرین به‌روزرسانی: 1405/05/3128 دقیقه مطالعه
اشتراک‌گذاری:

برای ساخت ستون، به دیده‌بان آپشن بروید (راهنمای دیده‌بان)، یا از طریق میزکار باکس دیده‌بان اضافه کنید؛ سپس روی دکمهٔ ستون محاسباتی کلیک کنید، یک نام مناسب بگذارید، کد را در ادیتور بنویسید و خروجی نهایی را با دستور return برگردانید، سپس آن را ذخیره کنید.

مراجع کمکی: راهنمای جامع فرمول‌نویسی · نمونه کدهای فیلتر دیده‌بان · راهنمای تنظیمات ویژوال (⚙️)

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

ستون‌های زیر آمادهٔ کپی‌اند، ولی برای اینکه بتوانید تغییرشان بدهید باید بدانید هر خط چه می‌گوید — زبان فرمول‌نویسی متغیر، شرط، آرایه و تابع را با همین جنس مثال‌ها توضیح می‌دهد.

قبل از نوشتن کد: فرمول‌های آماده و استراتژی‌ها

بیشتر چیزی که یک ستون تازه قرار است نشان بدهد، از قبل ساخته شده. نوشتن کد آخرین گزینه است، نه اولی — و همین ترتیب، وقتِ شما را نگه می‌دارد.

چهار مسیر، به ترتیبِ ارزانی کتابخانهٔ فرمول‌های آماده بدون کدنویسی — انتخاب کنید و فعال شود تنظیمات ویژوال روی همان فرمول آستانه‌ها را عوض کنید، کد را دست نزنید دستیار هوش مصنوعی توضیح فارسی بدهید، کد را برایتان بنویسد نوشتن کد در ادیتور ستون وقتی سه مسیر بالا جواب ندادند
چهار مسیر برای ساختن یک ستون، به ترتیبِ ارزانی. کد، آخرین گزینه است نه اولی — سه مسیر بالاتر همان کار را بدون ادیتور انجام می‌دهند.

یک: کتابخانهٔ فرمول‌های آماده. ده‌ها ستون و فیلتر آماده در خود دیده‌بان هست که با یک انتخاب فعال می‌شوند و یک خط کد هم لازم ندارند — فهرست کاملشان در فرمول‌های آمادهٔ دیده‌بان بدون کدنویسی آمده است.

دو: تنظیمات ویژوال. هر فرمولی که آیکن تنظیمات دارد، آستانه‌هایش را بدون باز کردن ادیتور می‌شود عوض کرد؛ همان کاری که بخش 7 همین مقاله با FILTER_MIN_MONTHLY می‌کند. ساخت و مدیریت این پنل در مدیریت خروجی و فیلتر فرمول توضیح داده شده.

سه: استراتژی‌های آماده. اگر دنبال یک ساختار چندپا هستید — کال اسپرد، کاوردکال، کانورژن و مانند آن‌ها — لازم نیست پاها را با pos.add بسازید. استراتژی‌های اختیار معامله در دیده‌بان فهرست کاملشان است، نقشهٔ استراتژی‌ها از روی سناریوی بازار به ساختار می‌رساندتان، و راهنمای فرمول‌نویسی و استراتژی‌های آماده کار با هر دو را کنار هم می‌گذارد. برای ستون‌سازی روی خودِ موقعیت‌های یک استراتژی هم ستون محاسباتی نمودار استراتژی هست.

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

و اگر هیچ‌کدام دقیقاً همان چیزی نبود که می‌خواهید، از همین‌جا به بعد کدش را می‌نویسیم.

1. قیمت تئوری و مدل ارزش‌گذاری بلک‌شولز

مراجع علمی: مدل بلک‌شولز چیست؟ · توابع بلک‌شولز در پلتفرم

یک سلول، سه کانال اطلاعات style( value , color , '' , tooltip ) مقدار چیزی که خوانده می‌شود رنگ وضعیت، بدون کلمه تولتیپ جزئیات، بدون شلوغی سلول یک سطر جا دارد — رنگ و تولتیپ، دو کانال اضافه‌اند هرچه در تولتیپ بگذارید، جدول را شلوغ نمی‌کند در مثال‌های این مقاله، پارامتر سوم همیشه خالی گذاشته شده
یک سلول سه کانال دارد: مقدار خوانده می‌شود، رنگ وضعیت را بی‌کلمه می‌گوید، و تولتیپ جزئیات را بدون شلوغ کردن جدول نگه می‌دارد.
رنگ، یک شرط است نه یک تزیین d > 0.5 ? green : d > 0.3 ? orange : red 0.62 0.41 0.18 حساسیت بالا میانه کم چشم، رنگ را قبل از عدد می‌بیند پس آستانه‌ها را همان‌جایی بگذارید که تصمیمتان عوض می‌شود و برای مقدارِ خالی، رشتهٔ خالی برگردانید — نه رنگِ خنثی وگرنه ردیف بی‌داده شبیه ردیف کم‌ارزش دیده می‌شود
رنگ را چشم پیش از عدد می‌بیند، پس آستانه‌ها را جایی بگذارید که تصمیم شما عوض می‌شود — و برای دادهٔ خالی رشتهٔ خالی بدهید، نه رنگ خنثی.

اختلاف قیمت بازار (بهترین تقاضا) با قیمت تئوریک بلک‌شولز (درصد):

return calcRateChange(calcBS().bs, option.ti.buy1Price) + '%';

نمایش رنگی ضریب دلتا (با رنگ‌بندی داینامیک بر اساس حساسیت):

let d = calcBS().delta; if (d == null) return ''; return style(roundNumber(d, 2), d > 0.5 ? '#16a34a' : d > 0.3 ? '#ea580c' : '#dc2626', '', 'دلتا');

تفاوت نوسان‌پذیری ضمنی (IV) از نوسان‌پذیری تاریخی (HV) دارایی پایه:

let iv = calcBS().iv; let hv = ua.hv; if (!iv || !hv) return ''; let diff = roundNumber((iv - hv) * 100, 1); return style(diff + '%', diff > 0 ? '#dc2626' : '#16a34a', '', 'IV − HV');

2. نقطه سربه سر (Breakeven) و آستانه رشد

مرجع علمی: نقطه سربه سر در معاملات آپشن

ترتیب دو آرگومان، علامت را برعکس می‌کند calcRateChange(a, b) از قیمت پایه تا سربه‌سر مثبت یعنی سربه‌سر بالاتر است calcRateChange(b, a) همان دو عدد، جای عوض‌شده همهٔ علامت‌های ستون برعکس این باگ شبیه داده به نظر می‌رسد، نه شبیه کد چون عددها معقول‌اند — فقط همه در جهت اشتباه یک ردیفِ آشنا را دستی چک کنید تا جهت را ببندید و همان جهت را در نام ستون بنویسید
جابه‌جا کردن دو آرگومان، علامت هر درصد در ستون را برعکس می‌کند — و چون عددها معقول می‌مانند، این باگ شبیه داده به نظر می‌رسد نه شبیه کد.

درصد فاصلهٔ آخرین قیمت سهم پایه تا نقطه سربه سر استراتژی:

return calcRateChange(ua.ti.lastPrice, breakeven()) + '%';

محاسبه دستی نقطه سربه سر خریدار بر اساس قیمت معامله جاری:

let optionPrice = basePrice(option); let be = option.type === 'call' ? optionPrice + option.strike : option.strike - optionPrice; return calcRateChange(ua.ti.lastPrice, be) + '%';

3. سنجش نقدشوندگی و دفتر سفارش (Order Book)

مرجع علمی: سنجش نقدشوندگی و اهمیت اسپرد

سه عدد در یک سطر 1,240 | 1,310 | 5.6% تقاضا عرضه اسپرد سه رنگ متفاوت، سه معنی متفاوت — بدون نوشتن سه کلمه و هر تکه تولتیپ خودش را دارد، پس نامشان هم در دسترس است اگر یکی از دو سرخط خالی باشد، کل سلول را خالی برگردانید اسپردِ محاسبه‌شده روی سرخط نبود، عددِ بی‌معناست
سه مقدار در یک سطر با سه رنگ و سه تولتیپ — و اگر یکی از دو سرخط خالی باشد، کل سلول باید خالی برگردد چون اسپردِ محاسبه‌شده روی نبودِ سرخط بی‌معناست.

نمایش درصد فاصله خرید و فروش (Bid-Ask Spread):

return askBidSpread() + '%';

نمایش همزمان قیمت تقاضا (سبز)، قیمت عرضه (قرمز) و اسپرد (خاکستری):

if (!option.ti.buy1Price || !option.ti.sell1Price) return ''; return style(commaSeparator(option.ti.buy1Price), '#16a34a', '', 'تقاضا') + ' | ' + style(commaSeparator(option.ti.sell1Price), '#dc2626', '', 'عرضه') + ' | ' + style(askBidSpread() + '%', '#6b7280', '', 'اسپرد');

4. ارزش ذاتی و ارزش زمانی قراردادها

مرجع علمی: ارزش ذاتی و زمانی قراردادهای اختیار

دو تابع آماده که خودشان حساب می‌کنند intrinsic() ارزش ذاتی به ریال مثبت یعنی قرارداد در سود است timeValue() ارزش زمانی به ریال باقی‌ماندهٔ پرمیوم نیازی به نوشتن فرمول ذاتی و زمانی نیست این دو خودشان کال و پوت را تشخیص می‌دهند و صفرِ منفی نمی‌دهند و چون جمعشان پرمیوم است، یکی را بسازید و دیگری را کم کنید ولی استفاده از هر دو تابع خواناتر از تفریق دستی است
intrinsic() و timeValue() خودشان کال و پوت را تشخیص می‌دهند و ارزش ذاتی منفی نمی‌دهند — پس لازم نیست فرمولشان را دستی بنویسید.

نمایش مقدار ریالی ارزش ذاتی (سبز برای ارزش‌های ذاتی مثبت):

return style(roundNumber(intrinsic(), 0), intrinsic() > 0 ? 'green' : '#999');

نمایش مقدار ریالی ارزش زمانی قرارداد:

return roundNumber(timeValue(), 0);

5. موقعیت‌های باز (Open Interest) و وضعیت زنجیره

مراجع علمی: موقعیت باز (OI) · سقف موقعیت باز بورس

وضعیت زنجیره، چیزی که فقط اینجا هست باز | 68% زنجیره درصد پر شدن سقف قانونی option.chainOpen زنجیره باز است یا محدود شده option.chainFill چند درصد سقف قانونی پر شده زنجیرهٔ بسته یعنی نمی‌شود موقعیت تازه باز کرد پس این ستون، قراردادهایی را جدا می‌کند که تحلیلشان بی‌فایده است
وضعیت زنجیره و درصد پر شدن سقف قانونی در یک سلول — زنجیرهٔ بسته یعنی نمی‌شود موقعیت تازه باز کرد، پس تحلیل آن قرارداد بی‌فایده است.

نمایش تعداد موقعیت باز به صورت فشرده به همراه درصد تغییر روزانه:

if (!option.openInterest) return ''; let chg = option.openInterestPC; let chgColor = chg > 5 ? '#16a34a' : chg < -5 ? '#dc2626' : '#6b7280'; return style(rnwc(option.openInterest), '', '', 'OI') + ' | ' + style(roundNumber(chg, 1) + '%', chgColor, '', 'تغییر روزانه');

نمایش وضعیت زنجیره معاملاتی (باز/بسته) و درصد پر شدن سقف قانونی بورس:

let status = option.chainOpen ? 'باز' : 'بسته/محدود'; let color = option.chainOpen ? '#16a34a' : '#dc2626'; return style(status, color, '', 'زنجیره') + ' | ' + style(roundNumber(option.chainFill, 0) + '%', '#ea580c', '', 'درصد سقف قانون');

6. توابع پیشرفته هم‌سررسید (زنجیره اختیارها)

ارجاع به قراردادهای همسایه، داخل سلول دو اعمال بالاتر یک اعمال بالاتر سطر جاری یک اعمال پایین‌تر دو اعمال پایین‌تر همه در یک سلول، قابل کلیک optionSE(-2 … +2) showDetail(namad) یعنی مقایسهٔ همسایه‌ها بدون ترک جدول و بدون اسکرول
یک ستون می‌تواند قراردادهای اعمالِ بالاتر و پایین‌تر را قابل کلیک کنار هم بگذارد — مقایسهٔ همسایه‌ها بدون ترک جدول.

نمایش نمادهای هم‌سررسید با قیمت اعمال بالاتر و پایین‌تر:

let result = ''; for (let index = -2; index <= 2; index++) { if (index === 0) continue; let o = optionSE(index); if (o) result += showDetail(o.namad, '#') + '
'; } return result;

نمایش مشخصات نماد اختیار فروش (Put) مقابل برای جفت‌قرارداد اختیار خرید (Call) جاری:

let opp = optionSE(0, 'os'); return opp ? showDetail(opp.namad, 'put') : '';

7. ستون پیشرفته — ترکیب کال اسپرد صعودی همراه با دکمه 📈 نمودار سود/زیان

این ستون فوق‌العاده هوشمند، بهترین ترکیب کال اسپرد را روی نمادهای پایه پیدا کرده و پوزیشن‌های خرید و فروش را مستقیماً وارد شیء pos می‌کند. به کمک ثابت‌های ویژوال جدید، شما می‌توانید آستانه‌های فیلتر سود ماهانه و فاصله اعمال تا سهم را مستقیماً از دکمهٔ ⚙️ بالای ستون کنترل کنید:

ستون پیشرفته — چهار چیز در یک فرمول 1 ثابت‌های ویژوال آستانه از پنل ⚙️ 2 حلقه روی زنجیره بهترین ترکیب 3 ساخت پوزیشن pos 4 دکمهٔ نمودار در همان سلول گام یک همان چیزی است که این ستون را قابل تنظیم می‌کند کاربر آستانه‌ها را عوض می‌کند بدون اینکه کد را ببیند پیش از حلقه، حجم سرخط هر دو پا را چک کنید وگرنه ترکیبی پیشنهاد می‌شود که خریدار یا فروشنده ندارد و ستون، قابل اجراترین گزینه را بالا می‌آورد نه فقط بهترین عدد را
ستون پیشرفته چهار چیز را یک‌جا دارد: ثابت‌های ویژوال، حلقه روی زنجیره، ساخت پوزیشن و دکمهٔ نمودار — و حجم سرخط را باید پیش از حلقه چک کرد.
// --- تنظیمات ویژوال قابل تغییر در پنل ⚙️ --- const FILTER_MIN_MONTHLY = 2; // حداقل سود ماهانه مورد انتظار (درصد) const FILTER_MIN_STRIKE_DIST = 10; // حداقل فاصله اعمال بالاتر از سهم (درصد) let result = ''; let index = -1; 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 (yCapital >= FILTER_MIN_MONTHLY && disStrike > FILTER_MIN_STRIKE_DIST && disStrike > 0 && option.ti.sell1Price > 0 && upper.ti.buy1Price > 0) { // اضافه کردن موقعیت خرید و فروش تعهدی به شیء جهت رسم پلات pos.add('buy', option.namad, 1, 'sell'); pos.add('sell', upper.namad, 1, 'buy'); result += showDetail(upper.namad) + ' : ' + style(yCapital, 'green', '', 'سود ماهانه') + ' : ' + style(disStrike, '#ea580c', '', 'فاصله اعمال'); // ساخت دکمه 📈 تعاملی جهت بارگذاری فوری پوزیشن‌ها در صفحهٔ نمودار سود/زیان result += pos.build('اسپرد ' + option.namad); } } return result;

8. احتمال سود و اهرمی که واقعاً اهرم است

مراجع علمی: نوسان ضمنی (IV) و تاریخی (HV) · دلتا و کاربرد معاملاتی‌اش

دو ستونی که بیشترین اطلاعات را به ازای یک سلول می‌دهند همین دو هستند، و هر دو یک تلهٔ واحد دارند که هیچ خطایی نمی‌دهد.

دو تابع، دو قرارداد مخالف برای نوسان calcBS({ volatility: 45 }) درصد می‌خواهد — عدد 45 یعنی 45٪ مقدار 0.45 هم درصد خوانده می‌شود: 0.45٪ popWithIV(price, be, 0.45, days) اعشار می‌خواهد — عدد 0.45 یعنی 45٪ مقدار 45 یعنی 4500٪ و خروجی 50 می‌شود هیچ‌کدام خطا نمی‌دهد؛ فقط عددِ غلطِ باورکردنی می‌سازد
واحد نوسان در دو تابع برعکس هم است: calcBS درصد می‌خواهد و popWithIV اعشار. واحد اشتباه خطا نمی‌دهد — یک عدد کاملاً معقول می‌سازد که غلط است.

احتمال رسیدن به نقطهٔ سربه‌سر تا سررسید (درصد):

let iv = option.iv; if (!iv) return ''; let p = popWithIV(ua.ti.lastPrice, breakeven(), iv, option.daysUntilMaturity); if (p === '') return ''; return style(p + '%', Number(p) >= 50 ? '#16a34a' : '#dc2626', '', 'احتمال رسیدن به سربه‌سر');

سه نکته که هر سه‌شان بی‌صدا خراب می‌کنند. اول اینکه popWithIV یک رشته برمی‌گرداند نه عدد، پس مقایسهٔ مستقیمش با 50 مقایسهٔ متنی می‌شود؛ به همین دلیل در مثال بالا از Number(p) استفاده شده. دوم اینکه وقتی نوسان ضمنی صفر یا نامعتبر باشد رشتهٔ خالی می‌دهد، پس شرط p === '' لازم است. سوم — و مهم‌تر از هر دو — واحد نوسان: option.iv عددی بین 0 و 1 است و popWithIV هم همان را می‌خواهد. اگر به‌جایش 45 بدهید، خطا نمی‌گیرید؛ خروجی 50 می‌شود، که یک عدد کاملاً معقول و کاملاً غلط است.

تابع خواهرش probOfProfit همان محاسبه را می‌کند ولی ترتیب آرگومان‌هایش برعکس است — اول سربه‌سر، بعد قیمت روز — و عدد برمی‌گرداند نه رشته. روی یک نمونهٔ واقعی، جابه‌جا کردن همین دو آرگومان جواب را از 30 به 70 می‌برد و باز هم هیچ‌جا خطایی دیده نمی‌شود. یک ردیف آشنا را دستی چک کنید تا جهت را ببندید.

اهرم مؤثر کنار اهرم ساده:

let simple = leverage(); let real = effectiveLeverage(); if (!simple || !real) return ''; return style(showNo(real, 1), '#16a34a', '', 'اهرم مؤثر — همان ستون اهرم دیده‌بان') + ' | ' + style(showNo(simple, 1), '#6b7280', '', 'اهرم ساده، بدون دلتا');

leverage() فقط قیمت پایه را بر قیمت اختیار تقسیم می‌کند و معمولاً عدد بزرگ و خوش‌آب‌ورنگی می‌دهد. effectiveLeverage() همان را در قدر مطلق دلتا ضرب می‌کند، و همین دومی است که ستون «اهرم» دیده‌بان نشان می‌دهد. برای یک قرارداد دور از پول که دلتایش کوچک است، فاصلهٔ این دو عدد چند برابر می‌شود — و اهرمی که واقعاً به دستتان می‌رسد، همان کوچک‌تر است.

9. بازده: ماهانه خطی است، سالانه مرکب

مراجع علمی: نقطهٔ سربه‌سر · وجه تضمین در قراردادهای آپشن

بازده پرمیوم برای فروشنده، ماهانه و سالانه کنار هم:

let premium = option.ti.buy1Price; if (!premium || !option.strike) return ''; let r = (premium / option.strike) * 100; return style(showNo(monthlyProfit(r, option.daysUntilMaturity), 1) + '%', '#16a34a', '', 'ماهانه') + ' | ' + style(ytmProfit(r, option.daysUntilMaturity) + '%', '#ea580c', '', 'سالانه');

این دو تابع دو کار متفاوت می‌کنند و اشتباه گرفتنشان ستون را از این رو به آن رو می‌کند. monthlyProfit صرفاً بازده را بر تعداد ماه تقسیم می‌کند؛ ytmProfit آن را مرکب می‌کند و به یک سال می‌رساند. برای یک بازده 3 درصدی در 60 روز، اولی 1.5 می‌دهد و دومی 20؛ در 90 روز، اولی 1 و دومی 13. هیچ‌کدام غلط نیستند، ولی اگر عنوان ستون نگوید کدام است، خواننده عدد بزرگ‌تر را به حساب سود ماهانه می‌گذارد.

یک محافظ لازم هم دارد: ytmProfit وقتی بازده یا روز صفر باشد رشتهٔ خالی برمی‌گرداند، پس نمی‌شود مستقیم در محاسبهٔ بعدی استفاده‌اش کرد.

وجه تضمین لازم و حداقلش، در یک سلول:

if (!option.requiredMargin) return ''; return style(rnwc(option.requiredMargin), '#ea580c', '', 'وجه تضمین لازم') + ' | ' + style(rnwc(option.minimumMargin), '#6b7280', '', 'حداقل وجه تضمین');

این ستون فقط برای قراردادهایی مقدار دارد که موقعیت فروش رویشان باز می‌شود. rnwc عدد را با پسوند هزار و میلیون و میلیارد نشان می‌دهد، پس ستون باریک می‌ماند و رقم کامل در تولتیپ می‌نشیند.

10. رنگ‌بندی و نمایش، بدون شرط تودرتو

در بخش 1 رنگ دلتا با دو شرط تودرتو ساخته شد. وقتی بازه‌ها بیشتر از دو تا شوند، آن روش خوانا نمی‌ماند — colorRange همان کار را با یک فهرست انجام می‌دهد.

دلتا با سه بازهٔ رنگی، بدون ternary:

let d = calcBS().delta; if (d == null) return ''; return colorRange(roundNumber(d, 2), [ { min: 0.5, max: 999, color: '#16a34a' }, { min: 0.3, max: 0.5, color: '#ea580c' }, { min: -999, max: 0.3, color: '#dc2626' } ]);

دو چیز را باید بدانید وگرنه ستون بی‌سروصدا ناقص می‌ماند. اول: بازه‌ها باید کل دامنه را بپوشانند. colorRange اولین بازه‌ای را که مقدار در آن بیفتد اعمال می‌کند و اگر هیچ بازه‌ای نگیرد، مقدار را خام و بدون رنگ برمی‌گرداند — نه خطا، نه سلول خالی؛ فقط یک ردیف بی‌رنگ وسط بقیه. به همین دلیل در مثال بالا کف و سقف عمداً بزرگ گرفته شده‌اند تا دلتای منفی اختیار فروش هم جا بیفتد.

دوم: از میان کلیدهای این تابع، color و bg کار می‌کنند چون مستقیم به استایل درون‌خطی تبدیل می‌شوند، ولی size و bold کلاس‌هایی می‌سازند که در استایل‌های سایت تعریف نشده‌اند و هیچ اثری روی صفحه ندارند. اگر متن پررنگ می‌خواهید، از style استفاده کنید که پارامتر مخصوص خودش را دارد.

جای قیمت اعمال و سربه‌سر روی یک نوار قیمت:

let be = breakeven(); if (!be || !ua.ti.lastPrice) return ''; let pts = [ { value: option.strike, color: 'purple', tooltip: 'قیمت اعمال' }, { value: be, color: 'green', tooltip: 'سربه‌سر' } ]; pts.sort(function (a, b) { return a.value - b.value; }); return createPriceLine({ width: 180, currentPrice: ua.ti.lastPrice, points: pts });

createPriceLine بین هر دو نقطهٔ متوالی یک قطعهٔ رنگی می‌کشد، پس نقاط باید صعودی مرتب باشند؛ بدون آن sort، قطعه‌ها روی هم می‌افتند. مقیاس نوار خودکار از کمینه و بیشینهٔ همان نقاط به‌علاوهٔ قیمت روز ساخته می‌شود، و کنار هر نشانگر درصد فاصله‌اش تا قیمت روز در تولتیپ می‌آید. برای سنجیدن فاصلهٔ خرید و فروش هم نقش بازارگردان و اسپرد را ببینید.

نمونه‌های همین جنس برای فیلتر — که خروجی‌شان به‌جای یک مقدار، درست یا نادرست است — در نمونه کدهای کاربردی فیلترنویسی جمع شده‌اند.

مقالات مرتبط

فیلتر نویسی اختیار معامله در دیده بان سایت بورس TSETMC

آموزش نحوه ساخت فیلتر آپشن برای دیده بان سایت بورس اوراق بهادار تهران همراه با ساخت قالب شخصی و مقایسه با دیده بان حرفه ای سایت آپشن باز

رسم نمودار استراتژی

رسم نمودار سود و زیان استراتژی از دل فرمول‌نویسی دیده‌بان: پارامترهای کامل pos.add (سمت، تعداد، قیمت، وجه تضمین)، pos.build و pos.clear، با نمونه کاورکال، کال اسپرد صعودی و باترفلای.

فرمول نویسی با هوش مصنوعی | پرامپت آماده برای ChatGPT، Claude و Cursor

پرامپت آمادهٔ کپی با مرجع کامل فیلدها، توابع و قوانین فرمول‌نویسی دیده‌بان آپشن‌باز — آن را به ChatGPT یا Claude یا Cursor بدهید تا ستون و فیلتر دلخواهتان را بنویسد. به‌همراه نمونهٔ درخواست دقیق و نسخهٔ متنی همیشه‌به‌روز.

مدیریت خروجی و فیلتر فرمول | راهنمای تنظیمات ویژوال دیده بان

آموزش گام‌به‌گام طراحی تنظیمات ویژوال: آیکن تنظیمات، کنترل‌های عدد، تیک، لیست کشویی، چندانتخابی، مرتب‌سازی و ترتیب چیدمان ستون‌ها.

نمونه کدهای کاربردی فیلترنویسی دیده بان اختیار معامله

مجموعه کامل کدهای فیلترنویسی برای دیده‌بان اختیار معامله به همراه توضیح: فیلتر بر اساس نقدشوندگی، یونانی‌ها، قیمت‌گذاری بلک-شولز و استراتژی‌های معاملاتی آپشن در بورس.

راهنمای دیده بان آپشن باز | فیلتر و فرمول نویسی

راهنمای جامع دیده‌بان آپشن‌باز: جدول زنده قراردادها، فیلتر سریع روی سرستون (سربه‌سر، IV و …)، پنل فیلتر، فرمول‌نویسی، آلارم و اتصال به نمودار استراتژی.

استراتژی های اختیار معامله در دیده بان آپشن باز

فهرست کامل استراتژی‌های اختیار معامله در دیده‌بان آپشن‌باز — کاوردکال، اسپرد، استرادل، باکس و … — همراه با راهنمای تصویری افزودن ستون، تنظیم فیلترها و باز کردن نمودار سود و زیان.

راهنمای نمودار استراتژی اختیار معامله | ساخت و تحلیل سود و زیان

آموزش کامل نمودار استراتژی آپشن‌باز: ساخت چندپایه، قیمت روز، مقایسه با نمودار دوم، ورود اکسل کارگزاری، what-if، یونانی‌ها، جدول ماتریس، کارمزد، ذخیره و اتصال به فرمول‌نویسی — برای مبتدی تا حرفه‌ای.

ایجاد فیلدهای شخصی و دسترسی به آنها در فرمول نویسی

آموزش ساخت پرتفوی اختصاصی، تعریف فیلدهای شخصی (تعداد، قیمت خرید/فروش، یادداشت) و دسترسی پویا به آن‌ها در فرمول‌ها و ستون‌های دیده‌بان.

فیلتر قراردادها بر اساس درصد تفاوت بین قیمت و قیمت تئوری

آموزش کاربردی پیاده‌سازی اسکنر انحراف قیمت بازار از قیمت بلک‌شولز به همراه فیلتر حاشیه امنیت اعمال سهم با پنل تعاملی ویژوال (⚙️).

فرمول های آماده دیده بان اختیار معامله | بدون کدنویسی

فهرست کامل ستون‌ها و فیلترهای آماده دیده‌بان اختیار معامله در آپشن‌باز: نصب بدون کدنویسی، تنظیمات هر فرمول، و اینکه هر کدام چه چیزی از بازار آپشن را نشان می‌دهد.

فیلتر هوشمند قراردادهای اختیار معامله با شرایط بهینه معاملاتی

آموزش گام‌به‌گام ساخت و اجرای اسکنر هوشمند برای شناسایی بهترین قراردادهای اختیار معامله بر اساس ارزش معاملات، بلک‌شولز، اهرم و وضعیت در سود.

فیلتر پرمیوم های نزدیک در هم سررسید | فرمول نویسی

پیدا کردن قراردادهایی که پرمیومشان با هم‌گروه هم‌سررسید کمتر از آستانهٔ درصدی فاصله دارد — با optionSE، basePrice و calcRateChange.

آموزش فرمول نویسی اختیار معامله | متغیر، شرط، حلقه و تابع

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

دیدگاه‌ها و پرسش‌ها

اگر سوال یا ابهامی در رابطه با این مطلب دارید، همین‌جا بپرسید؛ کارشناسان ما پاسخ می‌دهند.

تجربه یا نکته‌ای دارید؟ نوشتنش به بقیهٔ کاربران هم کمک می‌کند.

پرسش‌ها و نظرات کاربران

5 پیام
حسین
19 اردیبهشت 1402 - 22:35
باسلام آیا این فیلترها در سایت tse قابل اجرا است؟ چون یکیش را تست کردم جواب نمیده
حسینپاسخ
19 اردیبهشت 1402 - 22:52
امکانش هست فرمولهایی که در سایت tse امکان پیاده سازیش باشه معرفی کنید
پشتیبانیپاسخ
22 اردیبهشت 1402 - 11:30
این کدها برای ستون محاسباتی دیده‌بان آپشن‌باز نوشته شده‌اند و در دیده‌بان TSETMC اجرا نمی‌شوند؛ دو محیط دو زبان جدا دارند. در TSETMC خروجی هر ردیف فقط درست یا نادرست است و فیلد اختصاصی اختیار معامله هم ندارد، ولی ستون اینجا یک مقدار برمی‌گرداند و به توابعی مثل calcBS() و optionSE() دسترسی دارد که معادلی در آن محیط ندارند. برای فیلترنویسی در خود TSETMC، این مقاله نمونه‌های آماده و محدودیت‌های آن محیط را دارد: https://optionbaaz.ir/pedia/فیلتر-نویسی-اختیار-معامله-دیده-بان-سایت-بورس-TSETMC-96
اشکان
13 اردیبهشت 1402 - 21:55
سلام چگونه میشود فرمولی نوشت که بشه باهاش نوسان ضمنی اختیار های کمتر از 0.6 را پیدا کرد
پشتیبانیپاسخ
15 اردیبهشت 1402 - 13:42
برای این شرط نیازی به فرمول نیست؛ ستون IV خودش فیلتر سرستون دارد. از دکمهٔ «ستون‌ها» در نوار بالای دیده‌بان ستون IV را روشن کنید، روی آیکن فیلتر همان سرستون بزنید، عملگر «کمتر از» را انتخاب کنید و مقدار 0.6 را بگذارید. مقدار این ستون اعشاری است، پس 0.6 یعنی 60٪. اگر خواستید همین شرط را با شرط‌های دیگر ترکیب کنید، فیلتر سرستون چند ستون هم‌زمان با منطق AND اعمال می‌شود و لازم نیست کد بنویسید.