פיתוח מערכת סגירת חירום לכל עמדות הבוט
"סגור הכל" — הפונקציה הפשוטה ביותר במראה ואחת הקריטיות ביותר. ברגע משבר, כאשר המנוע הראשי עלול להיתקע או שממשק המשתמש הופך ללא מגיב, הכפתור הזה חייב לפעול באופן מיידי. עיכוב של 30 שניות במהלך קריסת שוק פתאומית יכול למחוק 5–10% מהתיק. אנו מתכננים מנגנונים כאלה כבר שנים ומימשנו אותם ביותר מ-15 פרויקטים, כולל פרוטוקולי DeFi בעלי עומס גבוה ובוטים של CEX עם מאות עמדות.
בפרויקט אחד, במהלך ירידה חדה של ETH, מנוע הבוט קפא עקב שגיאה בסקריפט חישוב המרווח. סגירת החירום, שמומשה כשירות נפרד על asyncio, סגרה 25 עמדות תוך 2 שניות באמצעות הזמנות מקבילות — ההפסדים היו פחות מ-0.5% במקום 12% פוטנציאליים. מקרה זה מראה מדוע בידוד נתיב הקוד הוא קריטי.
כיצד אנו בונים את מערכת סגירת החירום
כל רכיב מתוכנן תוך מחשבה על כשל. להלן הדרישות המרכזיות:
מהירות: סגירת חירום חייבת להסתיים תוך שניות, לא דקות. מושגת על ידי סגירת כל העמדות בו זמנית באמצעות 1. Получить список всех открытых позиций (REST snapshot) 2. Для каждой позиции параллельно: a. Разместить market order противоположной стороны b. Подождать confirmation fill c. Если timeout — проверить статус, повторить при необходимости 3. Через N секунд сделать reconciliation: - Запросить текущие позиции с биржи - Если что-то осталось открытым — повторить для них 4. Отправить итоговый отчёт: что закрыто, по каким ценам, итоговый P&L , לא בלולאה רציפה.
אמינות: פועלת גם אם הלולאה המסחרית הראשית נתקעת או שממשק המשתמש אינו זמין. זהו נתיב קוד נפרד, פשוט ביותר, ללא תלות במנוע הראשי — רק לקוח HTTP לבורסה.
אישור: כל עמדה חייבת לקבל אישור סגירה. אם ההזמנה לא מולאה, נסה שוב עם השהיה אקספוננציאלית. אל תעצור עד שכל העמדות סגורות או עד שמגיעים לזמן קצוב עם התראה בטלגרם.
אידמפוטנטיות: אם הכפתור נלחץ פעמיים, אל תשלח הזמנות כפולות. השתמש ב-Redis לאחסון מצב הפעולה: בקריאה חוזרת, בדוק אם כבר יש סגירה פעילה והחזר את הסטטוס הנוכחי.
אלגוריתם הביצוע
1. Получить список всех открытых позиций (REST snapshot)
2. Для каждой позиции параллельно:
a. Разместить market order противоположной стороны
b. Подождать confirmation fill
c. Если timeout — проверить статус, повторить при необходимости
3. Через N секунд сделать reconciliation:
- Запросить текущие позиции с биржи
- Если что-то осталось открытым — повторить для них
4. Отправить итоговый отчёт: что закрыто, по каким ценам, итоговый P&L בעיית הנזילות במהלך סגירת חירום
סגירת חירום מתרחשת בדרך כלל בזמן תנודתיות גבוהה — דווקא כאשר הנזילות יורדת. הזמנת שוק לעמדה גדולה עלולה לגרום להחלקת מחיר קטסטרופלית. פתרון: לעמדות גדולות — ביצוע TWAP גם במהלך חירום (פיצול למספר הזמנות על פני 30–60 שניות). לעמדות קטנות — הזמנת שוק פשוטה. סף הגודל ניתן להגדרה.
השוואה בין TWAP להזמנת שוק ישירה
| פרמטר | ביצוע TWAP | הזמנת שוק |
|---|---|---|
| זמן לסגירת עמדה גדולה | 30–60 שניות | <1 שנייה |
| סיכון החלקת מחיר | מינימלי (≤1%) | גבוה (עד 5–15%) |
| אמינות כאשר הנזילות אפסית | גבוהה (הזמנות מתמלאות חלקית) | נמוכה (עלולה לא להתמלא) |
| גודל עמדה מומלץ | >$10k | <$10k |
מה לעשות אם הנזילות יורדת לאפס?
במקרים כאלה, הזמנת שוק פשוטה עלולה להתבצע במחיר הגרוע ביותר בספר ההזמנות. אנו מוסיפים מנגנון גיבוי: אם הפער (spread) עולה על 5%, המערכת עוברת להזמנה מוגבלת עם מחיר אגרסיבי (הצעת הקנייה/מכירה הטובה ביותר) ומנסה שוב כל 2 שניות. זה מגן מפני החלקת מחיר תוך שמירה על סיכוי לסגירת העמדה.
השוואת גישות לביצוע סגירת חירום
| פרמטר | סגירה רציפה | סגירה מקבילה |
|---|---|---|
| זמן ביצוע | ~10–30 שניות | ~1–3 שניות |
| סיכון החלקת מחיר | גבוה יותר עקב עיכובים | נמוך יותר עקב סינכרוניות |
| אמינות | תלויה ברצף | גבוהה יותר, כל הזמנה עצמאית |
| מורכבות יישום | נמוכה | בינונית (דורש אסינכרוניות) |
סגירה מקבילה מהירה פי 3–5 מסגירה רציפה עבור 10+ עמדות.
מדוע חשוב לבדוק את סגירת החירום באופן קבוע?
מערכת סגירת החירום היא תכונת בטיחות שנדרשת לעיתים רחוקות אך חייבת לפעול ללא דופי כאשר היא נדרשת. בדוק אותה באופן קבוע במצב מסחר מדומה (paper trading) עם סימולציות של קריסות שוק פתאומיות. אנו כוללים בדיקות אוטומטיות המשתמשות בנתוני משבר היסטוריים ומדמות בעיות רשת. לאחר היישום שלנו, אתה יכול להיות רגוע.
תהליך היישום
| שלב | משך | תוצאה |
|---|---|---|
| ניתוח ארכיטקטורת הבוט | 1–2 ימים | מפרט טכני והערכת עלות |
| עיצוב נתיב הקוד | יום אחד | מסמך אלגוריתם וגיבוי |
| פיתוח ב-Python (asyncio) או Solidity | 3–5 ימים | מודול סגירת חירום מוכן |
| אינטגרציה עם הבורסה והגדרת TWAP | 1–2 ימים | אב טיפוס עובד |
| בדיקות על נתונים היסטוריים | יומיים | דוח סימולציה |
| פריסה ותמיכה של שעתיים | יום אחד | מערכת בייצור |
מה כלול בעבודה?
- ארכיטקטורה וקוד מלאים של סגירת חירום (שירות נפרד או מודול משולב)
- יישום ביצוע מקביל עם asyncio/aiohttp או מחסנית דומה
- הגדרת ביצוע TWAP לעמדות גדולות
- התאמה והתראות על כשלים
- תיעוד (תיאור אלגוריתם, הגדרות, הוראות בדיקה)
- שעתיים של תמיכה לאחר הפריסה
צור קשר כדי לדון בפרויקט שלך — ננתח את המחסנית שלך ונציע פתרון אופטימלי תוך יום עסקים אחד.







