فرمولنویسی با هوش مصنوعی | پرامپت اختصاصی و مرجع کامل توابع
پرامپت آماده و چیتشیت جامع تمام توابع، فیلدها و ساختار موتور فرمولنویسی دیدهبان برای کپی و ارسال به ChatGPT، Claude و Cursor.
نویسنده: بخش محتواتاریخ انتشار: 1405/02/01آخرین بهروزرسانی: 1405/05/2196 دقیقه مطالعه
اشتراکگذاری:
شما میتوانید کل متن این مقاله یا بخشهای مرجع آن را کپی کرده و به همراه سناریوی مدنظر خود به هوش مصنوعی (مانند ChatGPT، Claude یا Cursor) بدهید تا فرمول یا فیلتر نهایی دیدهبان آپشنباز را با دقت 100٪ و بدون خطا برایتان تولید کند.
چطور از این راهنما استفاده کنیم؟
کافیست پرامپت آمادهٔ بخش زیر را کپی کرده و به هوش مصنوعی بفرستید، سپس فرمول دلخواه خود را توصیف کنید (مثلاً: «فرمول آربیتراژ خرید کال با محاسبه کارمزد و فیلتر دلتا را برایم بنویس»).
کپی مرجع، توصیف سناریو، چسباندن در ویرایشگر، و آزمایش — مرحلهٔ آخر را رد نکنید: کدی که اجرا میشود لزوماً کدی نیست که منظورتان بود.نام فیلدِ حدسی خطای پرصدا نمیدهد — ستون فقط خالی میماند و شما فکر میکنید شرط برقرار نبوده. برای همین مرجع باید کامل همراه درخواست برود.
📋 پرامپت آماده برای ارسال به هوش مصنوعی (کپی کنید)
من میخواهم یک فرمول/فیلتر برای دیدهبان اختیار معامله (آپشن) در پلتفرم آپشنباز بنویسم.
کد نهایی باید به زبان جاوااسکریپت (ES6) باشد و مقدار خروجی را با تگ return برگرداند.
لطفاً بر اساس مرجع کامل فیلدها، توابع و ساختار فرمولنویسی که در زیر آوردهام، فرمول مدنظر من را بنویس:
--- مرجع فیلدها و توابع پلتفرم ---
1. آبجکتهای اصلی:
- option: اطلاعات قرارداد جاری (مانند استرایک، روز تا سررسید و ...)
- ua: اطلاعات دارایی پایه قرارداد جاری (مانند نوسان تاریخی HV، رتبه و ...)
2. فیلدهای آبجکت option:
- option.namad: نماد اختیار (رشته - مانند ضهرم8004)
- option.name: نام کامل نماد اختیار (رشته)
- option.strike: قیمت اعمال (عدد)
- option.type: نوع قرارداد ("call" یا "put")
- option.daysUntilMaturity: تعداد روزهای تقویمی تا سررسید (عدد)
- option.dayTradesUntilMaturity: تعداد روزهای معاملاتی تا سررسید (عدد)
- option.size: اندازه قرارداد (تعداد سهم، معمولاً 1000)
- option.state: وضعیت قرارداد ("ITM" | "ATM" | "OTM")
- option.openInterest: موقعیتهای باز (عدد)
- option.openInterestPC: درصد تغییر موقعیت باز نسبت به روز قبل
- option.iv: نوسانپذیری ضمنی (عدد بین 0 تا 1)
- option.requiredMargin: وجه تضمین کلید (عدد)
- option.minimumMargin: حداقل مارجین قابل قبول
- option.blackSholesHV: قیمت نظری بلکشولز از پیشمحاسبهشده با HV پایه (ua.hv)
- option.fee: کارمزد خرید و فروش قرارداد اختیار (به صورت ضریب، مثلاً 0.001)
- option.buyExerciseFee: کارمزد اعمال خرید (ضریب)
- option.writeExerciseFee: کارمزد اعمال فروش (ضریب)
3. فیلدهای آبجکت ua (دارایی پایه):
- ua.namad: نماد سهم پایه (رشته - مانند خودرو، اهرم)
- ua.name: نام کامل سهم پایه
- ua.hv: نوسانپذیری تاریخی سهم پایه (عدد بین 0 تا 1)
- ua.ivRank: رتبه نوسانپذیری ضمنی نسبت به یک سال گذشته (0 تا 100)
- ua.ivPercentile: درصد نوسانپذیری ضمنی (0 تا 100)
- ua.isEtf: آیا سهم پایه صندوق است؟ (boolean)
- ua.buyFee: کارمزد خرید سهم پایه
- ua.sellFee: کارمزد فروش سهم پایه
4. فیلدهای اطلاعات معاملاتی روز (ti) - قابل دسترسی روی option.ti و ua.ti:
- lastPrice: آخرین قیمت معاملهشده
- lastPC: درصد تغییر آخرین قیمت نسبت به دیروز
- endPrice: قیمت پایانی
- endPC: درصد تغییر قیمت پایانی
- volume: حجم معاملات امروز
- tValue: ارزش معاملات امروز (ریال)
- lastDayVolume: حجم معاملات روز قبل
- lastDayTValue: ارزش معاملات روز قبل
- min: کمترین قیمت معاملهشده امروز
- max: بیشترین قیمت معاملهشده امروز
- dailyPriceLow: حد پایین دامنه نوسان قیمت روز (فقط روی ua.ti دامنه واقعی است)
- dailyPriceHigh: حد بالای دامنه نوسان قیمت روز (فقط روی ua.ti دامنه واقعی است؛ روی option.ti حد مطلق ابزار در آن مینشیند نه دامنه نوسان)
- صف خرید/فروش 5 سطحی: buy1Price تا buy5Price و sell1Price تا sell5Price (قیمتها) و حجمهای متناظر: buy1Volume تا buy5Volume و sell1Volume تا sell5Volume
- آمار حقیقی/حقوقی: realBuyVolume, coBuyVolume, realSellVolume, coSellVolume و تعداد خریدار/فروشنده: realBuyCount, coBuyCount, realSellCount, coSellCount
5. توابع کمکی تحلیلی و معاملاتی:
- intrinsic(): ارزش ذاتی قرارداد (تفاوت قیمت پایه و استرایک بر اساس نوع خرید/فروش)
- timeValue(): ارزش زمانی قرارداد (حقپریمیوم منهای ارزش ذاتی مثبت)
- isITM(): آیا قرارداد در سود (In-the-Money) است؟ (boolean)
- breakeven(): قیمت نقطه سر به سر قرارداد در سررسید
- leverage(): اهرم ساده قرارداد، بدون دلتا (قیمت پایه تقسیم بر قیمت اختیار)
- effectiveLeverage(): اهرم مؤثر قرارداد — leverage() ضربدر قدر مطلق دلتا؛ همان عددی که ستون «اهرم» در دیدهبان نشان میدهد
- askBidSpread(): درصد فاصله بهترین قیمت خرید و فروش (اسپرد) از آخرین قیمت
- probOfProfit(bePrice, currentPrice, iv, daysToMaturity): درصد احتمال موفقیت/سود تا سررسید (بین 0 تا 100)
- uaDailyRange(): دامنه نوسان امروز نماد پایه به صورت آبجکت { base, low, high, upPct, downPct } — base قیمت پایانی دیروز، low و high کف و سقف مجاز (جای صف فروش و صف خرید) و upPct و downPct همانها به درصد. فقط برای نماد پایه بورس و فرابورس مقدار دارد و در بقیه حالتها null است، پس اول باید بررسی شود
- uaPriceRange(days?): قیمتی که نماد پایه با چند روز صف خرید (high) یا صف فروش (low) پشت سر هم میتواند به آن برسد — دامنه روزانه به صورت مرکب روی days روز معاملاتی. بدون آرگومان option.dayTradesUntilMaturity همان قرارداد را میگیرد. خروجی { base, days, low, high, upPct, downPct } و در نبود دامنه معتبر null
- basePrice(item): قیمت بر اساس مبنای انتخابی کاربر در دیدهبان (پاس دادن option یا ua به عنوان ورودی)
6. توابع محاسباتی و بازدهی:
- ytmProfit(r, t): بازدهی تا سررسید سالانهشده (r درصد بازدهی کل، t روز تا سررسید)
- monthlyProfit(profit, days): بازدهی ماهانه بر اساس درصد سود و تعداد روز
7. توابع فرمتدهی و زیباسازی خروجی سلولها (رنگ و متن):
- roundNumber(number, maxDecimals?): گرد کردن عدد تا تعداد اعشار مشخص
- commaSeparator(val, fixed?): جدا کردن سه رقم سه رقم عدد
- formatNumber(x, fixed?): فرمتدهی عدد بزرگ همراه با حروف K، M و B
- calcRateChange(n1, n2, fix?): درصد تغییر از عدد n1 به n2
- rnwc(x, fixed?, fixedB?, isCurrency?, wordifyTitleSpan?, showZero?): نمایش پیشرفته عدد همراه با رنگ، فرمت و تبدیل به حروف فارسی در تولتیپ
- rnWordify(val, fromTable?): تبدیل عدد به حروف فارسی همراه با واحدهای ریال/درصد
- wordifyfa(num): تبدیل ساده عدد به حروف فارسی
- namadNo(namad): استخراج عدد انتهای نماد (مثلاً 8004 از ضهرم8004) برای یافتن استرایک یا تاریخ
- style(value, color, bg?, title?, bold?): استایلدهی سلول با رنگ متن، پسزمینه، تولتیپ و ضخامت متن
- colorCondition(value, min, minColor, max, maxColor, mode?, comma?): رنگآمیزی شرطی عدد بین دو بازه
- colorRange(val, ranges): رنگآمیزی بر اساس بازههای دلخواه (آرایهای از قوانین رنگ)
- showDetail(optionName, title?): ساخت دکمه باز کردن جزئیات قرارداد در پایین صفحه
- copyToClipboard(value): ساخت دکمهٔ کپی کردن یک مقدار در حافظه کلاینت
- createPriceLine({ width, points, currentPrice, marginPercent? }): ساخت نمودار خطی کوچک مینیاتوری از قیمت نسبت به نقاط استرایک
- sortAndFormatResults(items, sortBy, sortDir?, displayInline?): مرتبسازی گزینههای یک استراتژی در یک سلول و قالببندی خروجی با خط افقی یا لوله
8. توابع ساخت سبد استراتژی و شبیهساز (P/L):
- pos.add(position, namad, count?, price?, cashBlock?): اضافه کردن یک موقعیت به سبد شبیهساز. پارامتر position میتواند یکی از مقادیر 'buy_call' | 'sell_call' | 'buy_put' | 'sell_put' | 'buy_stock' | 'sell_stock' باشد.
- pos.build(name?, tradingFee?, exerciseFee?): نهاییسازی و تولید دکمهٔ نمایش نمودار سود/زیان (P/L) و ساخت استراتژی تعاملی در صفحه
- pos.clear(): پاکسازی سبد شبیهساز قبل از محاسبات جدید
9. توابع محاسبات بلکشولز و یونانیها:
- calcBS(namad?) | calcBS(overrides?): محاسبه بلکشولز و استخراج یونانیها. خروجی یک آبجکت است شامل:
{ bs: قیمت تئوری, delta: دلتا, gamma: گاما, theta: تتا, vega: وگا, rho: رو }
ورودی overrides میتواند اختیاری شامل { uaPrice, strike, iv, days, rate, type } باشد.
10. توابع جستجو و زنجیره قراردادها:
- getOptionsByChain(uaNamad, type?, days?): دریافت کل قراردادهای زنجیرهٔ یک دارایی پایه
- getOptionByParam(type?, strike?, days?, baseNamad?): جستجوی دقیق یک قرارداد بر اساس مشخصات
- optionSE(strikeNo?, type?): دریافت قرارداد همسررسید با چند استرایک بالاتر یا پایینتر (مثلاً 1 برای یک استرایک بالاتر، 1- برای پایینتر)
- optionSU(namad?, type?): دریافت قرارداد با سررسید متفاوت اما استرایک دقیقاً یکسان
- getOptionByNamad(namad): دریافت مستقیم آبجکت قرارداد دیگر با استفاده از نماد فارسی آن
- getUaByNamad(namad): دریافت مستقیم آبجکت دارایی پایه دیگر با استفاده از نماد فارسی آن
--- قوانین کلیدی فرمولنویسی و کنترلهای ویژوال ---
1. ساختار متغیرهای تعاملی (ویژوال):
هر ثابتی که با حروف بزرگ و یکی از پیشوندهای معتبر تعریف شود، در پنجره تنظیمات به عنوان کنترل تعاملی ظاهر میشود. نوع کنترل از روی مقدار اولیه و کامنت انتهای همان خط ساخته میشود. قوانین نگارش کامنت برای ساخت دکمهها:
- عدد (Number): مقدار اولیه عددی.
const FILTER_MIN_VOL = 100; // حداقل حجم
- تیک روشن/خاموش (Checkbox): مقدار اولیه منطقی true/false.
const SETTING_FEE = true; // محاسبه کارمزد
- لیست کشویی تکانتخابی (Select Dropdown): گزینهها با براکت [مقدار=برچسب] یا [مقدار] مشخص میشوند. برای ساخت گزینه خالی یا خط تیره از [] استفاده میشود.
const FILTER_STATE = 'ITM'; // وضعیت [ITM=در سود] [OTM=در زیان] [ATM=بیتفاوت] []
- لیست چندانتخابی (Multi-Select): کلمه کلیدی multi در کامنت قرار میگیرد و گزینهها با براکت مشخص میشوند. مقدار ذخیره شده در متغیر رشتهای جدا شده با ویرگول (مثلا '1,3') خواهد بود.
const FILTER_ZONES = '1,2'; // محدوده قیمتی multi [1=پایین] [2=وسط] [3=بالا]
- توضیح راهنما (Tooltip): با قرار دادن title=توضیحات در کامنت ظاهر میشود.
const FILTER_DISTANCE = ''; // فاصله تا اعمال title=عدد مثبت به معنای بالای استرایک است
2. مرتبسازی ویژوال (SORT_BY & SORT_DIR):
برای افزودن مرتبسازی به پنجره تعاملی، از این دو ثابت با گزینههای دلخواه استفاده کن:
const SORT_BY = 'profit'; // [profit=سود] [volume=حجم]
const SORT_DIR = 'desc'; // [asc=صعودی] [desc=نزولی]
3. ترتیب نمایش و چیدمان کشیدنی (Display Order):
اگر فرمول بخشهای نمایشی مختلفی دارد، متغیرهای SHOW_ را همراه با آرایه displayOrder تعریف کن تا کاربر بتواند با کشیدن و رها کردن ترتیب آنها را تغییر دهد:
const SHOW_VOLUME = true; // نمایش حجم
const SHOW_IV = true; // نمایش IV
const displayOrder = ['SHOW_VOLUME', 'SHOW_IV'];
4. الگوی استاندارد فیلتر دوکاره (ستون + فیلتر ردیف):
کدهای شما باید دوکاره باشند؛ یعنی هم بتوانند به عنوان ستون در جدول مقدار نشان دهند و هم به عنوان فیلتر کل ردیف کار کنند. ساختار اجباری فیلتر دوکاره به شکل زیر است:
const FILTER_RESULT = false; // سوئیچ فعالسازی فیلتر کل جدول
const FILTER_SHOW = true; // فیلتر در نمایش سلولهای ستون
let isMatched = [شرط فیلتر شما، مثلاً حجم بزرگتر از فیلتر];
if (FILTER_RESULT) return isMatched; // اگر به عنوان فیلتر ردیف فعال شد، مقدار بولی برگردان
if (!FILTER_SHOW && !isMatched) return ''; // اگر سلول شرط را نداشت و فیلتر نمایش فعال نبود، خالی بماند
// در غیر این صورت خروجی سلول را چاپ کن:
return [خروجی نهایی شما، مثلاً مقدار حجم یا دکمه استراتژی];
حالا درخواست من این است:
[درخواست فرمول نویسی خود را در این بخش بنویسید]
1) اصول پایه و قوانین ساختار فرمول
موتور فرمولنویسی پلتفرم از جاوااسکریپت استاندارد پشتیبانی میکند. رعایت نکات زیر الزامی است:
نوع کنترل را مقدار اولیه و کامنتِ همان خط میسازند، نه یک پنجرهٔ تنظیمات جدا — عدد، تیک، یا فهرست کشویی از براکتها.
اجبار در return: فرمول شما باید در نهایت مقدار عددی یا رشتهٔ متنی (که میتواند حاوی تگهای HTML جهت زیباسازی باشد) را با دستور return برگرداند. در غیر این صورت سلول جدول خالی خواهد ماند.
تعریف متغیرهای تعاملی (تنظیمات ویژوال): هر ثابتی که با حروف بزرگ و پیشوندهای معتبر تعریف شود، در پنجره تنظیمات به عنوان کنترل تعاملی ظاهر میشود.
const FILTER_MIN_VOLUME = 100; // حداقل حجم
const SHOW_VOLUME = true; // نمایش حجم معاملات
2) مشخصات آبجکتهای اصلی (option & ua)
در بدنهٔ هر فرمول، دو آبجکت اصلی به نامهای option (قرارداد جاری) و ua (دارایی پایه متناظر) در دسترس هستند:
ti یک آبجکت مستقل نیست — زیرمجموعهٔ هر دو است: option.ti و ua.ti. حجم قرارداد و حجم سهم پایه دو چیز متفاوتاند.
فیلدهای پرکاربرد آبجکت option:
option.namad: نماد فارسی قرارداد اختیار (مثلاً ضهرم8004)
option.strike: قیمت اعمال قرارداد (Strike Price)
option.type: نوع قرارداد اختیار که فقط شامل دو مقدار 'call' یا 'put' است.
option.daysUntilMaturity: تعداد روزهای تقویمی باقیمانده تا تاریخ سررسید.
option.size: اندازه یا ضریب قرارداد اختیار (معمولاً 1000 سهم).
option.state: وضعیت مالی قرارداد که شامل سه مقدار 'ITM' (در سود)، 'ATM' (سر به سر) یا 'OTM' (خارج از سود) است.
option.openInterest: تعداد کل موقعیتهای باز فعال در بازار برای این قرارداد.
option.iv: نوسانپذیری ضمنی قرارداد (عددی بین 0 تا 1).
option.requiredMargin: وجه تضمین کلید اعلام شده توسط بورس برای موقعیت فروش.
option.fee: نرخ کارمزد معاملهٔ خرید/فروش اختیار.
فیلدهای پرکاربرد آبجکت ua:
ua.namad: نماد دارایی پایه (مثلاً خودرو، اهرم).
ua.hv: نوسانپذیری تاریخی دارایی پایه (عددی بین 0 تا 1).
ua.ivRank: رتبه تلاطم ضمنی فعلی نسبت به یک سال گذشته (بازهٔ 0 تا 100).
ua.ivPercentile: درصد روزهایی که تلاطم ضمنی پایه کمتر از مقدار فعلی بوده است (بازهٔ 0 تا 100).
ua.isEtf: مشخص میکند آیا دارایی پایه صندوق قابل معامله است یا خیر (true / false).
3) مشخصات فیلدهای معاملاتی لحظهای (ti)
اطلاعات قیمتها، حجمها و سفارشهای خرید/فروش لحظهای در آبجکتی به نام ti قرار دارند که هم روی قرارداد اختیار و هم روی دارایی پایه در دسترس است (option.ti و ua.ti):
lastPrice: آخرین قیمت معاملهشده.
endPrice: قیمت پایانی بازار.
lastPC: درصد تغییر آخرین قیمت نسبت به قیمت روز قبل.
endPC: درصد تغییر قیمت پایانی نسبت به قیمت روز قبل.
volume: حجم معاملات امروز نماد.
tValue: ارزش ریالی معاملات انجام شده امروز.
min و max: کمترین و بیشترین قیمت معامله شده در جلسهٔ معاملاتی جاری.
dailyPriceLow و dailyPriceHigh: کف و سقف مجاز نوسان قیمت روزانه. فقط روی ua.ti دامنه واقعیاند؛ روی option.ti حد مطلق ابزار در آنها مینشیند نه دامنه نوسان.
دفتر سفارشات 5 سطحی: قیمتهای خرید buy1Price تا buy5Price، قیمتهای فروش sell1Price تا sell5Price و حجمهای متناظر صفها مانند buy1Volume یا sell1Volume.
آمار حقیقی/حقوقی: حجم خرید حقیقی realBuyVolume، حجم فروش حقیقی realSellVolume، حجم خرید حقوقی coBuyVolume و حجم فروش حقوقی coSellVolume.
4) توابع تحلیلی و محاسباتی آماده
پلتفرم آپشنباز توابع اختصاصی متعددی را برای سادهسازی محاسبات ریاضی و مالی در اختیار شما قرار میدهد:
اسم تابع آماده را در توصیفتان بیاورید — وگرنه هوش مصنوعی همان محاسبه را از نو مینویسد، با فرضهای خودش و کارمزدی که ممکن است جا بیفتد.
intrinsic(): ارزش ذاتی قرارداد جاری را برمیگرداند.
timeValue(): ارزش زمانی قرارداد جاری را برمیگرداند.
isITM(): بررسی در سود بودن قرارداد جاری (true / false).
breakeven(): قیمت سر به سر قرارداد در زمان سررسید را محاسبه میکند.
leverage(): اهرم ساده قرارداد را محاسبه میکند؛ بدون دلتا (توصیه میشود به جای نام قدیمی CalcLeverage استفاده شود).
effectiveLeverage(): اهرم مؤثر قرارداد — leverage() ضربدر قدر مطلق دلتا. همان عددی است که ستون «اهرم» در دیدهبان نشان میدهد.
askBidSpread(): درصد فاصله بهترین خرید و فروش از آخرین قیمت قرارداد.
probOfProfit(bePrice, currentPrice, iv, daysToMaturity): محاسبه درصد احتمال موفقیت قرارداد تا سررسید بر اساس مدل لاگنرمال.
uaDailyRange(): دامنه نوسان امروزِ نماد پایه، به صورت آبجکتی با base (قیمت پایانی دیروز)، low و high (کف و سقف مجاز) و downPct و upPct (همانها به درصد). سقف همان جایی است که صف خرید تشکیل میشود و کف همان جای صف فروش. فقط برای نماد پایهٔ بورس و فرابورس مقدار میدهد و در بقیهٔ حالتها null برمیگرداند، پس اول باید بررسی شود.
uaPriceRange(days?): قیمتی که نماد پایه با صف خرید (سقف) یا صف فروش (کف) پشت سر هم در چند روز معاملاتی میتواند به آن برسد — دامنهٔ روزانه به صورت مرکب، نه ضرب ساده. خروجی آبجکتی است با base (قیمت پایانی دیروز)، days (تعداد روز معاملاتی)، low و high (کف و سقف قابل دسترس) و downPct و upPct (همانها به درصد). بدون آرگومان روزهای معاملاتی ماندهٔ همان قرارداد را میگیرد و به این سؤال جواب میدهد که آیا پایه اصلاً فرصت دارد تا سررسید به قیمت اعمال برسد. توضیح کامل و مثالها در راهنمای فرمولنویسی.
basePrice(item): دریافت قیمت یک آبجکت (مانند option یا ua) بر اساس مبنای قیمت انتخابی کاربر در هدر دیدهبان (توصیه میشود به جای ScalePrice استفاده شود).
ytmProfit(r, t): بازدهی تا سررسید سالانهشده (r درصد بازدهی کل, t روز تا سررسید).
monthlyProfit(profit, days): بازدهی ماهانه معادل بر اساس سود کل و تعداد روز باقیمانده.
5) توابع فرمتدهی و زیباسازی خروجی (رنگ و استایل)
برای قالببندی اعداد و افزودن رنگ به خانههای جدول دیدهبان از توابع زیر استفاده کنید:
برای مرتبسازی، عدد خام برگردانید؛ برای نگاه کردن، آراسته. و وقتی شرط برقرار نیست رشتهٔ خالی — تا سلول خالی بماند، نه صفر.
roundNumber(number, maxDecimals?): گرد کردن عدد تا رقم اعشار دلخواه.
commaSeparator(val, fixed?): فرمتدهی عددی با جداکننده سه رقمی.
formatNumber(x, fixed?): تبدیل اعداد بزرگ به قالب خوانا همراه با پسوندهای K، M و B (مثال: 1.5M به جای 1500000).
calcRateChange(n1, n2, fix?): درصد اختلاف و تغییر از مقدار اول به مقدار دوم.
style(value, color, bg?, title?, bold?): تولید کد HTML برای نمایش مقدار با رنگ متن، رنگ پسزمینه و تولتیپ دلخواه در سلول جدول.
colorCondition(value, min, minColor, max, maxColor, mode?, comma?): رنگآمیزی شرطی مقدار متغیر بین دو محدودهٔ عددی.
colorRange(val, ranges): رنگآمیزی بر اساس بازههای تعیین شده در قالب آرایه.
rnwc(x, fixed?, fixedB?, isCurrency?, wordifyTitleSpan?): نمایش پیشرفتهٔ عدد همراه با رنگآمیزی، فرمت سه رقمی و تبدیل عدد به حروف در زمان نگه داشتن ماوس (Tooltip).
rnWordify(val, fromTable?): تبدیل عدد به حروف فارسی همراه با پسوندهای مناسب ریال یا درصد.
wordifyfa(num): تبدیل ساده عدد به معادل حروف فارسی آن.
copyToClipboard(value): دکمهای کوچک با آیکن کپی در سلول جدول ایجاد میکند تا کاربر با کلیک روی آن، مقدار را کپی کند.
createPriceLine({ width, points, currentPrice, marginPercent? }): ایجاد یک نمودار خطی کوچک مینیاتوری در سلول جدول برای ردیابی قیمت فعلی نسبت به قیمتهای اعمال استراتژی.
6) توابع جستجو و زنجیره قراردادها (Chain & Offset)
برای دسترسی به سایر قراردادهای زنجیره امید از توابع آفست و زنجیره استفاده میشود:
با optionSE (استرایک دیگر)، optionSU (سررسید دیگر) و getOptionByNamad، یک فرمول کل نردبان را میبیند — ولی نبودِ آن قرارداد را باید بررسی کنید.
optionSE(strikeNo?, type?): دسترسی به قرارداد همسررسید در فواصل قیمتی اعمال متفاوت. به عنوان مثال، مقدار optionSE(1) قرارداد با یک استرایک بالاتر و optionSE(-1) یک استرایک پایینتر را نسبت به قرارداد سطر جاری برمیگرداند.
optionSU(namad?, type?): دریافت قرارداد با سررسید متفاوت اما استرایک دقیقاً یکسان.
getOptionsByChain(uaNamad, type?, days?): دریافت کل لیست قراردادهای زنجیرهٔ یک دارایی پایه.
getOptionByParam(type?, strike?, days?, baseNamad?): جستجوی کاملاً دقیق یک قرارداد در کل بازار بر اساس ویژگیها.
getOptionByNamad(namad): دریافت مستقیم آبجکت اطلاعاتی یک قرارداد دیگر با استفاده از نام آن (مثلاً ضهرم8004).
getUaByNamad(namad): دریافت مستقیم آبجکت اطلاعاتی یک دارایی پایه دیگر با استفاده از نام نماد آن.
7) توابع شبیهساز استراتژی و شبیهساز P/L
توابع سبد سهام تعاملی به شما اجازه میدهند قراردادهای مختلف را ترکیب کرده و دکمهٔ نمایش نمودار سود/زیان تعاملی (P/L) را بسازید:
pos.add(position, namad, count?, price?, cashBlock?): اضافه کردن یک موقعیت معاملاتی به سبد. مقادیر مجاز برای position عبارتند از:
'buy_call' (خرید اختیار خرید)
'sell_call' (فروش اختیار خرید)
'buy_put' (خرید اختیار فروش)
'sell_put' (فروش اختیار فروش)
'buy_stock' (خرید سهم پایه)
'sell_stock' (فروش سهم پایه)
pos.build(name?, tradingFee?, exerciseFee?): نهاییسازی سبد و ایجاد دکمهٔ تعاملی نمایش نمودار سود/زیان استراتژی. با کلیک کاربر روی این دکمه در جدول، پنل پویای تحلیل استراتژی گشوده میشود.
8) محاسبات بلکشولز و پارامترهای یونانی (Greeks)
با فراخوانی تابع محاسباتی بلکشولز، یونانیها و قیمت نظری قرارداد را استخراج کنید:
calcBS(namad?) یا calcBS(overrides?): محاسبات مدل بلکشولز را برای قرارداد جاری یا پارامترهای دستی انجام میدهد. خروجی یک آبجکت با فیلدهای زیر است:
bs: قیمت تئوری منصفانه قرارداد اختیار
delta: پارامتر یونانی دلتا
gamma: پارامتر یونانی گاما
theta: پارامتر یونانی تتا
vega: پارامتر یونانی وگا
rho: پارامتر یونانی رو
به عنوان مثال، برای محاسبهٔ دلتا از دستور calcBS().delta استفاده کنید. ورودی دستی به صورت calcBS({ iv: 0.45 }) نوسانپذیری فرضی 45٪ را جایگزین میکند.
9) الگوی استاندارد فیلتر دوکاره (ستون + فیلتر)
هنگام طراحی فرمول، توصیه میشود ساختار زیر را برای فیلترهای دوکاره پیادهسازی کنید تا فرمول شما هم بتواند ردیفها را در زمان روشن بودن سوئیچ نتایج فیلتر کند و هم مقدار ستون را در سلول نشان دهد:
یک کد هم ستون است هم فیلتر: خط if (FILTER_RESULT) return isMatched; دو حالت را از هم جدا میکند — بقیهٔ کد یکی است.
const FILTER_MIN_VOLUME = 100; // حداقل حجم
const FILTER_RESULT = false; // فعالسازی فیلتر اصلی جدول
const FILTER_SHOW = true; // فیلتر در نمایش سلولهای ستون
let vol = option.ti.volume;
let isMatched = vol >= FILTER_MIN_VOLUME;
// اگر کاربر سوئیچ فیلتر اصلی را در پنجره تنظیمات روشن کرده باشد:
if (FILTER_RESULT) return isMatched;
// اگر فیلتر ستون فعال بوده و ردیف شرط را نداشته باشد، سلول خالی بماند:
if (!FILTER_SHOW && !isMatched) return '';
// در حالت عادی، مقدار نهایی ستون نمایش داده شود:
return commaSeparator(vol);