פיתוח אלגוריתם ארביטראז' משולש לבורסות קריפטו

איתור ידני של מסלולי ארביטראז' גוזל זמן, וחלונות רווח נסגרים תוך שניות. אנו מפתחים אלגוריתם ארביטראז' משולש מפתח-עד-מפתח: מחישוב מסלולים ועד ביצוע אוטונומי של עסקאות. המהנדסים שלנו מגדירים את המערכת כך שההחלטות יתקבלו מהר יותר מאשר ידנית, והתוצאה תהיה צפויה מראש.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1376
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1350
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    798
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1093
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1035
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1132

ארביטראז' Triangular: היכן האלגוריתם מאבד רווח

ארביטראז' Triangular נראה כמו פעולה נטולת סיכון: האלגוריתם מבחין בפער בין שלושה זוגות ומבצע מחזור סגור בתוך זירה אחת. על הנייר מחשבים את הרווח לפי העסקאות האחרונות, אך הצירוף של שלושה זוגות מבוצע ברצף — וכל רגל משנה את התנאים עבור הבאה.

המקור הראשון לאובדן — החלקה בביצוע. עד שהרגל השנייה מגיעה לספר הפקודות, המחיר הטוב ביותר כבר נתפס על ידי רובוטים שכנים, וההזמנה מתבצעת ברמות נמוכות יותר. בזוגות דקים גם נפח קטן מזיז את הציטוט בעשיריות האחוז, ובמחזור יש שלוש תזוזות כאלה, והן מצטברות.

השני — עמלות זירות המסחר. משלמים אותן על כל רגל, ובנוסף מרווח, ובנוסף העברת כספים בין הבורסות אם המחזור הוא בין-בורסאי. הפער שהאלגוריתם תופס לעתים קרובות דומה לסכום העלויות, ולכן חישוב לפי הציטוטים העליונים מציג רווח במקום שאין בו רווח.

השלישי והמסוכן ביותר — ביצוע חלקי של ההזמנה ביחד עם השהיית התגובה של הזירות. כל עוד הרגל השלישית ממתינה לאישור, המחיר בורח, וחצי מהצירוף נשאר פתוח: במקום מחזור סגור אנו מקבלים פוזיציה מכוונת, שהשוק יכול להפוך כנגדנו.

בהמשך נפרק כיצד זה נסגר: היכן להציב מסננים לפי נזילות, כיצד לחשב רווח תוך התחשבות בעלויות בכל שלושת הקטעים ומה לעשות עם רגליים שלא בוצעו.

מה נותן חיפוש צירופים אוטומטי בזמן אמת

חיפוש צירופים ידני מוגבל על ידי תשומת הלב של הסוחר: בעוד שמחושב משולש אחד, המחיר בשתי הרגליים האחרות כבר ברח.

חיפוש צירופים אוטומטי פועל אחרת — המערכת סורקת ברציפות משולשים על פני שלושה מכשירים, מחשבת תוצאה תוך התחשבות בעמלות, במרווח ובעומק ספר הפקודות הזמין, ומסננת מחזורים שבהם העלויות אוכלות את הפער.

המדד המרכזי כאן אינו "כמה צירופים נמצאו", אלא שיעור המחזורים הרווחיים — שיעור אלה שהגיעו לסגירה של כל שלוש הרגליים עם תוצאה חיובית.

מהירות התגובה של המערכת קובעת אם האות יגיע לספר הפקודות: בין החישוב להצגת הרגל הראשונה קיים חלון שבו המחיר משתנה. לכן שלוש ההזמנות נבנות במקביל ולא ברצף, והרגליים הנותרות מחושבות מחדש מיד עם ביצוע חלקי — המחזור או נסגר כולו, או מפורק ביתרה מינימלית.

חלק נפרד של העבודה — התחשבות במגבלות הבורסה: ב-Binance קצב הבקשות מחושב מחדש באופן דינמי, והקצב מופחת מראש ולא לאחר חסימה.

בקרת סיכון לעסקה נקבעת לפני ההתחלה: מגבלת נפח למחזור, מגבלת מכשיר ובורסה, איסור על משולשים חופפים. אם רגל אחת לא התמלאה, פועל כלל יציאה — סגירה בפקודת שוק או ביטול היתרה. יומן הביצוע רושם כל רגל: זמן השליחה וההפעלה, המחיר בפועל, הנפח וסיבת הסירוב. ממנו רואים היכן בדיוק הולך לאיבוד התוצאה — בהשהיה, בעמלה או בנזילות.

מצבי ביצוע: השוואת גישות לעסקאות

האוטונומיה של המערכת היא משתנה ולא תכונה. אותו ארביטראז' משולש ניתן להפעיל בשלושה מצבים: מצפייה בצירופים ועד ביצוע אוטומטי מלא. ההבדל הוא מי מקבל את ההחלטה על כניסה וכמה בדיקות עומדות בין האות להזמנה.

מצב מתי מתאים מה מגביל
מצב ניטור בדיקה ראשונית של ההשערה, זירות לא מוכרות, זוגות דקים עסקאות ידניות — התגובה מאחרת, חלון הפער נסגר לפני הכניסה
ביצוע חצי-אוטומטי הרובוט מחשב את הצירוף ומכין הזמנות, האדם מאשר האישור מוסיף השהיה, חלק מהצירופים אינם שורדים את ההמתנה
ביצוע אוטומטי מלא תרחישים מחודדים, נזילות יציבה שגיאת הגדרה משוכפלת ללא עצירה — נדרשות מגבלות נוקשות

ללא תלות במצב, את המערכת בונים עם מגבלות על פוזיציה: תקרה לנפח של צירוף אחד, לנפח בכל זירה ולנפח הכולל בכל הזוגות. במערכת מבוזרת צמתי הניטור והביצוע מופרדים — תקלה בזירה אחת אינה עוצרת את שאר הצירופים, ותור האותות ממשיך להיות מעובד.

החלפת מצבים נעשית כפרמטר ולא ככתיבה מחדש של הלוגיקה. אתם מתחילים מניטור, מפעילים אישור עסקאות, ואז מסירים אותו בתרחישים שעבדו ללא סטיות.

כיצד נבנה האלגוריתם: שלבי העבודה ההנדסית

מחיר הטעות בשרשרת ארביטראז' אינו חישוב שגוי, אלא רגל שתלויה ללא סגירה: החלקה והשהיה בין הזירות אוכלות את המרווח מהר יותר ממה שמגיע האות. לכן את האלגוריתם בונים בשלבים, וכל שלב מסתיים בארטיפקט שלפיו מתקבלת החלטה לעבור הלאה.

  1. ביקורת זירות מסחר. בוחרים בורסות עם הזוגות הנדרשים, נזילות דומה ועמלות צפויות. בודקים מגבלות משיכה, שיטות הפקדה ויציבות זרם הציטוטים — השרשרת לא אמורה להיתקל בתשתית הזירה.
  2. סכמת הצירופים. בונים גרף זוגות מהצורה A→B→C→A ומסננים שרשראות שבהן העמלות אוכלות את המרווח. עבור כל צירוף קובעים סף כניסה והחלקה מותרת.
  3. מודל מתמטי. מחשבים את גודל הפוזיציה תוך התחשבות בעמלות taker ו-maker, בעומק ספר הפקודות ובהשהיה בין הזירות. קובעים כיצד מתחלק הנפח בין הרגליים והיכן מוצב הסטופ.
  4. בדיקה על היסטוריה. הרצה על נתונים מצטברים עם עמלות, סירובים והשהיות אמיתיים. בודקים כמה צירופים שורדים לאחר העלויות, ומסירים אותות שווא.
  5. מערכת הביצוע. שליחת הזמנות, בקרת ביצוע חלקי ולוגיקת סגירת חירום של רגל. בנפרד מנסחים כללי עצירה בעת אי-התאמת יתרות.
  6. הרצה בנפחים קטנים. עבודה בשוק אמיתי עם גודל פוזיציה מוגבל: משווים את העלויות בפועל לאלה שבמודל ומתקנים את ספי הכניסה.
  7. מסירה לתפעול. מוסרים את המערכת עם הגדרות, התראות ותקנון עצירה, ומדריכים את צוות הלקוח.

הרצף אינו מאפשר לעבור למסחר אמיתי כל עוד המודל לא אושר מול עלויות השוק.

מה כלול באספקה: קוד, קונפיגורציות, תקנונים

מסירת הפרויקט אינה הדגמה של צירוף מוצלח על המסך, אלא ערכה שאיתה המהנדסים שלכם יכולים להפעיל, לתחזק ולפתח את המערכת בעצמם. כל ארטיפקט נמסר בצורה שבה אנו עצמנו משתמשים בו: עם תיאור הפרמטרים, גבולות הישימות וסדר הפעולות בסטיות.

  • קוד המקור של המערכת — מודולים לאיסוף נתוני שוק, חישוב צירופים, תכנון והצגת הזמנות, וניהול יתרות. מאגר עם היסטוריית שינויים ובנייה ניתנת לשחזור, ללא תלויות סגורות שלא תוכלו לתחזק בכוחות עצמכם.
  • קבצי קונפיגורציה — ספי תשואה, מגבלות על גודל פוזיציה אחת והנפח הכולל של פוזיציות פתוחות, מגבלות על זמן ההמתנה לתגובה, רשימות זוגות מסחר וזירות. מופרדים לפי סביבות, כך שהרצת בדיקה לא תוכל פיזית לשלוח הזמנה אמיתית.
  • לוח ניטור — צירופים פעילים, אותות שנדחו עם ציון סיבת הדחייה, מצב ערוצי קבלת הנתונים, השהיית הביצוע והפער בין התוצאה המחושבת לזו בפועל של העסקה.
  • תקנון תפעול — סדר ההפעלה והעצירה, פעולות בעת אי-התאמת יתרות, ניתוק בזרם הנתונים או סדרת הזמנות שנדחו, ונוהל חזרה לגרסה קודמת.
  • הרשאות גישה למפתחות — סכמת הפרדת תפקידים: מפתחות מסחר ללא הרשאת משיכת כספים, חשבונות נפרדים לסביבת בדיקה ולסביבת עבודה, רוטציה ונוהל שלילה.
  • תיאור הפרמטרים ויומן ההחלטות — מדוע נבחר אופק חישוב כזה וסף כניסה כזה, אילו השערות נבדקו ומדוע נדחו.

הקבלה מתבצעת לפי צ'ק-ליסט: מפעילים את המערכת בתשתית שלכם, מריצים תקלות אופייניות ומוודאים שהתקנון מאפשר לצוות שלכם להתאושש בלעדינו.

מקרה מבחן: מעסקאות ידניות למערכת אוטונומית

הלקוח — צוות שהפעיל ארביטראז' Triangular באופן ידני: הסוחר החזיק מולו את ספרי הפקודות של שלוש בורסות, חישב את השרשרת A→B→C→A בגיליון אלקטרוני והספיק להרכיב צירוף רק כאשר הפער החזיק מעמד מספר דקות.

על פני 40+ זוגות, סריקה ידנית ארכה 40–60 שניות, חלק מהמסלולים כלל לא נבדקו, והפער הספיק להיסגר לפני שההזמנה יצאה. כאב נפרד — צירופים שבוצעו חלקית: רגל אחת עברה, שתיים לא, והפוזיציה נתלתה במטבע שגוי עד לפירוק ידני.

הרכיבו מערכת אוטונומית: ספרי פקודות בזרימה מהבורסות מתכנסים לגרף מסלולים, החישוב מתחשב בעמלות, במגבלות ובהחלקה בכל רגל, וההזמנות יוצאות בחבילה עם הגבלת זמן נוקשה. לפני השליחה המערכת משווה נזילות בכל הרגליים — אם לפחות אחת לא עוברת, הצירוף נפסל לפני העסקה ולא אחריה. לסינון ציטוטים פגומים חובר CoinGecko כמקור בלתי תלוי להשוואת שערים.

מה השתנה בחודש הראשון: הזמן מרגע גילוי הפער ועד להזמנה — 1–2 שניות במקום 40–60, שיעור הצירופים שבוצעו עלה מ-55% ל-88% הודות לסינון מסלולים לא נזילים, וקטגוריית הסירובים "רגל תקועה" לא חזרה אף פעם. צירופים ידניים הושארו רק כמצב בקרה לבדיקת מסלולים חדשים — הזרם המרכזי פועל אוטונומית.

במה נבדל ארביטראז' Triangular מבין-בורסאי

ארביטראז' Triangular נסגר בתוך זירה אחת: שלוש רגליים — A→B, B→C, C→A — מבוצעות בספר הפקודות שלה עצמה, והחישוב נעשה ביחידת חשבונאות אחת של הבורסה. הנכס אינו עוזב את מערכת הזירה: בין הרגליים אין העברת בלוקצ'יין, רק הזמנות.

צירוף בין-בורסאי בנוי באופן עקרוני אחרת. רגל אחת נסגרת בבורסה הראשונה, השנייה — בשנייה, וביניהן יש להעביר את הפוזיציה באופן פיזי. ההעברה הזו היא מקור כל ההבדלים — בסיכון, במהירות ובעלות.

היא גם מולידה סיכון של העברת כספים: כל עוד הנכס נע ברשת, הוא אינו נמצא לא ביתרת המסחר ולא בשליטה. הזיכוי תלוי בעומס הרשת, במספר האישורים ובכללי הזירה הפנימיים לקבלה, ועמלת הרשת נגבית בכל פעולה כזו.

מהירות סגירת הצירוף שונה מאותה סיבה. בתוך הזירה שלוש הרגליים יוצאות כמעט בו-זמנית, החלון נמדד בשניות, והפער בשערים נסגר על יתרה אחת. בהעברה, החלון לא נקבע על ידי הסוחר אלא על ידי הרשת: בזמן ההמתנה המרווח מתכווץ, והצירוף נסגר כבר במחירים אחרים.

לכן את הסכמה הבין-בורסאית בונים לא על העברה עבור כל עסקה, אלא על יתרות מוכנות מראש בשתי הזירות — ואז ההעברה עוברת לרקע. Triangular אינו דורש הכנה כזו, אך תובעני יותר לגבי עומק ספר הפקודות ורמת העמלות, ואילו הגרסה הבין-בורסאית רגישה דווקא לעלות ולזמן ההעברה.

ספקות טכניים לפני תחילת העבודה

לפני ההתחלה אנו דנים לא רק בלוגיקת חיפוש המשולשים, אלא גם בהתנהגות המערכת ברגע תקלה. להלן השאלות הנפוצות ביותר: עמידות לעומס, מגבלות הזירות והגנת מפתחות הגישה.

מה קורה בזינוק תנודתיות או בניתוק הקשר עם הזירה?

זרם הציטוטים עובר דרך תור עם הגבלה על בקשות בו-זמניות, ההזמנות נשלחות באופן אידמפוטנטי — שליחה חוזרת אינה יוצרת כפילות.

בעת ניתוק החיבור האסטרטגיה עוברת למצב פסיבי: הפוזיציות מותאמות מול היתרות בפועל ומול היסטוריית העסקאות לפני החידוש, ואי-התאמה עוצרת את המסחר במקום "מרדף" אחרי השוק.

כיצד המערכת מגיבה לשינוי בכללי הזירה?

עמלות, צעד המחיר וגודל ההזמנה המינימלי נקראים מהקונפיגורציה של הזירה ולא מוטבעים בקוד. אם הכללים השתנו, המשולש מפסיק להיות רווחי — החישוב מחושב מחדש לפני הצבת ההזמנה, ואותות עם פרמטרים לא מעודכנים נפסלים.

כיצד בנויה ההגנה על מפתחות הגישה?

המפתחות מאוחסנים במאגר סודות מאובטח, מונפקים בנפרד לכל זירה ואסטרטגיה ומתחלפים לפי לוח זמנים. הרשאת המשיכה במפתחות המסחר מבוטלת, הגישה מוגבלת לרשימת כתובות מותרות — דליפה אינה מעניקה גישה ליתרה.

מי עוצר את המסחר וכיצד נלקחות בחשבון מגבלות המשיכה?

קיימת עצירה ידנית וטריגרים אוטומטיים: סדרת סירובים של הזירה, מרווח חריג, ירידה מעבר לסף, אובדן קשר ארוך מחלון מוגדר. מגבלות המשיכה נלקחות בחשבון ברזרבה: המערכת לא תשלח נכס אם הדבר יפר את המגבלה היומית של הזירה או יותיר את האסטרטגיה ללא הון חוזר.

נדון במשימה ונחזור עם תוכנית עבודה

כדי להתחיל בארביטראז' Triangular, דרושה תמונה מוסכמת של המשימה: הבורסות והזוגות בהיקף, המגבלות על נפח הפוזיציה ומי מצד הלקוח מקבל את התוצאה. להלן מה שיידרש מכם וכיצד נראה הצעד הראשון.

  • הגדרת המשימה: רשימת הבורסות, זוגות המסחר והמערכות, ירידה מותרת, מגבלות על גודל הפוזיציה ומספר העסקאות בו-זמנית.
  • הרשאות ונתונים: מפתחות עם הרשאות קריאה ומסחר בלבד, ללא משיכת כספים; גישה לזרמי הציטוטים ולהיסטוריית העסקאות.
  • מודל העלויות: עמלות לפי רמות נפח, מרווח ועומק ספר הפקודות בכל זוג — מהם תלוי סף הכניסה לעסקה.
  • תשתית: היכן ממוקמת מערכת הביצוע, אילו ערוצי תקשורת ודרישות להשהיית הביצוע.
  • תוכנית עבודה: ניתוח המשימה, אב-טיפוס על נתונים היסטוריים, מערכת בדיקה, העלאה למצב עבודה, תמיכה.
  • הערכת לוחות זמנים: לפי שלבים, עם נקודות בקרה לאחר אב-הטיפוס ולאחר הרצת הבדיקה.
  • סדר האישור: האחראי על הקבלה, קריטריוני מוכנות, כללי עצירה וחזרה לאחור בעת סטייה מהתשואה המחושבת.

תארו את המשימה ואת התשתית הנוכחית — נחזור עם הערכת לוחות זמנים ותוכנית עבודה לפי שלבים.