مسئله: پلتفرمی که API ندارد
«کوتکس الگوتریدر» یک ربات معاملهگر تمامخودکار برای صرافی کوتکس است که تیم الگوبید آن را از ایده تا یک محصول تجاری قابل فروش پیش برده است.
نقطهی شروع یک محدودیت جدی بود: کوتکس هیچ API عمومی برای معامله در اختیار توسعهدهنده نمیگذارد. این وضعیت در پروژههای سفارشی خیلی رایجتر از چیزی است که به نظر میرسد، و معمولاً همانجا پروژه متوقف میشود.
راهحل ما این بود که بهجای شبیهسازی، خودِ وباپلیکیشن صرافی را با Playwright راه بیندازیم. ربات دقیقاً مثل یک کاربر انسانی وارد میشود و دارایی انتخاب میکند، اما همزمان جریان وبسوکت اختصاصی صرافی را میشنود تا دادهی بازار را با کمترین تأخیر ممکن بگیرد و سفارش را هم از همان کانال ثبت کند، نه با کلیک روی دکمه.
معماری دو-نخی: رابط کاربری که قفل نمیشود
قلب سیستم یک معماری دو-نخی است. رابط گرافیکی PySide6 روی نخ اصلی Qt اجرا میشود و موتور معاملاتی asyncio روی نخ پسزمینه. این دو هرگز event loop مشترک ندارند و ارتباطشان از یک پل امنِ نخ میگذرد.
نتیجهی عملی برای کاربر این است که میتواند وسط اجرای زنده، استراتژی و مدیریت سرمایه را عوض کند و تنظیمات جدید بدون توقف ربات اعمال شود.
نه استراتژی، لایهبندیشده بر اساس وینریت
لایهی تحلیل، تیکهای خام بازار را به کندلهای ۱ ثانیه، ۱۵ ثانیه و ۱ دقیقه بازسازی میکند و به ۹ استراتژی میسپارد که بر اساس وینریت هدف لایهبندی شدهاند، از Strategy90 تا Strategy50 که در برنامه با نام «Shafiq» دیده میشود.
- استراتژیهای استاندارد پیش از ورود، سطوح حمایت و مقاومت، زمینهی روند و تأیید شکست را میسنجند.
- استراتژیهای واکنش سریع بلافاصله پس از سیگنال وارد میشوند.
- هرجا استراتژیها با هم اختلاف داشته باشند، یک مدیر سیگنال مرکزی سیگنالِ با بالاترین وینریت را برنده اعلام میکند.
نردبان مارتینگل، پلهبهپله قابل تنظیم
مدیریت سرمایه با نردبان مارتینگل انجام میشود، اما نه به شکل سادهی همیشگی: هر پله مبلغ اختصاصی، آستانهی سود برای فعالشدن و حتی «ست استراتژی» متفاوت خودش را دارد و میتواند طوری تنظیم شود که بهمحض باخت، ربات را به دارایی بعدی بفرستد.
نسخهی دیگری از همین رویکرد روی فیوچرز دائمی در ربات مارتینگل فیوچرز توبیت پیاده شده است.
ساعتها کار بدون نظارت
ربات باید ساعتها بدون حضور آدم کار کند، پس پایداری جدی گرفته شده است:
- بررسی مداوم سلامت المانهای صفحه
- تشخیص چالش Cloudflare و ازسرگیری خودکار پس از حل آن
- تا سه بار بازیابی نشست
- ارسال پیامک هشدار، فقط وقتی واقعاً نیاز به حضور انسان است
تحویل بهعنوان یک محصول تجاری
محصول بهصورت تجاری عرضه میشود و برای همین لایسنس رمزنگاریشده دارد: فایل لایسنس با امضای دیجیتال به سختافزار مشتری قید میشود و میتواند تبهای خاصی را مخفی و تنظیمات مشخصی را برای هر مشتری قفل کند. خروجی نهایی با Nuitka به زبان C کامپایل و به یک فایل exe تکتکه تبدیل میشود.
پشت این پروژه ۲۶ هزار خط کد پایتون، ۳۳۲ تست خودکار و ۹۵۹ کامیت از پنج توسعهدهنده ایستاده است، با پوشش ۸۵ درصدی روی هستهی امنیتیِ لایسنس و ۷۳ درصدی روی کل رابط گرافیکی.
این پروژه برای چه کسی مثال خوبی است
اگر پلتفرمی که با آن کار میکنی API ندارد، این نمونهکار نشان میدهد مسیر چیست: اتوماسیون خودِ رابط، شنیدن کانال دادهی واقعی، و لایهای از پایداری که فرض میکند همهچیز بالاخره خراب میشود.
توجه داشته باش که هر بروکر قوانین خودش را دربارهی نرمافزار معاملات خودکار دارد و رعایت آنها برعهدهی صاحب حساب است. ما ابزار را مطابق خواستهی کارفرما میسازیم. اگر پروژهی مشابهی داری، از صفحهی خدمات شروع کن.