چرا هر ربات در کانتینر مستقل خودش اجرا میشود
در StrategyBox هر استراتژیای که مستقر میکنید درون کانتینر ایزولهی خودش اجرا میشود؛ نه یک پردازش مشترک، نه یک استخر نخ، و نه یک جایگاه در دل سرویسی غولپیکر. برای هر استراتژی در حال اجرا و بهازای هر حساب، یک کانتینر. این یک انتخاب مهندسی سنجیده است که تقریباً تمام رفتار پلتفرم را در شرایط پرفشار شکل میدهد.
یک خرابی باید یک خرابی باقی بماند
کدهای معاملاتی خودکار به شکلهای پیشپاافتادهای دچار خطا میشوند: یک تجزیهگر به پیامی با ساختار غیرمنتظره برمیخورد، یک وابستگی روی مقدار تهی خطا میدهد، یا یک حلقهی بیپایان یک هستهی پردازنده را قفل میکند. پرسش هرگز آیا چیزی خراب خواهد شد نیست؛ پرسش این است که وقتی خراب شد، دامنهی آسیب تا کجا گسترش مییابد.
اگر استراتژیهای متعدد یک محیط اجرا را به اشتراک بگذارند، یک عامل معیوب میتواند:
- حافظه را تمام کند و باعث یک کشتار out-of-memory شود که همسایهها را هم با خود پایین بکشد.
- وضعیت مشترک درونپردازشیای را که استراتژیهای دیگر بیسروصدا به آن وابستهاند مخدوش کند.
- یک حلقهی رویداد را مسدود کند تا استراتژیهای نامرتبط دیگر به بازار واکنش نشان ندهند.
جداسازی مبتنی بر کانتینر، این قطعیهای سراسری حساب را به یک رخداد محلی تبدیل میکند. وقتی یک استراتژی سقوط میکند، کانتینرش سقوط میکند و شعاع انفجار دقیقاً همان یک استقرار است. سایر استراتژیهای شما به کار خود ادامه میدهند، موقعیتهایشان را مدیریت میکنند و اصلاً متوجه نمیشوند.
محدودیتهای سخت منابع، بهازای هر کانتینر
به هر کانتینر سقفهای صریح پردازنده و حافظه اختصاص مییابد. این موضوع به دو دلیل اهمیت دارد.
نخست، پیشبینیپذیری: یک استراتژی مهارگسیخته نمیتواند بقیهی پلتفرم را از منابع محروم کند، چون بهسادگی نمیتواند بیش از سهم خود مصرف کند. وقتی به سقف میرسد، هستهی سیستم همان را محدود میکند، نه همه را.
دوم، صداقت دربارهی ظرفیت. چون هر استقرار ردپای مشخصی دارد، میتوانیم دربارهی تعداد استراتژیهایی که یک میزبان میتواند با اطمینان حمل کند استدلال کنیم، بهجای آنکه بیش از حد تعهد بدهیم و امیدوار بمانیم. جداسازی همان چیزی است که این حسابوکتاب را قابلاعتماد میکند.
اعتبارنامهها هرگز میان استراتژیها نشت نمیکنند
StrategyBox غیرامانی است؛ سرمایهی شما روی حساب خودتان در MT5، Binance یا Bybit باقی میماند و پلتفرم هرگز آن را نگه نمیدارد. آنچه هر کانتینر نیاز دارد یک اعتبارنامهی API با دامنهی محدود است تا سفارشها را روی صرافی شما و به نمایندگی از شما ثبت و مدیریت کند.
ما این اعتبارنامهها را حساسترین دارایی سیستم میدانیم:
- دامنهی بهازای کانتینر. اعتبارنامهی یک استراتژی تنها به همان یک کانتینر تزریق میشود. هیچ چیز دیگری روی میزبان نمیتواند آن را بخواند.
- دور از دیسک. اعتبارنامهها از طریق یک اتصال
tmpfsدرون حافظه سوار میشوند، نه نوشتهشدن روی یک حجم پایدار. وقتی کانتینر متوقف میشود، راز نیز با آن از میان میرود. - کلیدهای بدون مجوز برداشت. کلیدهای API فقط برای معامله تأمین میشوند. حتی در بدترین حالت، یک کانتینر به خطر افتاده نمیتواند پول را از صرافی شما خارج کند، زیرا مجوز برداشت از همان ابتدا اعطا نشده است.
جداسازی در اینجا فقط دربارهی سقوطها نیست؛ یک مرز امنیتی است. مشکلی درون کانتینر یک استراتژی نمیتواند به رازهای استراتژی دیگر دست یابد.
سقوط و راهاندازی مجدد، به شکلی تمیز
چون کانتینر یک واحد تمیز و یکبارمصرف است، بازیابی کسلکننده است؛ و این دقیقاً همان چیزی است که میخواهید.
- ارکستریتور ضربان قلب هر کانتینر را زیر نظر میگیرد.
- اگر ضربانها کهنه شوند، استقرار ناسالم علامتگذاری و کانتینر متوقف میشود.
- یک کانتینر تازه از یک ایمیج سالمشناختهشده راهاندازی میشود و اعتبارنامهها دوباره به یک اتصال
tmpfsجدید تزریق میشوند. - خرابیهای مکرر عقبنشینی میکنند و در نهایت بهجای تقلای بیپایان، در وضعیت
Faultedآرام میگیرند.
هیچ پردازش نیمهجانی با وضعیت کهنه باقی نمیماند. هر راهاندازی مجدد از همان مبنای تمیز آغاز میشود.
آنچه جداسازی وعده نمیدهد
جداسازی پلتفرم را مقاومتر میکند اما معامله را ایمن نمیسازد. مرزهای کانتینر یک استراتژی را از باگهای دیگری محافظت میکنند، اما دربارهی ریسک بازار هیچ کاری نمیکنند. استراتژیهای خودکار میتوانند پول از دست بدهند و هیچ میزان مهندسی این را تغییر نمیدهد. جداسازی یک کف زیر زیرساخت است، نه سقفی بالای زیانهای شما. آن را دلیلِ آنکه یک ربات معیوب آبشاری فرو نمیریزد بدانید، نه بهانهای برای نادیدهگرفتن حدود ریسک خودتان.