כאשר השוק זז בחדות ב-5%, פירוק סימולטני של מאות פוזיציות יכול להעמיס על המנוע. עיכובים של 200 אלפיות השנייה מובילים להחלקה של 1–2% — הבורסה מפסידה מיליונים מקרן הביטוח. אנו מתכננים מנוע שמעבד פירוקים ב-<50 אלפיות השנייה, ומונע הפסדים מדורגים. צרו קשר כדי לדון בארכיטקטורת המערכת שלכם.
מדוע מסחר במרווח דורש מנוע מהיר — בניית מערכת מסחר במרווח
במהלך תנודתיות בשוק, עשרות פוזיציות יכולות להגיע למחיר הפירוק בו-זמנית. אם המנוע לא יכול להתמודד עם העומס, עיכובים גורמים לביצוע במחירים גרועים יותר — הבורסה סופגת הפסדים המכוסים על ידי קרן הביטוח. במקרה הגרוע ביותר, מופעל מנגנון Auto-Deleveraging, הגורם לחוסר שביעות רצון של המשתמשים. המנוע שלנו מעבד פירוקים פי שניים מהר יותר מיישומים טיפוסיים, הודות לביצוע מקבילי וסימון פוזיציות אטומי.
אילו מצבי מרווח אנו תומכים
Isolated Margin — לכל פוזיציה יש בטחון עצמי משלה. הסיכון מוגבל לאותה פוזיציה. מתאים לסוחרים שרוצים לשלוט בסיכון לכל עסקה.
Cross Margin — כל הפוזיציות חולקות מאגר בטחון משותף. פוזיציות רווחיות תומכות במפסידות. פירוק מתרחש רק כאשר יתרת החשבון הופכת לשלילית. דורש חישוב מרווח מינימלי מורכב יותר.
| פרמטר | Isolated | Cross Margin |
|---|---|---|
| סיכון | מוגבל לפוזיציה | מפוזר על פני כל הפוזיציות |
| ניהול בטחון | לכל פוזיציה בנפרד | יתרה כוללת |
| פירוק | כאשר הבטחון של הפוזיציה יורד | כאשר ההון העצמי שלילי |
| מומלץ עבור | מתחילים, ניהול סיכונים | מקצוענים, גידור |
כיצד מחושב מחיר הפירוק
עבור פוזיציית Long במרווח מבודד, פירוק מתרחש כאשר ההפסד מגיע ל-(מרווח התחלתי - דמי מרווח תחזוקה). נוסחה:
func CalculateLiquidationPrice(pos IsolatedPosition, config MarginConfig) Decimal {
maintenanceMarginAmount := pos.EntryPrice.Mul(pos.Quantity).Mul(config.MaintenanceMarginRate)
lossAtLiquidation := pos.InitialMargin.Sub(maintenanceMarginAmount)
priceDropAllowed := lossAtLiquidation.Div(pos.Quantity)
if pos.Side == Long {
return pos.EntryPrice.Sub(priceDropAllowed)
} else {
return pos.EntryPrice.Add(priceDropAllowed)
}
} דוגמה לחישוב מחיר פירוק
Long BTC, כניסה $42,000, מינוף 10x → מרווח תחזוקה = 0.5% → מחיר פירוק ≈ $38,010.כיצד פועל מנוע הפירוק
המנוע מקבל עדכוני מחיר מאורקל מחיר הסימון ובודק את כל הפוזיציות הפתוחות. כאשר מחיר הפירוק נחצה, הפוזיציה מסומנת אטומית, פקודת שוק לסגירה מונפקת, ודמי פירוק (בדרך כלל 0.5–1.5%) נגבים. הבטחון הנותר (השארית) מוחזר למשתמש, וההפסד מכוסה על ידי קרן הביטוח. מדד מפתח — זמן מהטריגר להנפקת הפקודה: <50 אלפיות השנייה.
type LiquidationEngine struct { /* ... */ }
func (le *LiquidationEngine) checkLiquidations(update PriceUpdate) {
positions := le.db.GetPositionsForLiquidation(update.Pair, update.Price)
for _, pos := range positions {
go le.liquidatePosition(pos, update.Price)
}
} מנגנונים פיננסיים: קרן ביטוח, ריבית מימון ו-ADL
קרן ביטוח
קרן הביטוח נבנית מדמי פירוק. אם פירוק מתבצע במחיר גרוע יותר ממחיר הפירוק (החלקה), ההפסד מחויב ממאגר זה. זהו רזרבה המגנה על הבורסה מהפסדים מדורגים.
ריבית מימון
חוזים עתידיים תמידיים (ריבית מימון) אין להם תאריך פקיעה. ריבית המימון היא מנגנון שמתגמל או מעניש פוזיציות לונג/שורט בהתבסס על הסטייה של מחיר הסימון ממחיר המדד. אנו מיישמים חישוב ריבית מימון המבוסס על פרמיה:
func CalculateRate(markPrice, indexPrice Decimal) Decimal {
premium := markPrice.Sub(indexPrice).Div(indexPrice)
interestRate := Decimal("0.0001")
clampedDiff := Clamp(interestRate.Sub(premium), -0.0005, 0.0005)
return premium.Add(clampedDiff)
}המימון מוחל כל 8 שעות. לונג משלם לשורט אם הריבית > 0, ולהיפך.
Auto-Deleveraging
אם קרן הביטוח מוצתה, מופעל Auto-Deleveraging: הפוזיציות הרווחיות ביותר נסגרות בכוח כדי לפצות על ההפסד. זהו מוצא אחרון, ואנו מתכננים את המערכת כך ש-ADL יופעל לעתים רחוקות ככל האפשר — באמצעות קרן ביטוח מספקת ופירוקים מהירים.
מדוע מחיר סימון חשוב יותר ממחיר אחרון
פירוקים צריכים להתבסס על מחיר מצטבר ממספר בורסות (מחיר סימון), לא על העסקה האחרונה. אחרת, תוקף יכול לתמרן את המחיר האחרון עם עסקה קטנה כדי לגרום לפירוקים. אנו משתמשים בחציון משלושה מקורות (Binance, OKX, Bybit) עם אינטגרציית Chainlink:
func GetMarkPrice(pair string) Decimal {
prices := []Decimal{binancePrice, okxPrice, bybitPrice}
sort.Slice(prices, func(i, j int) bool {
return prices[i].LessThan(prices[j])
})
return prices[1]
} כיצד נראה ממשק הסוחר
המשתמש רואה יחס מרווח בזמן אמת, מחיר פירוק, רווח והפסד, ויכול להוסיף/למשוך בטחון. אנו משתמשים ב-React + wagmi + RainbowKit לאינטגרציית ארנק. דוגמת רכיב:
function PositionCard({ position }) {
const marginRatio = position.equity / position.maintenanceMargin * 100;
const urgency = marginRatio < 110 ? 'critical' : marginRatio < 150 ? 'warning' : 'safe';
return (
<Card>
<PnLDisplay pnl={position.unrealizedPnl} />
<div>Liquidation: ${position.liquidationPrice.toFixed(2)}</div>
<MarginRatioBar ratio={marginRatio} urgency={urgency} />
<AddMarginButton position={position} />
</Card>
);
} מה כלול בפיתוח מפתח-ביד
- תיעוד ארכיטקטוני (דיאגרמות UML, תיאורי זרימת נתונים)
- פיתוח חוזים חכמים (Solidity) לניהול בטחון ופירוקים (אם נדרש על-רשת)
- מנועי backend ב-Go: מרווח מבודד/משולב, פירוק, מימון, קרן ביטוח
- אינטגרציה עם אורקלים של Chainlink למחיר סימון
- רכיבי UI ב-React/TypeScript עם מנויי WebSocket
- בדיקות עומס (עד 10,000 פוזיציות במקביל)
- פריסה לענן (AWS/GCP) וניטור (Grafana, Prometheus)
- הכשרת הצוות שלכם ותמיכה של 3 חודשים לאחר ההשקה
לוחות זמנים משוערים
| רכיב | לוח זמנים |
|---|---|
| מנוע מרווח מבודד | 4–5 שבועות |
| מנוע פירוק | 3–4 שבועות |
| מרווח משולב | 3–4 שבועות |
| ריבית מימון תמידית | 2–3 שבועות |
| קרן ביטוח + ADL | 2–3 שבועות |
| אורקל מחיר סימון | 1–2 שבועות |
| UI למסחר במרווח | 4–6 שבועות |
| מערכת מלאה | 4–6 חודשים |
העלות מחושבת באופן אישי בהתאם למורכבות ולמחסנית הנדרשת. להערכה מדויקת, צרו קשר — נערוך ביקורת חינם של הפרויקט שלכם ונציע פתרון. בקשו ייעוץ — נעזור להפחית הפסדים מפירוקים. אנו מבטיחים NDA ותמחור שקוף.







