پرش به محتوای اصلی
لوگوی نوین وبنوین وبWEBNOVO
همه‌ی نمونه‌کارها
موتور لحظه‌ایدر حال بهره‌برداری

سامانه سیگنال، مدیریت پوزیشن و نگهداشت خودکار کاربر

پایش قیمت در بازه‌های ۱۰ ثانیه‌ای، محاسبه خودکار سود و زیان، ثبت کامل چرخه عمر هر پوزیشن و اجرای خودکار سیاست نگهداشت کاربر — بدون یک ردیف کار دستی.

داشبورد پایش لحظه‌ای قیمت و مدیریت پوزیشن‌های معاملاتی

مسئله — چه چیزی درست کار نمی‌کرد؟

  • سیگنال در کانال منتشر می‌شد، اما هیچ‌کس نمی‌دانست چه کسی وارد شده، چه کسی خارج شده و عملکرد واقعی هر سیگنال چقدر بوده است.
  • پیگیری پوزیشن‌ها در فایل‌های پراکنده انجام می‌شد؛ خطای انسانی بالا بود و هیچ ردپای حسابرسی قابل اتکایی وجود نداشت.
  • تشخیص «آیا این کاربر واقعاً فعال است یا نه» سلیقه‌ای بود و همین موضوع منبع اصلی نارضایتی می‌شد.
  • وضعیت عضویت کاربر در سامانه فروش باید لحظه‌ای در این سامانه منعکس می‌شد، ولی هیچ کانال ارتباطی مطمئنی بین دو سامانه نبود.

راه‌حل — چه ساختیم؟

  • هسته ناهمگام با FastAPI و Aiogram 3 روی SQLAlchemy 2 و PostgreSQL؛ ربات و API از یک مدل داده مشترک استفاده می‌کنند.
  • موتور پایش قیمت با بازه قابل تنظیم ۱۰ ثانیه: در هر چرخه یک snapshot یکسان از قیمت گرفته می‌شود، پوزیشن‌های pending و active جداگانه پردازش می‌شوند و با ردیابی مبتنی بر TTL از ارسال اعلان تکراری جلوگیری می‌شود.
  • مدل داده کامل برای چرخه عمر: موجودیت‌های مستقل برای پوزیشن، نقطه ورود، تارگت، به‌روزرسانی قیمت، رویدادهای چرخه عمر، رویدادهای حسابرسی و رویدادهای سیگنال.
  • ریسک و سرمایه به‌ازای هر کاربر (درصد ریسک و سرمایه پایه) ذخیره می‌شود تا اندازه پوزیشن برای هر نفر جداگانه محاسبه شود.
  • چرخه نگهداشت خودکار: اخطار در روز ۲۷ و ۲۹ و سپس تعلیق، همراه با ثبت تاریخچه وضعیت و لاگ اعلان‌ها تا هیچ تصمیمی بدون ردپا نماند.
  • پنج زمان‌بند مستقل در پس‌زمینه برای ثبت‌نام افیلیت، به‌روزرسانی موجودی فیوچرز، اعتبارسنجی پوزیشن‌ها، ارزیابی نگهداشت و شناسایی کاربر غیرفعال.
  • همگام‌سازی با Google Sheets تا تیم غیرفنی هم بتواند گزارش‌ها را همان‌جایی ببیند که کار می‌کند.

به زبان ساده

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

قبل و بعد

همان فرآیند، در دو وضعیت: پیش از پیاده‌سازی و پس از آن.

قبل

هر پوزیشن باید دستی ثبت و پیگیری می‌شد و خطای انسانی بخشی از فرآیند بود.

بعد

هر پوزیشن از انتشار سیگنال تا بسته شدن، با رویدادهای زمان‌دار و قابل حسابرسی ثبت می‌شود.

قبل

تشخیص فعال یا غیرفعال بودن کاربر سلیقه‌ای و قابل بحث بود.

بعد

سیاست نگهداشت به‌صورت خودکار در روزهای ۲۷ و ۲۹ اخطار و سپس تعلیق صادر می‌کند و هر اخطار در تاریخچه ثبت می‌شود.

قبل

خرید یا انقضای عضویت در سامانه فروش، با تأخیر و به‌صورت دستی به این سامانه می‌رسید.

بعد

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

عدد و اندازه

این اعداد از روی کد همین پروژه شمرده شده‌اند، نه تخمین زده.

۱۰sبازه پایش قیمت
۴۹٬۹۸۸خط کد پایتون
۵۱فایل تست خودکار
۴۸مدل و enum در لایه داده
۳۹سرویس تخصصی
۵زمان‌بند پس‌زمینه

لایه‌های معماری

رباتAiogram 3 با ماشین حالت، کیبوردهای تفکیک‌شده برای کاربر، معامله‌گر و ادمین
APIFastAPI با روترهای تفکیک‌شده برای پوزیشن‌ها، افیلیت، سلامت و وب‌هوک
پردازشحلقه پایش قیمت، پنج زمان‌بند مستقل و صف اعلان‌ها
دادهPostgreSQL با مهاجرت‌های نسخه‌بندی‌شده و رویدادهای حسابرسی
یکپارچه‌سازیصرافی LBank، Google Sheets و وب‌هوک دوجهته با سامانه فروش

پشته فناوری

Python 3.10+FastAPIAiogram 3SQLAlchemy 2 (async)PostgreSQLAlembicPydantic v2LBank APIGoogle Sheets APIDockerpytest

وب‌هوک ایدمپوتنت با عقب‌نشینی ایمن

هر رویداد یک شناسه یکتا دارد؛ ارسال مجدد همان رویداد رکورد تکراری نمی‌سازد. اگر سامانه مقابل در دسترس نباشد، سیستم کاملاً به رفتار قبلی برمی‌گردد و جریان کاربر هرگز نمی‌شکند.

پروژه مشابهی دارید؟

در یک جلسه ۱۵ دقیقه‌ای رایگان بررسی می‌کنیم این الگو برای فرآیند شما هم جواب می‌دهد یا نه.

رزرو مشاوره رایگان