مارت زدن در توبیت یعنی چه؟
«مارت زدن» همان چیزی است که در متون فنی مارتینگل نامیده میشود: وقتی قیمت خلاف پوزیشن حرکت میکند، بهجای پذیرفتن ضرر، یک سفارش میانگینگیری پایینتر گذاشته میشود تا میانگین قیمت ورود پایین بیاید و معامله زودتر به سود برسد.
روی فیوچرز دائمی USDT-M صرافی توبیت این کار دستی هم شدنی است، ولی سه مشکل دارد: باید همیشه پای سیستم باشی، باید هر پله را بدون خطای محاسبه بگذاری، و باید دقیقاً در لحظهای تصمیم بگیری که بازار تند حرکت میکند.
Toobit Gambler همین نردبان را خودکار میکند: پوزیشن باز میکند، یک حد سود بالای آن و یک سفارش میانگینگیری زیر آن میگذارد، و با هر بار پر شدن، نردبان را یک پله جلو میبرد.
سختترین مسئله: کدام سفارش پر شد؟
مسئلهی اصلی این ربات چیزی نبود که به نظر میرسد. وقتی صرافی خبر میدهد یک سفارش پر شده، از کجا بدانیم کدام سفارش بود؟
نسخهی اولیه قیمت پر شدن را با عددی که در حافظه داشت مقایسه میکرد و همین، دو باگ واقعی روی حساب زنده ساخت. یک بار سفارشی که روی ۷۱٫۲۴ گذاشته شده بود در حافظه ۷۱٫۰ ثبت شده بود، پر شدنش با هیچچیز تطبیق نخورد، پوزیشن دو برابر شد و چهار ساعت و چهل دقیقه بیسرپرست ماند.
راهحل این بود که خودِ سفارش بگوید کیست. حالا هر سفارش با شناسهای مثل Toobit-Gambler-MART-48213 ثبت میشود و صرافی همان را در گزارش اجرا برمیگرداند. دیگر حدس زدنی در کار نیست. کنارش یک شمارندهی ترتیبی هست که هر رویداد پر شدن فقط یک بار مصرف میشود، تا سطحی که دوباره روی همان قیمت گذاشته شده بلافاصله دوباره شلیک نکند.
بازنویسی، بدون اینکه رفتار معاملاتی عوض شود
ربات از چند اسکریپت تخت به یک پکیج ششلایه بازنویسی شد، با یک قید سختگیرانه: رفتار معاملاتی نباید تغییر کند. ریاضیات، گردکردنها و ترتیب شاخهها دستنخورده ماندند و هر تغییر رفتاری، تغییری آگاهانه و تستشده بود.
نتیجه ۳۴۲ تست خودکار است که همگی سبز میشوند و ۸۲٪ کد را پوشش میدهند. لایهی دامنه صددرصد پوشش دارد.
زنده ماندن ربات، نه فقط کرش نکردن
شکست واقعی یک ربات معاملهگر «کرش کردن» نیست. این است که کار کند در حالی که دنیا جلو رفته.
یک بار سوکت تمیز بسته شد و ترد مُرد، ولی پیام «کلید تازه شد» همچنان چاپ میشد و دو ساعتونیم مرگ را پنهان کرد. حالا یک ترد ناظر با تأخیر نمایی نشست را از نو برقرار میکند، و هر سفارشی که در فاصلهی قطعی پر شده باشد از تاریخچهی REST بازیابی و دوباره وارد همان منطق همیشگی میشود.
پنل کنترل و امنیت کلید API
روی همهی اینها یک پنل کنترل PySide6 نشسته که هستهی معاملاتی را اصلاً دست نمیزند: همان config.toml و .env را ویرایش میکند و با همان مدلهای خود ربات اعتبارسنجی میشود.
تنظیمات، شامل کلید API، در یک فایل AES-256-GCM نگهداری میشود که کلیدش رمز ورود کاربر است. نسخهای که از روی دستگاه کپی شود، بدون آن رمز بهدرد نمیخورد.
یک هشدار لازم دربارهی مارت زدن
مارت زدن ریسک را حذف نمیکند، جابهجایش میکند: نرخ برد بالا میرود و اندازهی ضررِ نهایی هم بالا میرود. این ربات همان استراتژی را بدون خطای انسانی و بدون جاماندن اجرا میکند، نه اینکه ریاضیاتش را عوض کند.
اگر میخواهی ببینی همین الگو در حساب خودت چه شکلی است، شش دلیلی که حسابها را در چالش پراپ فرم میسوزانند دقیقاً همین را از روی استیتمنت نشان میدهد.
نمونهی دیگری از همین رویکرد روی صرافی دیگری در ربات معاملهگر خودکار صرافی کوتکس پیاده شده است.