פיתוח בוט לארביטראז' בין בורסות

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

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

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1376
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1350
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    796
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1088
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1034
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1130

בוט ארביטראז' בין-בורסאי: היכן מתפרקים צירופים ידניים

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

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

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

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

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

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

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

מה משתנה אחרי האוטומציה: מהירות, סינון אותות, סיכון

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

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

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

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

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

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

אפשרויות ביצוע: אותות, חצי-אוטומט, אוטומט מלא

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

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

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

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

שלבי העבודה: מביקורת הפלטפורמות ועד מסירת המעגל

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

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

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

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

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

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

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

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

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

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

מה שינו

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

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

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

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

מה לעשות אם הבוט כבר פועל והצירופים לא נסגרים

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

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

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

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

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

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

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

ספקות טכניים: גישות, תקלות, לימיטים, אחריות

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

היכן נשמרים מפתחות המסחר ומי בעל גישה אליהם?

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

מה עושה הבוט בניתוק תקשורת עם הפלטפורמה?

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

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

כיצד הבוט נכנס ללימיטים של פלטפורמות המסחר?

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

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

מי אחראי לתוצאה וכיצד זה מעוגן?

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

נדון במשימה: מה לשלוח להערכה ולתוכנית

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

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

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

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

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