پنل فراز گلد
FarazGold انجام شده برای کارفرما

پنل فراز گلد

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

اسکرول کنید

گالری تصاویر

8 تصویر

درباره پنل فراز گلد

جزئیات و توضیحات کامل پروژه

4 دقیقه مطالعه

پنل فراز گلد چیست؟

پنل فراز گلد که نام رسمی‌اش فرازگلد تریدر است، یک سامانه‌ی کامل «سیگنال تا اجرا» است: معامله‌گر سیگنال را یک بار ثبت می‌کند و همان سیگنال، در همان لحظه، روی حساب همه‌ی کاربران فعال به‌صورت خودکار اجرا می‌شود. کاربر لازم نیست پای سیستم بنشیند یا سفارش را دستی بگذارد.

سامانه دو تکه دارد: یک بک‌اند که سیگنال را پخش می‌کند و اشتراک‌ها را مدیریت می‌کند، و یک برنامه‌ی ویندوزی روی دستگاه کاربر که معامله را واقعاً باز می‌کند.

چرا وب‌سوکت، نه بررسی دوره‌ای

قلب سامانه یک بک‌اند Django با Django REST Framework و Django Channels است. سیگنال‌ها به‌جای اینکه کاربر مدام سرور را صدا بزند، از سمت سرور و روی یک اتصال وب‌سوکت پایدار هل داده می‌شوند.

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

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

ورود کاربران با شماره‌ی موبایل و کد یک‌بارمصرف پیامکی انجام می‌شود و نشست‌ها با JWT و توکن تازه‌سازی مدیریت می‌شوند. نه نام کاربری لازم است و نه رمز عبور.

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

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

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

  • سیگنال را می‌گیرد و تا رسیدن قیمت به نقطه‌ی ورودِ اعلام‌شده صبر می‌کند.
  • سفارش را با حجم و حد ضررِ تعیین‌شده باز می‌کند. حد ضرر هم‌زمان با باز شدن پوزیشن ثبت می‌شود، بدون فاصله‌ی زمانی.
  • حد سودها را سطح‌به‌سطح و با حجم مستقلِ هر سطح می‌بندد.
  • اگر ریسک‌فری فعال باشد، به‌محض رسیدن قیمت به فاصله‌ی تعیین‌شده از نقطه‌ی ورود، حد ضرر به نقطه‌ی سربه‌سر منتقل می‌شود و معامله از آن لحظه بدون ریسک ادامه پیدا می‌کند.

کاربر می‌تواند حد ضرر و حد سود یک پوزیشن باز را تغییر دهد یا بخشی از حجم آن را ببندد. همه‌ی سطوح ورود، حد ضرر و حد سود هم‌زمان روی نمودار خودِ پلتفرم رسم می‌شوند تا دقیقاً ببیند ربات چه می‌کند.

دو سناریوی واقعی که دیده شد

موتور اجرا روی یک حلقه‌ی asyncio مستقل و جدا از ترد رابط کاربری می‌نشیند تا برنامه هرگز وسط اجرای یک معامله قفل نشود. اجرای هر معامله چند ثانیه طول می‌کشد و اگر روی ترد رابط کاربری انجام می‌شد، برنامه دقیقاً در حساس‌ترین لحظه فریز می‌شد.

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

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

چطور ساخته شد

پروژه در حدود سه ماه و با ۶۹ درخواست ادغام توسط تیمی چهارنفره ساخته شد، به‌شکل یک مخزن یکپارچه با سه بسته‌ی مستقل: بک‌اند، دسکتاپ و کتابخانه‌ی مشترک.

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

قراردادهای داده میان سرور و کلاینت با Pydantic تعریف شده‌اند تا هر ناسازگاری در زمان توسعه معلوم شود، نه وسط یک معامله‌ی باز. کیفیت کد با Ruff، بررسی نوع سخت‌گیرانه‌ی MyPy، اسکن امنیتی Bandit، هوک‌های pre-commit و آزمون‌های pytest کنترل می‌شود و روی هر درخواست ادغام اجرا می‌گردد. مستندات API به‌صورت OpenAPI و یک مجموعه‌ی آماده‌ی Bruno تحویل داده شده است.

تحویل، بدون هیچ پیش‌نیاز

بک‌اند به‌صورت کانتینری با Docker و Podman، پشت Nginx و با Redis برای لایه‌ی کانال وب‌سوکت مستقر می‌شود.

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

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

ویژگی‌های پنل فراز گلد

آنچه این پروژه ارائه می‌دهد

13 مورد

دریافت لحظه‌ای سیگنال روی اتصال وب‌سوکت پایدار، بدون نیاز به رفرش یا بررسی دستی

اجرای خودکار معامله روی حساب کاربر به‌محض رسیدن قیمت به نقطهٔ ورود

پشتیبانی از چند حد سود پلکانی، با حجم مستقل برای هر سطح

ریسک‌فری خودکار: انتقال حد ضرر به نقطهٔ سربه‌سر پس از رسیدن قیمت به فاصلهٔ تعیین‌شده

ثبت حد ضرر هم‌زمان با باز شدن پوزیشن، بدون فاصلهٔ زمانی

ویرایش حد ضرر و حد سود روی پوزیشن باز، از داخل برنامه

بستن جزئی پوزیشن با تعیین حجم دلخواه

انتخاب حساب آزمایشی یا حساب واقعی هنگام اتصال

تاریخچهٔ سیگنال‌های اخیر در کنار سیگنال فعال

رسم خودکار خطوط ورود، حد ضرر و حد سود روی نمودار پلتفرم معاملاتی

ورود با شمارهٔ موبایل و کد یک‌بارمصرف پیامکی، بدون نام کاربری و رمز عبور

مدیریت اشتراک با تاریخ انقضا و اعمال زندهٔ تغییر دسترسی از پنل مدیریت

تحویل به‌صورت فایل اجرایی ویندوز، همراه با مرورگر داخلی و بدون هیچ پیش‌نیاز

چالش‌های پنل فراز گلد

7 مورد
1

در بازار طلا اعتبار قیمت ورود چند ثانیه بیشتر نیست؛ سیگنالی که با تأخیر به کاربر برسد عملاً بی‌ارزش است.

2

پلتفرم معاملاتی مقصد هیچ API رسمی برای ثبت سفارش در اختیار توسعه‌دهنده نمی‌گذارد.

3

اجرای هر معامله چند ثانیه طول می‌کشد و اگر روی ترد رابط کاربری انجام می‌شد، برنامه دقیقاً در حساس‌ترین لحظه فریز می‌شد.

4

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

5

دسترسی کاربری که اشتراکش تمام می‌شود باید فوراً قطع شود، اما قطع کردن ناگهانی اتصال، تجربهٔ گیج‌کننده‌ای می‌ساخت.

6

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

7

کاربر نهایی معامله‌گر است نه برنامه‌نویس؛ هر پیش‌نیاز نصب، یک کاربر از دست رفته بود.

راه‌حل‌های فنی

7 راه‌حل

به‌جای درخواست دوره‌ای از سرور، یک کانال وب‌سوکت پایدار با Django Channels برقرار شد و سیگنال از سمت سرور به همهٔ کاربران فعال هل داده می‌شود؛ زمان دریافت دیگر به بازهٔ درخواست بعدی گره نخورده است.

لایه‌ای از اتوماسیون مرورگر با Playwright ساخته شد که با حساب و اجازهٔ خودِ کاربر وارد محیط معاملاتی می‌شود و سفارش را دقیقاً مثل یک کاربر واقعی ثبت می‌کند. تمام انتخابگرهای صفحه در یک نقطه متمرکز شدند تا هر تغییر در ظاهر پلتفرم با یک ویرایش کوچک قابل تطبیق باشد.

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

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

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

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

برنامه با Nuitka به یک فایل اجرایی کامپایل شد که مرورگر مورد نیاز موتور اتوماسیون را هم درون خود دارد و کنسول توسعه را نشان نمی‌دهد؛ نصب پایتون یا هیچ وابستگی دیگری لازم نیست.

نتایج پنل فراز گلد

آنچه این پروژه در عمل به دست آورد

6 مورد

سیگنال معامله‌گر بدون واسطهٔ انسانی و بدون کپی دستی، روی حساب کاربران فعال اجرا می‌شود.

کاربر برای استفاده از سرویس به دانش فنی یا نصب هیچ پیش‌نیازی احتیاج ندارد؛ یک فایل اجرایی ویندوز کافی است.

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

سامانه در حدود سه ماه و با ۶۹ درخواست ادغام تحویل شد؛ هر تغییر پیش از ادغام از بررسی کد و آزمون خودکار عبور کرد.

منطق مدیریت پوزیشن به یک کتابخانهٔ مستقل تبدیل شد که در پروژه‌های بعدی مجموعه هم قابل استفاده است.

مستندات API به‌صورت OpenAPI و یک مجموعهٔ آمادهٔ Bruno تحویل داده شد تا توسعهٔ بعدی به تیم اولیه وابسته نباشد.

جزئیات پروژه

مشتری آکادمی طلاجوها
پلتفرم FarazGold
دسته‌بندی انجام شده برای کارفرما
مدت زمان 2 ماه

آمار و عملکرد

  • 54 · 0 violations Lint Rules
  • 98% Type Coverage
  • 49 Automated Tests
  • 12 Pre-commit Hooks
  • 11k+ Line Code
  • 412 Commit
  • 69 Merge with Code review

ادامه‌ی مسیر

نمونه‌کار ربات معامله‌گر خودکار کوتکس اتوماسیون کامل یک پلتفرم معاملاتی بدون API: ۹ استراتژی لایه‌بندی‌شده بر اساس وین‌ریت، نردبان مارتینگل پله‌به‌پله و لایسنس قفل‌شده روی سخت‌افزار. نمونه‌کار کپی سیگنال تلگرام در متاتریدر یک سیگنال از کانال تلگرامِ خودِ کاربر، هم‌زمان روی همهٔ حساب‌های متاتریدر او اجرا می‌شود؛ با تسویه به‌ازای هر اجرای تأییدشده، ۱٬۵۰۲ تست و ۹۱٪ پوشش کد. نمونه‌کار ربات معامله‌گر نینجا تریدر ربات معامله‌گری روی NinjaTrader 8 با نردبان ۲۷ سطحی، داشبورد کنترل روی چارت، گیت شبیه‌سازی پیش از ریسک واقعی و کنترل کامل چرخهٔ عمر سفارش. مقاله الگوبید؛ جایی که علم و الگوریتم به هم می‌رسند الگوبید؛ پیوند دانش الگوریتمی با واقعیت بازار. توسعه سیستم‌های معاملاتی پایدار، شفاف و علمی برای تریدرهایی که به عملکرد بلندمدت فکر می‌کنند. مقاله استیتمنت معاملاتی‌ات چه چیزی درباره‌ی رفتارت لو می‌دهد؟ دو تریدر با نرخ برد یکسان، یکی ۱۸٪ سود و دیگری ۱۱٪ ضرر. تفاوت در چیزی است که نرخ برد نشان نمی‌دهد.