MarketPulse
یک ابزار واقعی که هر روز استفاده می‌کنم

دلار و طلا را ارزان‌تر نگه دار؛ بدون اعتیاد به چک کردن قیمت.

MarketPulse هر ۵ دقیقه قیمت دلار آزاد، تتر، طلا، سکه، انس، PAXG و بیت‌کوین را می‌گیرد، حباب و پرمیوم هر کدام را حساب می‌کند و نشان می‌دهد امروز ارزان‌ترین راه حفظ ارزش دلاری کدام است. هشدارها کم، عددی و قابل اقدام‌اند؛ بقیه در یک خلاصه صبحگاهی.

قانون‌محور، بدون LLM فقط داده عمومی؛ بدون کلید صرافی و معامله خودکار نسخه شخصی و تک‌کاربره
تصویر واقعی صفحه امروز MarketPulse

چرا ساختمش؟

اولویتم حفظ ارزش پس‌انداز در برابر تورم ریال است، نه سود سریع. سؤال همیشگی این بود: امروز تتر بخرم یا دلار؟ طلای ۱۸ عیار، سکه یا PAXG؟ هر بار با ماشین‌حساب انس و دلار و تتر را ضرب و تقسیم می‌کردم تا حباب‌ها را مقایسه کنم.

از طرف دیگر نمی‌خواستم هر ساعت قیمت چک کنم. MarketPulse همان محاسبه‌های دستی را هر ۵ دقیقه انجام می‌دهد، فقط وقتی چیزی واقعاً مهم است پیام می‌دهد و بقیه را برای ساعت ۹ صبح نگه می‌دارد.

قابلیت‌ها

همه موارد زیر در نسخه فعلی پیاده‌سازی شده و هر روز استفاده می‌شود.

ارزان‌ترین راه خرید طلا

طلای ۱۸ عیار، سکه امامی، بهار، نیم، ربع و PAXG بر اساس «قیمت هر گرم طلای خالص» رتبه‌بندی می‌شوند: با ۱۰۰ دلار امروز از هر مسیر چند گرم طلا می‌شود خرید.

اسکناس یا تتر؟

پرمیوم تتر نسبت به دلار آزاد: (تتر والکس ÷ دلار آزاد − ۱) × ۱۰۰. منفی یعنی تتر راه ارزان‌تر نگهداری دلار است.

حباب طلا و سکه

ارزش ذاتی از انس جهانی × دلار آزاد ÷ ۳۱٫۱۰۳۵ با عیار و وزن رسمی هر سکه؛ حباب هر محصول کنار قیمتش.

رژیم بیت‌کوین

روزانه بعد از بسته شدن کندل: SMA200 و RSI(14) و چهار حالت انباشت، روند سالم، داغ و نامشخص. برای PAXG روند ساده با SMA50 و SMA200.

هشدار آستانه قیمت

«دلار بالای X»، «BTC زیر Y»؛ هر قانون فقط هنگام عبور از آستانه یک بار پیام می‌دهد و تا برگشت قیمت ساکت می‌ماند.

ضد اسپم برای رژیم خبری

ساعت سکوت ۲۳ تا ۸، حداکثر ۵ پیام در روز، هر دارایی حداکثر یک بار در ۶ ساعت؛ بقیه در خلاصه ساعت ۹ صبح می‌آیند.

خلاصه ۹ صبح

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

داده قدیمی هشدار نمی‌سازد

اگر منبعی جواب ندهد، آخرین قیمت با برچسب «قدیمی» نمایش داده می‌شود و هیچ هشداری از آن ساخته نمی‌شود.

تصاویر واقعی

از همین نسخه با قیمت‌های واقعی ۲۹ مهر ۱۴۰۵.

امروز
امروز
قیمت‌ها با تغییر روزانه، پرمیوم تتر، حباب هر محصول طلا و رژیم بیت‌کوین.
ارزان‌ترین راه
ارزان‌ترین راه
رتبه‌بندی مسیرهای خرید طلا با ۱۰۰ دلار، و مقایسه اسکناس با تتر.
هشدارها
هشدارها
قانون‌های آستانه، تاریخچه ارسال و وضعیت هر پیام: ارسال شد، عقب افتاد یا خطا.

خلاصه ساعت ۹ صبح

به‌جای ده‌ها اعلان، یک پیام تلگرام. این متن واقعی خلاصه‌ای است که اپ فرستاد (کوتاه‌شده):

  • • هر عدد با تغییر روزانه؛ قیمت قدیمی با ⚠️ علامت می‌خورد.
  • • هشدارهایی که در ساعت سکوت یا بعد از سقف روزانه رسیدند، این‌جا فهرست می‌شوند.
  • • اگر اپ ساعت ۹ در دسترس نبود، تا ساعت ۱۲ ارسال می‌شود.
☀️ خلاصه بازار · ۱۴۰۵/۰۷/۲۹ 💵 دلار آزاد: ۲۶۴٬۸۰۰ تومان 💵 تتر: ۲۶۰٬۳۴۷ تومان · پرمیوم ⁦−۱٫۶۸٪⁩ → تتر ارزان‌تر 🥇 طلای ۱۸ عیار (گرم): ۲۶٬۴۴۹٬۷۰۰ تومان · حباب ⁦+۰٫۶٪⁩ 🪙 سکه امامی: ۲۶۶٬۱۳۰٬۰۰۰ تومان · حباب ⁦+۳٫۷٪⁩ 🪙 ربع سکه: ۷۴٬۱۴۰٬۰۰۰ تومان · حباب ⁦+۱۵٫۷٪⁩ 🏆 ارزان‌ترین راه طلا: PAXG (با تتر): با ۱۰۰ دلار ۰٫۷۷ گرم طلای خالص (⁦−۱٫۵٪⁩ نسبت به ارزش جهانی) ₿ بیت‌کوین: $۸۲٬۷۴۲ رژیم: 🔵 روند سالم · RSI ۴۹ · ⁦+۱۲٫۹٪⁩ نسبت به SMA200 قانون‌محور و آموزشی؛ توصیه سرمایه‌گذاری نیست.

معماری

ساده عمداً: یک اپ وب، یک دیتابیس، یک Worker.

موبایل (PWA)

Razor + Tailwind، راست‌به‌چپ، تم تیره و روشن، فونت و همه منابع روی خود سرور.

سرور در ایران

ASP.NET Core 10 MVC، EF Core و SQL Server روی Plesk/IIS. دو BackgroundService: دریافت قیمت هر ۵ دقیقه، و کار روزانه (رژیم و خلاصه).

والکس و TGJU ← مستقیم از سرور

Cloudflare Worker

تنها راه خروج: قیمت و کندل LBank و ارسال تلگرام. Allowlist، کلید در هدر، توکن بات فقط در Secret.

چالش‌هایی که حل شد

هاست ایران، API خارجی

سرور داخل ایران به LBank و تلگرام دسترسی ندارد و صرافی‌های ایرانی IP خارجی را می‌بندند. منابع داخلی مستقیم از سرور خوانده می‌شوند و فقط ترافیک خارجی از یک Cloudflare Worker عبور می‌کند.

Worker که پروکسی باز نیست

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

اتصال یکی در میان

از سرور ایران، هر پیام دوم به Worker شکست می‌خورد. علت: چرخش DNS بین چند IP کلادفلر. راه‌حل: اتصال فقط IPv4، سه ثانیه برای هر IP، شروع از آخرین IP سالم، و یک تلاش مجدد امن (پیام تلگرام بعد از Timeout تکرار نمی‌شود تا تکراری نرسد).

زمان و تقویم

همه زمان‌ها UTC ذخیره می‌شوند و فقط در نمایش به ساعت تهران و تقویم شمسی تبدیل می‌شوند. روز کندل LBank ساعت ۱۹:۳۰ تهران بسته می‌شود و کندل در حال تشکیل در محاسبه نمی‌آید.

عدد درست، با تست

حباب‌ها با قیمت‌های واقعی یک روز با محاسبه دستی مقایسه شده‌اند و RSI و SMA200 با یک محاسبه مستقل روی همان ۲۶۰ کندل. پاسخ واقعی هر منبع به‌عنوان Fixture تست ذخیره شده است.

هشدار لبه‌ای

قانون فقط لحظه عبور شلیک می‌کند و تا برگشت قیمت غیرفعال می‌ماند؛ داده قدیمی نه شلیک می‌کند نه دوباره مسلح.

.NET 10 ASP.NET Core MVC EF Core 10 SQL Server Identity BackgroundService Tailwind CSS PWA Cloudflare Workers TypeScript xUnit v3 node:test

محدودیت‌ها و شفافیت

آنچه باید بدانید

  • • ابزار شخصی و تک‌کاربره است و ثبت‌نام عمومی ندارد؛ نسخه نمایشی فقط‌خواندنی در /live است.
  • • قیمت‌های داخلی از فید عمومی TGJU و تتر از والکس خوانده می‌شود؛ فید TGJU مستند رسمی ندارد.
  • • هزینه خرید و فروش و نقدشوندگی هر مسیر تخمینی و قابل تنظیم است، نه قیمت لحظه‌ای فروشنده.
  • • هیچ معامله‌ای انجام نمی‌دهد و به هیچ حساب صرافی وصل نیست.

فرمول‌ها، روشن

  • • طلای خالص هر گرم = انس × دلار آزاد ÷ ۳۱٫۱۰۳۴۷۶۸ (اونس تروی)
  • • ۱۸ عیار = ۷۵۰ در هزار؛ سکه تمام ۸٫۱۳۳ گرم با عیار ۹۰۰
  • • حباب = (قیمت بازار ÷ ارزش ذاتی − ۱) × ۱۰۰
  • • PAXG = یک اونس تروی طلا؛ قیمت تومانی از مسیر تتر

این ابزار قانون‌محور و آموزشی است و توصیه سرمایه‌گذاری نیست.