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

AI Trading Ranked

עודכן: 2026-10-27

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

מה מצדיק בנייה עצמית?

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

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

בחרו ממשק לפי יכולת מתועדת

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

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

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

הפרידו רכיבים שניתן לבדוק

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

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

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

תרגיל: מעל הממוצע לעומת חצייה חדשה

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

def crossed_above(previous, current):
    if not previous["closed"] or not current["closed"]:
        return None
    return (
        previous["close"] <= previous["average"]
        and current["close"] > current["average"]
    )

a = {"closed": True, "close": 99, "average": 100}
b = {"closed": True, "close": 101, "average": 100.5}
c = {"closed": True, "close": 102, "average": 101}
assert crossed_above(a, b) is True
assert crossed_above(b, c) is False
assert crossed_above(a, dict(b, closed=False)) is None
print("synthetic observation checks passed; no orders")

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

פקודות, כפילויות והפעלה מחדש

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

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

בדיקה היסטורית וניטור

שמרו קבוצת בדיקה שלא משמשת לכוונון. בדקו דליפת מידע עתידי, הטיית הישרדות, עמלות, החלקה ותקופות שוק שונות. ב־walk-forward אפשר לכוונן בחלון מוקדם ולבדוק בחלון הבא; חזרה על כוונון לפי תוצאות הבדיקה עדיין יוצרת הטיה.

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

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

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

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