מה נשבר במערך מסחר ללא אינטגרציה של Hummingbot
מרקט-מייקר שנכתב באופן עצמאי שומר בדרך כלל את מצב הציטוטים בזיכרון התהליך. החיבור לבורסה ניתק — הבוט ממשיך לחשוב שההזמנות שלו עומדות בתוקף, אף שחלקן כבר בוטלו או בוצעו. לאחר ההתחברות מחדש הוא מציב אותן מחדש: בספר ההזמנות מופיעים כפילויות, הפוזיציה חורגת מהלימיט שאף אחד לא מאמת.
בספר הזמנות דק, זוג הזמנות מיותר כזה מזיז בעצמו את המחיר, הספרד מתרחב, והעסקה הבאה נסגרת באופן ניכר גרוע מהמתוכנן.
נקודת הכשל השנייה — ניהול הזמנות ידני. שינוי הספרד, צעד הרשת או גבולות הטווח מתבצעים על ידי עריכת קובץ ההגדרות והפעלה מחדש, תוך איבוד המצב, ובמהלך ההפעלה מחדש המכשיר כלל לא מצוטט.
כל עוד מהנדס אחד עוסק בכך, כל היעדרות שלו הופכת לחור בנזילות: ספר ההזמנות נותר ריק בדיוק כל עוד נמשכת חקירת הסיבה.
השלישית — כשל שקט של אסטרטגיית המסחר. הבוט עובד, מציב הזמנות, הלוג נקי, אך התצורה כבר מזמן אינה תואמת את התנודתיות: הספרד צר מדי לעומק הנוכחי, המלאי מצטבר לכיוון אחד. מבחוץ זה נראה כמו בוט תקין, בפועל — כמו אסטרטגיה שצוברת סיכון לאט ומאבדת ספרד בכל סבב.
נבחן כיצד הדבר נסגר באמצעות אינטגרציה של Hummingbot במערך המסחר.
מה נותן מרקט-מייקינג מנוהל: תוצאה מדידה
ניהול ציטוטים ידני נשען על כוננות: כל עוד המהנדס לא יציב מחדש את ההזמנות, הספרד חי לפי התנודתיות של אתמול. כל הפעלה מחדש היא חלון שבו ספר ההזמנות ריק, והנפח זורם בדיוק לשם.
מערך מנוהל על Hummingbot מתרגם החלטות כאלה לכללים: לימיטים על פוזיציה, הפעלה מחדש אוטומטית של צמתים, לוג של כל פעולה.
זמן ההשבתה של מערך המסחר
הצמתים עולים כשירותים עם בדיקת חיות והפעלה מחדש אוטומטית, וההזמנות משוחזרות ממצב שמור, ולא מוצבות מחדש באופן ידני. ההשבתה מתקצרת משעות לדקות: שיעור הזמן שבו המערך באמת מצטט מפסיק להיות תלוי בגורם האנושי ובאזור הזמן של התורן.
שליטה בסיכון הפוזיציה
לימיטים על גודל הפוזיציה, ירידה מקסימלית וחשיפה למכשיר נקבעים לפני ההתחלה, ולא בדיעבד. חריגה עוצרת את ההצבה וסוגרת את הפוזיציה לפי כלל — הסיכון נראה בניטור ברגע ההתקרבות לגבול, ולא בדוח לאחר סדרת עסקאות.
הפחתת שיעור הפעולות הידניות
הצבה מחדש של הזמנות, שינוי ספרד, איזון מחדש ועצירת האסטרטגיה עוברים ללוח זמנים ולתנאי הפעלה. נותרות משימות ברמת הכיול: שיעור הפעולות הידניות יורד בסדר גודל, והזמן ההנדסי עובר לניתוח מדדים, ולא לכוננות ליד הטרמינל.
כל שלושת המדדים נמדדים מאותו מערך, ולכן האפקט נראה בדינמיקה: משווים תקופות לפני ואחרי העברת האסטרטגיות, ולא נשענים על תחושות מהסשן המסחרי.
אפשרויות אינטגרציה של Hummingbot: ענן, שרת עצמאי, היברידי
היכן חי בוט המסחר חשוב ממה שנדמה: מכך תלויים השהיה עד לבורסה, הגישה למפתחות פרטיים והמהירות שבה האסטרטגיה תגיע לשוק האמיתי. Hummingbot הוא מנוע מרקט-מייקינג בקוד פתוח, וניתן לפרוס אותו בשלוש תכניות. כל אחת מהן סוחרת בדרכה בין שליטה לבין מהירות ההתחלה.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| הפעלה בענן | נדרשת התחלה בזמן קצר, אין חומרה משלכם, האסטרטגיה כבר מכוילת | המפתחות נמצאים אצל הספק, ההשהיה עד הבורסה גבוהה יותר, כיוונון רשת עדין אינו זמין |
| פריסה על שרת עצמאי | נדרש שליטה מלאה במפתחות ובלוגים, האסטרטגיה רגישה להשהיה | הגדרת הסביבה, הניטור והעדכונים נשארים בצד שלכם, ההתחלה ארוכה יותר |
| תכנית פריסה היברידית | מערך המסחר על חומרה עצמית, בדיקת אסטרטגיות על נתונים היסטוריים — בענן | יש לקשר בין שני המערכים, לסנכרן תצורות וגרסאות אסטרטגיה |
מגבלות הממשק הבורסאי זהות לכל שלוש התכניות ולעיתים קרובות מכריעות את הבחירה.
לימיטים על קצב הבקשות ומשקל ההזמנות אינם מאפשרים להציב ציטוטים בתדירות גבוהה מדי, חלק מסוגי ההזמנות זמינים רק בשווקים מסוימים, ומערך בדיקה אינו משחזר את עומק ספר ההזמנות האמיתי — בשוק חי התנהגות האסטרטגיה שונה.
פריסה על שרת עצמאי נבחרת היכן שחשובים מפתחות פרטיים והשהיה צפויה: קונטיינר עם הבוט, צומת נפרד לגישה לבורסה, לוגים משלכם והתראות על תקלות. הפעלה בענן מנצחת בשלב בדיקת ההשערות — מגדירים פרמטרים של האסטרטגיה ובוחנים את ההתנהגות על ספר הזמנות חי.
ההיברידי מכסה את שני התרחישים, אך דורש משמעת בתצורות: גרסאות אסטרטגיה שהתפצלו במערכים יוצרות פערים בדוחות.
סדר העבודה: מביקורת לוגיקת המסחר ועד ההפעלה
עבודות האינטגרציה של Hummingbot מתקדמות מביקורת לוגיקת המסחר ועד למסירה לתפעול, וכל שלב נסגר בארטיפקט שניתן לבדוק, ולא ב״מוכן״ מילולי. אין לשבש את הסדר: אסטרטגיה שנבנתה לפני ספירת החיבורים ולימיטים הבורסאיים נתקלת בהם בדרך כלל כבר בחשבון החי.
- ביקורת לוגיקת המסחר והמערך הנוכחי. בוחנים את כללי הכניסה והיציאה, את אופן רישום הפוזיציה, את מקורות הציטוטים ואת אופן הצבת ההזמנות וביטולן. בפלט — מפת צווארי בקבוק: היכן הלוגיקה נשענת על פעולות ידניות והיכן אפשריות כפילויות הזמנות.
- תרשים ופרמטרים מטרה. קובעים את הזוגות, גודל הספרד, צעד הצבת ההזמנות מחדש, לימיטים על הפוזיציה ועל מספר ההזמנות הפעילות, וההתנהגות בעת ניתוק החיבור לבורסה. זו המפרט שלפיו נבנית התצורה.
- הרכבת האסטרטגיה והחיבורים. מכינים קובצי תצורה, מפתחות גישה נרשמים עם ההרשאות המינימליות הנדרשות, ללא משיכת כספים, ובנפרד מגדירים מגבלות על קצב הבקשות לבורסה.
- בדיקה על נתונים היסטוריים. מריצים את הלוגיקה על סדרות ציטוטים וספר הזמנות שנקלטו: בוחנים ירידה, שיעור ההזמנות המבוטלות והתנהגות על נרות חסרים ובשוק דק.
- מערך בדיקה בנפח קטן. משכפלים את ההרצה בסביבת בדיקה בורסאית או בנפח אמיתי מינימלי, ובאים את הביצועים בפועל מול המחושבים.
- מסירה לתפעול. מוסרים תצורות, תיאור אסטרטגיות, יומני הרצה ותקנון: כיצד לשנות פרמטרים, כיצד לעצור את הבוט וכיצד לחזור לגרסה קודמת של האסטרטגיה.
מה נשאר אצל הצוות: תצורות, תרשיםים, תקנונים
לאחר אינטגרציה של Hummingbot הצוות נשאר לא עם ״קופסה שחורה״, אלא עם מכלול ארטיפקטים שלפיהם אפשר לפתח את המערך, למסור אותו למהנדס אחר או לשחזר אותו לאחר תקלה. להלן ההרכב המינימלי שאנחנו מכסים בכל פרויקט מרקט-מייקינג.
- תצורות אסטרטגיות — קובצי פרמטרים עובדים: ספרדים, גדלים ועומק ציטוטים, לימיטים של פוזיציה, מרווחי חישוב מחדש, ולצידם יומן עריכות עם הסבר איזה שינוי הוביל לאיזו התנהגות.
- תרשים מערך המסחר — זרימות הציטוטים וההזמנות בין הצמתים, נקודות כשל, ההתנהגות בעת ניתוק החיבור לבורסה וסדר ההפעלה מחדש ללא עריכה ידנית של פרמטרים.
- מטריצת הרשאות — מי ומאילו כתובות משנה פרמטרים, מי רואה רק מדדים, וכיצד מפתחות מונפקים, מוחלפים ומבוטלים עם עזיבת מהנדס.
- תקנון תגובה לתקלות — מה נחשב לאירוע, מי וכיצד עוצר את האסטרטגיה, כיצד לחזור למערכת הפרמטרים הקודמת ובפרק זמן של כמה.
- חבילת תיעוד — לוגיקת האסטרטגיה, הוראות הפעלה מאפס, סדר הוצאה משירות, היסטוריית שינויים והחלטות שהתקבלו.
- מכלול מדדים וספים — לפי אילו ערכים רואים שהאסטרטגיה סוטה מההתנהגות המצופה ומתי נדרש ניתוח ידני.
כל ארטיפקט אנחנו מוסרים עם בדיקה אצל מהנדס חיצוני: אם לפיו אי אפשר להעלות את המערך בלעדינו — הוא כתוב ברמה לא מספקת.
תרגול בשטח: כיצד נעלם סוג כשל בשוק תנודתי
מרקט-מייקר במספר בורסות עבר למצב ידני בכל התפרצות תנודתיות: הציטוטים סטו מהספרד הייחוסי, חלק מההזמנות נתקעו בין השליחה לאישור, וניתוק החיבור לבורסה השאיר פוזיציות פתוחות ללא השגחה.
בתנועות חדות הפער הגיע לכמה אחוזים מהספרד היעד, עד עשירית מההזמנות נתקעו, ושחזור המערך דרש 20–30 דקות של ניתוח ידני.
מה שינו
בבסיס נותרה אסטרטגיה על Hummingbot, אך מצב הפוזיציה הפסיק להתקיים רק בתוך לוגיקת המסחר. נוסף רישום בלתי תלוי עם אימות מול הבורסה בכל התחברות מחדש, וכל הזמנה קיבלה מזהה לקוח: שליחה חוזרת לאחר ניתוק אינה יוצרת עוד כפילויות ואינה מכפילה את הפוזיציה.
בנפרד סגרנו את הציטוט לפי ספר הזמנות מיושן: כאשר השוק יוצא מהמסלול שנקבע, האסטרטגיה מסירה את ההזמנות ועוברת להשהיה במקום להציב לפי מחיר שגוי. ההתחברות מחדש מתבצעת בהשהיה גדלה והולכת, ובאובדן החיבור המערך קודם מסיר את ההזמנות ורק אחר כך משתחזר.
מה היה בסוף
שיעור ההזמנות התקועות ירד מעשירית לשברי אחוז, פער הציטוטים חזר לגבולות הספרד היעד, ושחזור המערך לאחר ניתוק החיבור נמשך פחות מדקה ומתבצע אוטומטית. התערבויות ידניות בתקופת התצפית — אפס: סוג הכשל ״מצטטים לפי מחיר מיושן לאחר ניתוק״ נעלם יחד עם הניתוחים הידניים.
במערך הופיעו מדדים שלפיהם רואים את ההידרדרות לפני אובדן כסף: פער הספרד, שיעור ההזמנות התקועות, זמן השחזור לאחר ניתוק החיבור.
במה נבדל מרקט-מייקינג בבורסה מארביטראז׳?
מרקט-מייקינג הוא ציטוט: האסטרטגיה מחזיקה הזמנות בשני צדי ספר ההזמנות ומרוויחה מהספרד ומהתגמול על נזילות. ארביטראז׳ מנצל פער: אותו נכס נקנה בזירה אחת ונמכר מיד באחרת. המשותף לשני המצבים הוא רק שכבת הגישה לבורסות — מעבר לכך אלו מערכים שונים בעומס, בסיכון ובדרישות.
| ציר | מרקט-מייקינג | ארביטראז׳ |
|---|---|---|
| מקור התוצאה | ספרד ותגמול על נזילות | פער מחירים בין הזירות |
| סיכון כיוון הפוזיציה | גבוה: המלאי מצטבר נגד התנועה | נמוך: הפוזיציה נסגרת ברגל נגדית |
| דרישות למהירות | רציפות הציטוט | תגובת שיא בחלון קצר |
| עומס על המערך | זרימה אחידה של הזמנות וביטולים | התפרצויות נדירות עם הופעת הפער |
| מתי בוחרים | נדרשת נזילות ומחזור קבועים | הזירות מספקות פער מחירים יציב |
סיכון כיוון הפוזיציה הוא קו פרשת המים המרכזי. המרקט-מייקר מחזיק מלאי באופן קבוע, ולכן במגמה הוא צובר נכס נגד התנועה; מגנים עליו לימיטים על הפוזיציה, הזמנות גידור והרחקת הציטוטים מאזור סכנה.
ארביטראז׳ כמעט אינו מחזיק פוזיציה, אך דורש ביצוע בו-זמני של שתי רגליים: השהיה בזירה אחת הופכת את העסקה למכוונת.
גם למהירות התגובה אופי שונה. עבור המרקט-מייקר חשובה יותר הרציפות — פער בציטוט נראה במחזור ובעסקאות שהוחמצו. ארביטראז׳ זקוק לתגובת שיא בחלון צר, ולכן המערך שלו שוהה בהמתנה להתפרצות.
ארביטראז׳ נבחר היכן שהנזילות מפוזרת בין הזירות ושהפערים חוזרים בצורה צפויה. ב-Hummingbot שני המצבים נבנים מעל שכבת חיבורים משותפת לבורסות, ולכן הבחירה באסטרטגיית מסחר היא שאלה של תצורה ולימיטי סיכון, ולא של כתיבה מחדש של האינטגרציה.
שאלות טכניות שנשאלות לפני ההתחלה
לפני ההתחלה צוותי הנדסה שואלים לא ״האם זה עובד״, אלא על עמידות: מה יקרה בניתוק החיבור לבורסה, כיצד לא להכפיל הזמנות בהתחברות מחדש, כיצד לעמוד בלימיטים של בקשות והיכן נמצאים מפתחות הגישה. להלן התשובות כפי שמקומות אלה נפתרים במימוש שלנו.
מה יקרה להזמנות בעת ניתוק החיבור לבורסה?
לאחר כל ניתוק המחבר מאמת את המצב בפועל: הזמנות פתוחות ויתרות נמשכות מהבורסה, והאסטרטגיה ממשיכה לעבוד מהן, ולא מהרשומה האחרונה בזיכרון. כל הזמנה מקבלת מזהה בצד שלנו, המותאם לזה הבורסאי, ולכן לפני ההצבה נבדק אם אין כבר הזמנה פעילה באותו זוג ובאותו צד. בעת פסק זמן במקום אישור, הבקשה אינה חוזרת על עצמה באופן עיוור — תחילה נשאל מצב החשבון.
כיצד לעמוד בלימיטים של בקשות הבורסה?
הלימיטים נלקחים בחשבון ברמת המחבר: תור בקשות והגבלת קצב לכל מתודה עם מרווח לעומס שיא. עם ההתקרבות לסף, האסטרטגיה מפחיתה את קצב החישוב מחדש — חסימה מצד הבורסה חוסמת את כל הבקשות בבת אחת, כולל אלו הנדרשות לביטול הזמנות.
היכן נשמרים מפתחות הגישה לחשבון?
המפתחות נמצאים באחסון מאובטח ומגיעים לתהליך רק בעת ההפעלה, דרך משתני סביבה; בתצורה ובלוגים הם אינם קיימים. הרשאות ה-API מוגבלות למסחר ללא משיכת כספים, והגישה לאחסון ניתנת בתפקיד בצד התשתית, ולא בקובץ משותף על השרת.
האם אפשר לבדוק את האסטרטגיה לפני חשבון אמיתי?
ההרצה מתבצעת בשלושה שלבים: נתונים היסטוריים, מערך בדיקה של הבורסה עם השהיות ותגובות אמיתיות, ואז חשבון בנפח מינימלי. בכל שלב נבאים הספרד, שיעור ההזמנות שבוצעו, מספר הביטולים והירידה המקסימלית בפוזיציה — לפיהם רואים אם האסטרטגיה מתנהגת כמתוכנן.
נדון במשימה: נשלח תרשים, הערכה ותוכנית עבודה
כדי לחזור עם הערכה ותוכנית, ולא עם ניסוחים כלליים, עלינו לבחון את המערך הנוכחי: היכן מופעלים הבוטים, אילו בורסות וזוגות מחוברים, כיצד בנויים המפתחות, הלימיטים ותיעוד העסקאות, ואילו מדדים כבר נאספים. לשם כך די בשיחת טלפון קצרה ובגישה לתצורות — את התרשים אנו מתארים בהמשך. להלן הסדר שלפיו מתנהלת העבודה; הוא גם הופך לתוכן העניינים של התוכנית.
- ניתוח המערך: אסטרטגיות נוכחיות, אופני הצבת ההזמנות, תדירות ההערכה מחדש, הטיפול בניתוקי חיבור והסטטיסטיקה המצטברת של הביצוע.
- תרשים האינטגרציה: כיצד Hummingbot מתייצב לצד הבורסות ומערכות החשבונאות שלכם, היכן עוברים המפתחות, ואילו לימיטים ומפסקים מגבילים את גודל הפוזיציה.
- הערכת לוחות זמנים: שלבים עם נקודות שבהן אפשר לעצור או לשנות סדרי עדיפויות, ותלויות מפורשות באישורים חיצוניים.
- הפעלת פיילוט: זוג מוגבל ונפח קטן, אימות עסקאות בפועל מול הצפויות, ובדיקת ההתנהגות בעת תקלות וביצוע חלקי.
- אסטרטגיות בהתאמה אישית: כללי כניסה ויציאה, פרמטרי סיכון, לוגיקת ביטול והצבה מחדש של הזמנות, ובדיקות על נתונים היסטוריים.
- ליווי מערך המסחר: ניטור, ניתוח אירועים, כיוונון פרמטרים עם שינוי הנזילות ועדכונים מצד הבורסה.
- מסירה: תצורות, תיעוד להפעלה ולשחזור, והוראות לצוות שלכם.
תארו את המשימה בשתיים-שלוש משפטים — לפי סעיפים אלה נחזור עם הערכת לוחות זמנים ותוכנית עבודה.







