למה אינטגרציית Freqtrade נתקעת בתשתית
מסחר אלגוריתמי לא נשבר באסטרטגיה. האות מחושב באופן מיידי, אבל לאמת שההזמנה באמת נכנסה לספר הפקודות, לשרוד ניתוק תקשורת ולא לאבד פוזיציה — זו כבר משימה של תשתית. אינטגרציית Freqtrade מתחילה בדיוק היכן שמסתיימת בדיקת האסטרטגיה על היסטוריה: במפגש בין לוגיקת המסחר לחשבון אמיתי.
צוואר הבקבוק הראשון — ניתוק החיבור לבורסה. כל עוד הערוץ פעיל, מצב הפוזיציות המחושב וזה שבפועל בחשבון תואמים. די בכך שהקשר ייעלם לכמה שניות, וההזמנה שנשלחה נשארת תלויה, בעוד המנוע חושב שההזמנה לא נשלחה. באיטרציה הבאה הלוגיקה מקבלת החלטה לפי יתרה שגויה — ופותחת פוזיציה שנייה במקום שבו אמורה להיות אחת.
השני — אי-התאמה בפוזיציות לאחר כניסות ידניות לעסקה. הסוחר רואה הזדמנות ונכנס ביד, והאוטומציה לא יודעת על העסקה הזו. חישוב הסיכון, הסטופים והמחיר הממוצע שלה נעשה שגוי, וכל סגירה אוטומטית הופכת להגרלה.
השלישי — היעדר שליטה על הביצוע. ביצועים חלקיים, הזמנות שבוטלו, שינוי לימיטים מצד הבורסה מזיזים את הפוזיציה בפועל ביחס לזו המחושבת. לכן חיבור מערכת מסחר לבורסה הוא прежде всего התאמת מצב, טיפול בכשלי רשת והפרדה בין פעולות ידניות לאוטומטיות, ולא הפעלה של תהליך.
נסביר איך זה נסגר.
מה נותן מסחר מקושר: אפקט בגדלים מדידים
מעגל מקושר — זה כשאסטרטגיה, ביצוע ובקרת סיכון עובדים כמערכת אחת, ולא כאוסף של פעולות ידניות. להלן — מה בדיוק משתנה בגדלים מדידים ולפי אילו מדדים זה נמדד.
- חלק ההחלטות האוטומטיות. האוטומציה סוגרת את כל המסלול מהאות ועד להזמנה ולליווי הפוזיציה; ביד נשארים רק שינוי מגבלות סיכון ומשיכת כספים.
- מהירות תגובה לאירוע שוק. האות הופך להזמנה בשברירי שנייה — במקום שבו אדם מגיב בדקות ובדרך כלל כבר אחרי תנועת המחיר.
- זמן התאוששות לאחר תקלה. המעגל עולה עם שחזור מצב הפוזיציות הפתוחות בדקות, ולא בשעות של התאמה ידנית.
- סוג הכשלים שנעלם. אות שהוחמץ בגלל עיסוק, טעות בנפח ההזמנה, אובדן קשר עם הבורסה בלי התראה — כשלים אלה מפסיקים להיות אפשריים כסוג.
- שקיפות הביצוע. יומן העסקאות והסטייה של מחיר הביצוע בפועל מהמחושב נראים במקום אחד, ולא נאספים מדוחות מיוצאים.
כדי שאפקט האוטומציה של המסחר יהיה ניתן לבדיקה, בהתחלה מתעדים ערכי יעד לכל שורה — אחרת נשארים סיסמאות. את המעגל בונים על Freqtrade, את המעטפת וכללי הסיכון כותבים לפי התקנון שלכם.
מצבי עבודה: בורסה ישירות, שער ביניים, שרת משלכם
מצב החיבור קובע לא את מהירות ההפעלה, אלא את התנהגות המערכת בעת ניתוק תקשורת. לוגיקת המסחר יכולה לחיות על אותו מארח שבו נמצאים מפתחות הבורסה, על שרת ייעודי ליד הבורסה, או מאחורי שכבה מתווכת שמקבלת אותות ומעבירה אותם לביצוע.
ההבדל ניכר ברגע התקלה: היכן נשמר מצב הפוזיציה, האם ההזמנה תחזור לאחר התחברות מחדש, ומי הראשון שיבחין בפער.
אינטגרציית Freqtrade מתחילה בדיוק בבחירת הסכימה הזו — ממנה תלויים גם מבנה האסטרטגיה וגם הניטור. להלן האפשרויות שביניהן באמת בוחרים בעת הפעלת מסחר אלגוריתמי.
| מצב עבודה | מתי מתאים | מגבלות |
|---|---|---|
| חיבור ישיר לבורסה, הפעלה מקומית של האסטרטגיה | אסטרטגיה אחת, שוק אחד, התחלה מהירה והרצת בדיקה בלי הזמנות אמיתיות | המפתחות נמצאים ליד הבוט; כשהמארח נופל, הפוזיציה הפתוחה נשארת בלי ניהול; אין תור אותות ושליחה חוזרת של הזמנה |
| שער ביניים לאותות | כמה אסטרטגיות או בורסות, צריך להפריד בין חישוב לביצוע | מתווספת השהיה בהעברת האות; נדרש ניטור תור והגנה מכפילויות בהפעלה מחדש; החזרה לאחור נוגעת בשני שירותים |
| שרת ביצוע משלכם ליד הבורסה | מצב קבוע, מגבלות על קצב בקשות, דרישה להחזיק פוזיציות בשוק | נדרשים תחזוקה, עדכונים ותורנות; גיבוי מצב נעשה בנפרד; דרישות גבוהות יותר להגנת מפתחות |
מגבלה משותפת לכל המצבים היא אחת: מצב המסחר חייב להשתחזר לאחר הפעלה מחדש בלי שכפול הזמנות. לכן בקונפיגורציה מתעדים לפי מה מאמתים את הפוזיציה בפועל, איך מגבילים את קצב הבקשות לבורסה ומה נחשב לסיום חירום — הבוט או משלים את הפוזיציה לפי הכללים, או סוגר אותה ועוצר.
שלבי הטמעת אינטגרציית Freqtrade: מביקורת ועד מסירה
את שלבי ההטמעה בונים כך שכל שלב נשען על התוצאה של הקודם: תחילה מתעדים את מצב לוגיקת המסחר וההרשאות, אחר כך מרכיבים את סכימת החיבורים ורק לאחר מכן רואים את האסטרטגיה מוכנה לכספים אמיתיים.
- ביקורת לוגיקת המסחר. מפרקים את כללי הכניסה והיציאה, את העבודה עם סטופים וגודל הפוזיציה, ואת ההתנהגות בתנועות חדות. בפלט — רשימת הנחות שאין להעביר למצב אוטומטי בלי בדיקה.
- סכימת חיבורים. מתעדים את מקורות נתוני השוק, את אופן הגישה לבורסה, ואת מקומות אחסון הקונפיגורציות והלוגים. מפתחות מונפקים עם הרשאות מוגבלות, בלי אפשרות למשיכת כספים.
- הגדרת סביבה. פורסים את הבוט במעגל מבודד: מופע נפרד, ספריות נתונים משלו, שמירת מצב העסקאות בין הפעלות מחדש. הרצת בדיקה לא נפגשת עם סביבת הייצור.
- בדיקה על נתונים היסטוריים. מריצים את האסטרטגיה על קטע ארוך של ציטוטים תוך התחשבות בעמלות ובהחלקה, בודקים ירידה מקסימלית והתפלגות עסקאות. חלשות ביחס רווח לסיכון מוחזרות לשיפור.
- בדיקה במעגל בדיקות. מעבירים למצב הרצה יבשה עם ציטוטים חיים: הפעלת הזמנות, מגבלות הבורסה, התנהגות בעת ניתוק קשר והתחדשות לאחר תקלה.
- מסירה להפעלה. מרימים את מעגל הייצור, מגדילים בהדרגה את נפח הפוזיציות, מגדירים התראות על תקלות ותקנון עצירה חירום, ומוסרים תיעוד של קונפיגורציה ושחזור.
כל שלב נסגר בדוח: מה בדקנו, אילו מגבלות מצאנו, מה נשאר תחת בקרה. לחזור שלב אחורה זול יותר מאשר לפרק את התנהגות הבוט בעסקאות חיות.
קונפיגורציות, מפתחות גישה ותקנונים: מה מוסרים לאחר המסירה
בסיום אינטגרציית Freqtrade אנחנו מוסרים לא "בוט עובד", אלא ערכה שלפיה הצוות שלכם מפעיל, משנה ומתחזק את המערכת בלעדינו. להלן — מה נכנס לריפוזיטורי ולבסיס הידע הפנימי ביום המסירה.
- קובצי קונפיגורציה — פרופילים נפרדים למעגל בדיקות ולמעגל עבודה, מפתחות רק דרך משתני סביבה, תבנית עם תיאור של כל פרמטר.
- הפרדת הרשאות גישה — תפקידים "צופה", "מפעיל אסטרטגיות", "מנהל"; המפעיל לא משנה מגבלות סיכון וגודל פוזיציה.
- רוטציית מפתחות — מפתחות בורסה בלי הרשאת משיכת כספים ועם הצמדה לכתובת, לוח זמנים להחלפה מתוכננת ותרחיש שלילה במקרה דליפה.
- תיעוד אסטרטגיות — לכל אחת: לוגיקת כניסה ויציאה, אינדיקטורים, על איזה קטע היסטוריה נבדקה, באילו תנאים מנותקת.
- תקנון תחזוקה — בדיקות יומיות של טריות נתונים וסטטוס הזמנות, בדיקות שבועיות — שלמות היסטוריית עסקאות וגיבויים, סדר פעולות בעת עצירת התהליך.
- סכימת אינטראקציה — רכיבים, זרמי נתונים, נקודות כשל וסדר התערבות ידנית.
- יומן שינויים — מה ומתי תוקן, כדי שבבירור תקרית תהיה ניתנת לשחזור כל שרשרת ההחלטות.
מסיימים במסירת הרשאות ובהרצת בקרה במעגל הבדיקות: את מעגל העבודה אתם מפעילים בעצמכם, ואנחנו נשארים בקשר לפי תקנון מוסכם.
מקרה בוחן: איך מסחר ידני הועבר לכללים אוטומטיים
לפני ההעברה, המסחר נוהל על ידי אדם אחד: 5–6 כלים, אותות חושבו לפי אינדיקטורים בטרמינל, כניסה ויציאה — ביד. בקטע של שלושה שבועות מתוך 40+ אותות, שליש נשאר בלי מימוש: חלקם נפלו על לילה וסופי שבוע, חלקם אבדו בזמן שהסוחר ניהל עסקה אחרת. ההשהיה הממוצעת בין האות לכניסה — דקות, והכלל כבר לא נתן את יחס הסיכון-סיכוי שלפיו חושב.
את הכללים תיארו פורמלית: תנאי כניסה ויציאה, סטופ, גודל פוזיציה, מגבלת עסקאות במקביל. אותם העבירו לקונפיגורציה של Freqtrade והריצו על היסטוריה — כך סוננו כללים שבמצב ידני "עבדו", אבל על קטע ארוך נתנו ירידה. לאחר מכן האוטומציה הופעלה במקביל למסחר הידני במצב צפייה, ופערים נותחו לפי היומן עד שההחלטות התאימו.
לאחר ההעברה, חלק האותות שמומשו — 100% במקום 65–70%, השהיית הכניסה — שניות במקום דקות, פעולות ידניות ביום — מ-25–30 ל-2. גם סוג השגיאות השתנה: כניסות מחוץ לכללים נעלמו, כי כל עסקה נכתבת ליומן יחד עם הסיבה.
היומן נתן אפקט לוואי: רואים איזה כלל מושך את התוצאה למטה, ולכן מכבים תנאי אחד, ולא את כל האסטרטגיה. את המדדים מדדו לפני ואחרי על אותו קטע ובאותה מתודולוגיה — מספר עסקאות, חלק האותות שמומשו, השהיית כניסה, ירידה מקסימלית לכל זוג.
מה לעשות אם מערכת המסחר כבר פרוסה על השרת שלכם?
מערכת עובדת היא לא רק קוד האסטרטגיה, אלא המצב שלה: פוזיציות פתוחות, הזמנות שהוצבו ולא בוצעו, היסטוריית עסקאות, תמונת מצב של היתרה ופרמטרי ניהול סיכון. לכן ההעברה מתחילה לא בהעתקת קבצים, אלא בלקיחת תמונת מצב מוסכמת של המצב הזה ממש בזמן המסחר.
אין צורך לעצור את הבוט לשם כך. אנחנו מתעדים תמונת מצב של המצב והקונפיגורציה, פורסים Freqtrade לצדו על שרת היעד ומפעילים במצב בלי הצבת הזמנות אמיתיות: המערכת קוראת את אותם נתוני שוק ומייצרת אותות.
השוואת האותות עם המעגל הנוכחי לאורך כמה סשנים של מסחר מראה אם חישובי האינדיקטורים, טווחי הזמן ולוגיקת הכניסות תואמים.
אם אין פערים, מתחילה החלפה הדרגתית: עסקאות חדשות פותחת כבר המערכת החדשה, ופוזיציות שנצברו במערכת הישנה מנוהלות לפי הכללים הקודמים עד לסגירה. החלוקה נעשית לפי זוגות מסחר או לפי נפח, אחרת אותה פוזיציה תיפתח פעמיים — זה הסיכון המרכזי בהפעלה מקבילה.
הרשאות מעבירים בנפרד: מפתחות לבורסה מונפקים עם הרשאת מסחר, אבל בלי הרשאת משיכת כספים, והמעגל הקודם נשאר בגיבוי חם. אם העסקאות הראשונות מראות סטייה מההתנהגות הצפויה, החזרה לוקחת דקות — ההיסטוריה, הפוזיציות והדיווח נשמרים בשתי המערכות.
ספקות טכניים: עומס, גישות לבורסה, ניתוקי קשר
Freqtrade עצמו הוא תהליך אחד שמנהל עשרה זוגות מסחר: על השרת זה כמעט בלתי מורגש, צוואר הבקבוק אינו במעבד אלא במגבלות של API הבורסה. מספר הבקשות בדקה לכל מפתח מגביל לפני שמגבילים משאבי המכונה, לכן קצב סקירת הנרות והיתרה נקבע בנפרד מקצב הצבת ההזמנות.
הרשאות מחזיקים מחוץ לריפוזיטורי: מפתח רק עם הרשאת מסחר, בלי משיכת כספים והעברות, עם הצמדה ל-IP של השרת. מצב — פוזיציות פתוחות, סטופים, היסטוריית עסקאות — נכתב למסד נתונים מקומי, לכן לאחר ניתוק קשר או הפעלה מחדש התהליך משחזר את הפוזיציה ממנו, ולא פותח כפילות.
מה יקרה אם הקשר עם הבורסה ינותק לכמה דקות?
מחזור המסחר עובר להמתנה וחוזר על החיבור בהשהיה הולכת וגדלה. ברגע שהערוץ חזר, המצב נבדק מול זה של הבורסה: אילו פוזיציות באמת פתוחות, אילו הזמנות בוצעו. סטופי הגנה לזמן הזה נשארים בצד הבורסה, לכן הפוזיציה לא נשארת בלי השגחה.
איך לוודא שהאסטרטגיה עובדת, ולא מותאמת בדיעבד להיסטוריה?
תחילה הרצה על נתונים היסטוריים לאורך כמה מחזורי שוק — עם ירידות חדות, תקופות של נזילות נמוכה, עמלה והחלקה. לאחר מכן מסחר במצב צפייה בלי הזמנות אמיתיות: הפער בין אותות מחושבים לאותות בפועל מראה את ההבדל בין המודל לבורסה החיה. חשבון אמיתי מפעילים עם נפח מינימלי לעסקה ומשווים את הביצוע בפועל לזה הצפוי.
תארו את המשימה — נחזור עם הערכה ותוכנית עבודה
כדי לדון במשימה ולחזור עם הערכת לוחות זמנים ותוכנית עבודה לאינטגרציית Freqtrade, אין צורך במפרט טכני מוכן — מספיק לתאר את הרעיון ולצרף את מה שכבר קיים. ככל שנתוני הבסיס להערכה מפורטים יותר, כך מניחים פחות הנחות בתוכנית, וזה אומר שההערכה הוגנת יותר.
- לוגיקת מסחר: כללי כניסה ויציאה, אינדיקטורים או אירועים שלפיהם האסטרטגיה מקבלת החלטה.
- שווקים וכלים: בורסות, זוגות ספוט או חוזים עתידיים, האם נדרש חישוב מינוף ועמלות.
- מצב עבודה: רק חישוב על היסטוריה, מסחר במצב בדיקות או הוצאת עסקאות לכספים אמיתיים.
- הרשאות: מפתחות בדיקה של הבורסה בלי הרשאת משיכת כספים וגישה לריפוזיטורי, אם יש כבר עבודה קיימת.
- ניהול סיכונים: מגבלה על גודל פוזיציה, סטופ-לוס, ירידה מותרת, התנהגות בעת ניתוק קשר עם הבורסה.
- תשתית והתראות: היכן הבוט רץ, האם נדרש ניטור מצב והתראות למסנג'ר.
אם חלק מהנתונים עדיין לא מוגדר — זה לא חסם: נתעד הנחות בתוכנית ונוודא אותן לפני ההתחלה. בפלט אתם מקבלים פירוט עבודות לפי שלבים, הערכת לוחות זמנים ורשימת בדיקות שיאשרו את תפקוד האסטרטגיה לפני הוצאתה לכספים אמיתיים.







