درصد سر به سر
ستونسادهدرصد فاصله قیمت سر به سر از قیمت پایه.
calcRateChange(ua.ti.lastPrice, breakeven()) + '%'آزمایشگاه فرمولنویسی — رایگان و بدون ثبتنام
فرمولنویسی یعنی به دیدهبان بگویی چه عددی برایت مهم است و کدام قراردادها به دردت نمیخورند. اینجا در چهار قدم از «اصلاً این چیست؟» به نوشتن ستون و فیلتر خودت میرسی — و هر کدی که مینویسی، همینجا واقعاً اجرا میشود. و اگر کدنویسی انتخابت نیست؟ اجباری هم نیست — نسخهٔ آمادهٔ همهچیز در خود سایت هست؛ همین پایین ببین.
۴ قدم · ۱۰ درس تعاملی · حدود ۲۰ دقیقه · بدون پیشنیاز برنامهنویسی
تقریباً هر چیزی که این صفحه یادت میدهد، نسخهٔ آمادهٔ نصبشدنی دارد و همین حالا بدون یک خط کد در دسترس توست. این صفحه برای وقتی است که بخواهی معیارِ خاص خودت را به آنها اضافه کنی.
قدم ۱ از ۴
با یک مثال که هیچ ربطی به بورس ندارد — و بدون اینکه هنوز کدی ببینی.
فرض کن دنبال خانه میگردی. ۲۰۰۰ آگهی جلوی توست و بودجهات مشخص است. هیچکدام از این آگهیها بهتنهایی بد نیست — مشکل این است که نمیشود ۲۰۰۰ تا را با هم مقایسه کرد.
اگر بخواهی یکییکی بخوانی، تا برسی به آخر، اولها یادت رفته. فردا هم که قیمتها عوض شد، باید از اول شروع کنی. این جدول کوچک را جای آن ۲۰۰۰ تا بگذار و ببین مشکل کجاست:
بدون اینکه اسمش را بدانی، همین الان دو کار کردی — و این دو کار، تمامِ فرمولنویسی است:
«قیمت هر متر» در هیچ آگهیای نوشته نشده بود. تو از تقسیم قیمت بر متراژ ساختیاش. بدون آن، یک خانهٔ ۷۵ متری ۸ میلیاردی و یک ۱۳۰ متری ۱۲ میلیاردی اصلاً قابل مقایسه نیستند.
دو شرط گذاشتی: فقط پونک، و فقط زیر ۱۰۰ میلیون. هر آگهی که هر دو را نداشت رفت کنار. آنچه ماند، آنقدر کم است که واقعاً بتوانی نگاهشان کنی.
فرمولنویسی در آپشنباز دقیقاً همین است، فقط بهجای آگهی خانه، قرارداد اختیار معامله. یک تکه کد کوتاه مینویسی و برنامه آن را برای تکتک قراردادها اجرا میکند — یا عددی میسازد که در جدول نبود، یا قراردادهایی را که به دردت نمیخورند کنار میگذارد.
فرقش فقط در مقیاس است: آگهی خانه را بالاخره میشود در یک بعدازظهر مرور کرد، ولی قیمت قراردادهای اختیار در طول روز مدام عوض میشود. تا تو ردیف پانصدم را بخوانی، ردیف اول دیگر آن چیزی نیست که دیدی.
نبودش فاجعه نیست — خیلیها بدون آن معامله میکنند. فقط کندتر و با دید محدودتر.
صادقانه: برای همه لازم نیست. این فهرست کوتاه را بخوان و خودت تصمیم بگیر — اگر جوابت «نه» بود، وقتت را نگذار.
بله، اگر…
فعلاً نه، اگر…
و در هر دو حالت چیزی از دست نمیدهی: همهٔ ابزارهای آماده سر جایشان هستند، و این صفحه هم هر وقت لازمت شد همینجاست.
قدم ۲ از ۴
عددی که در جدول نیست را خودت میسازی — همان کاری که با «قیمت هر متر» کردی.
در مثال خانه، «قیمت هر متر» را از تقسیم دو ستون موجود ساختی. در دیدهبان همین کار اسم دارد: ستون محاسباتی. یک تکه کد مینویسی که یک مقدار برمیگرداند — عدد، متن، یا حتی خروجی رنگی — و جدول یک ستون تازه پیدا میکند که هر ردیف، مقدار خودش را دارد.
return roundNumber(intrinsic(), 0);intrinsic() ارزش ذاتی قرارداد را میدهد و roundNumber گردش میکند. همین یک خط، برای تکتک قراردادهای جدول جداگانه اجرا میشود و ستون «ارزش ذاتی» را میسازد. هیچ ردیفی حذف نمیشود — ستون فقط اضافه میکند.
مهمترین تصویری که باید در ذهنت بماند همین بالاست: فرمول یک بار برای کل جدول اجرا نمیشود؛ برای هر قرارداد یک بار جداگانه اجرا میشود و خروجیاش سلولِ همان ردیف را پر میکند. پس موقع نوشتن، همیشه به «یک ردیف» فکر کن، نه به جدول.
قدم ۳ از ۴
قراردادهایی که به دردت نمیخورند، خودشان کنار میروند.
دومین کاری که در مثال خانه کردی، غربال بود: «فقط پونک، فقط زیر ۱۰۰ میلیون». فیلتر همان فرمول است، فقط بهجای مقدار، یک بله یا خیر برمیگرداند. هر قراردادی که «خیر» بگیرد از جدول کنار میرود — ستونی ساخته نمیشود، فقط ردیفها کم میشوند.
return option.daysUntilMaturity < 30;«فقط قراردادهایی که کمتر از ۳۰ روز تا سررسید دارند.» عبارت مقایسهای خودش بله/خیر است، پس همین یک خط کافی است.
و نکتهای که خیلیها دیر میفهمند: لازم نیست بین ستون و فیلتر یکی را انتخاب کنی. یک فرمول میتواند همزمان هر دو باشد — هم عددی نشان بدهد و هم بر اساس همان عدد غربال کند. درس «از ستون به فیلتر» در آزمایشگاه دقیقاً همین را یاد میدهد.
قبل از اینکه دستت به کد برود، مرز ابزار را بشناس. اینها محدودیتهای واقعیاند، نه «فعلاً پیاده نشده» — دانستنشان از قبل، ساعتها وقت تلفشده را جلو میگیرد.
بکتست و تحلیل تاریخی
فرمول فقط عکسِ همین لحظهٔ بازار را میبیند. تنها نگاهش به گذشته lastDayPrice و lastDayVolume است، یعنی همین دیروز. تابع uaPriceRange() هم قیمت گذشته نیست — پیشبینی است که دامنهٔ نوسان امروز را تا سررسید جلو میبرد. برای «سه ماه پیش چه شد» جای دیگری باید بگردی.
سفارش گذاشتن و معامله
خروجی فرمول فقط چیزی است که در جدول میبینی یا ردیفی که غربال میشود. آپشنباز از روی فرمول تو خرید و فروش نمیکند.
هشدار و زمانبندی
فرمول وقتی اجرا میشود که تو جدول را باز کرده باشی. اگر میخواهی چیزی در غیاب تو چک شود و خبرت کند، آن کار آلارمِ میزکار است، نه فرمول.
سیگنال خرید و فروش
فرمول دقیقاً همان چیزی را حساب میکند که تو نوشتی — نه بیشتر. اگر منطقت اشتباه باشد، خروجی هم با همان اطمینان اشتباه خواهد بود.
قیمتگذاری هستون
یک استثنای فنی که وقتی پیشرفتهتر شدی به دردت میخورد: برخلاف بلکشولز که با calcBS() همیشه در دسترس است، option.heston عمداً برای فرمولنویسی باز نیست و فقط وقتی فیلتر سریع هستون فعال باشد محاسبه میشود. روی هیچ فرمولی به آن تکیه نکن.
یک نکتهٔ امنیتی که باید صادقانه گفته شود: فرمول واقعاً کد است و در مرورگر خودِ تو اجرا میشود. برای همین فرمولی را که از جای ناشناس کپی میکنی، مثل یک عدد ساده نبین — اول بخوانش و بفهم چه میکند. فرمولهای آمادهٔ خود آپشنباز و مثالهای همین صفحه از این بابت امناند.
قدم ۴ از ۴
از اینجا به بعد فقط خواندن نیست — هر درس یک دکمهٔ «اجرا» دارد و کد واقعاً اجرا میشود.
هر درس یک کد قابل ویرایش دارد و یک دکمهٔ «اجرا». کد را عوض کن، دوباره اجرا کن، ببین چه میشود — هیچچیز ذخیره نمیشود و هیچچیز خراب نمیشود. درسها یکییکی باز میشوند تا مسیر گم نشود.
۳۲ قرارداد روی ۲ نماد پایه — ثابت و همیشه در دسترس.
این اعداد ساختگیاند و به بازار واقعی وصل نیستند، ولی الکی هم نیستند: پرمیومها با همان بلکشولزِ خودِ آپشنباز قیمتگذاری شدهاند و وضعیت ITM/ATM/OTM با همان طبقهبند برنامه حساب شده. پس هر چه اینجا یاد بگیری، روی دیدهبان واقعی هم همانطور کار میکند.
درسها یکییکی باز میشوند — هر درس را که اجرا کنی، بعدی باز میشود.
یاد میگیری فرمول کجا اجرا میشود، داده را از کجا بردارد و خروجی را چطور خوانا کند.
از «نمایش دادن» به «تصمیم گرفتن» میرسی: شرط، رنگ، و تبدیل همان کد به فیلتر.
توابع آمادهٔ آپشنباز، نگاه به کل زنجیره، و چهار تلهای که همه یک بار توی آنها میافتند.
هرچه دوست داری بنویس و روی همان دادهٔ بالا اجرا کن. هیچچیز ذخیره نمیشود و هیچچیز خراب نمیشود.
اینها فرمولهای واقعیاند، نه تمرین. هرکدام را میتوانی مستقیم در میز آزاد بالا باز کنی و روی همان دادهٔ آزمایشگاه اجرا کنی.
درصد فاصله قیمت سر به سر از قیمت پایه.
calcRateChange(ua.ti.lastPrice, breakeven()) + '%'ارزش ذاتی: سبز اگر ITM، خاکستری اگر OTM.
style(roundNumber(intrinsic(), 0), intrinsic() > 0 ? 'green' : '#999')درصد مجاز رشد و افت روزانه نماد پایه نسبت به قیمت پایانی دیروز — سقفش صف خرید و کفش صف فروش میسازد. uaDailyRange() مبنا (base)، کف و سقف مجاز (low / high) و همانها به درصد (downPct / upPct) را با هم برمیگرداند و اگر دامنهای منتشر نشده باشد null میدهد؛ برای همین اول باید بررسی شود. خروجی: درصد سقف (+) سبز و درصد کف (−) قرمز.
const r = uaDailyRange();
if (!r) return '';
return style(`+${r.upPct}%`, '#16a34a') + ' / ' + style(`-${r.downPct}%`, '#dc2626');دلتا با رنگبندی بر اساس مقدار.
let d = calcBS().delta;
return style(d, d > 0.5 ? '#16a34a' : d > 0.3 ? '#ea580c' : '#dc2626', '', 'delta');با uaPriceRange() بررسی میکند نماد پایه اصلاً فرصت دارد تا سررسید به قیمت اعمال برسد یا نه: high قیمتی است که با صف خرید پشت سر هم و low قیمتی که با صف فروش پشت سر هم قابل دسترس است. بدون آرگومان، روزهای معاملاتی مانده تا سررسید همان قرارداد را میگیرد (دامنه نوسان در هر روز معاملاتی یک بار اعمال میشود، نه در هر روز تقویمی). قراردادهایی که پایهشان حتی در بهترین حالت به استرایک نمیرسد کنار گذاشته میشوند.
const r = uaPriceRange();
if (!r) return false;
return option.type == 'call'
? option.strike <= r.high
: option.strike >= r.low;چهار قدم تمام شد. از اینجا به بعد، یا مرجع میخواهی یا بازار واقعی.
مرجع کامل: هر فیلد option، ua و ti، همهٔ توابع آماده، عملگرها و مثالهای مرجع. وقتی بلدی چه میخواهی و فقط دنبال اسم دقیقش میگردی، اینجاست.
متغیر، شرط، حلقه و تابع — پایههای جاوااسکریپتی که فرمول با آن نوشته میشود، از صفر و با مثال. اگر خود کدنویسی برایت تازه است، از این شروع کن.
خواندن مقاله ←فهرست کامل ستونها و فیلترهای آمادهای که بدون نوشتن حتی یک خط کد میتوانی روی دیدهبانت نصب کنی — با شرح تنظیمات هرکدام.
دیدن فهرست ←۲۸ مقالهٔ دانشنامه دربارهٔ فرمولنویسی: پیادهسازی کاورد کال، انواع اسپرد، باترفلای، بلکشولز و یونانیها، فیلترهای ترکیبی و بیشتر.
دستهٔ فرمولنویسی ←حالا روی بازار واقعی امتحانش کن
همان کدی که اینجا نوشتی، در دیدهبان روی قراردادهای واقعی و قیمتهای زنده کار میکند.
هنوز نظری ثبت نشده است.