איך עובד בוט מסחר בבורסה? הסבר טכני שלב אחר שלב
הסבר טכני-פשוט: איך בוט מסחר מקבל נתוני שוק, מחליט מה לקנות ומוציא פקודות לברוקר — שלב אחר שלב, עם קוד Python אמיתי.
בוט מסחר עובד בלולאה שחוזרת ללא הפסקה: (1) מקבל נתוני שוק, (2) בודק תנאי כניסה לפי הלוגיקה שהגדרתם, (3) שולח פקודת קנייה או מכירה לברוקר דרך API. כל בוט — פשוט או מורכב — בנוי מאותם חמישה מרכיבים: מקור נתונים, מנוע החלטות, שכבת ביצוע, ניהול סיכון, ולוג. המאמר הזה פורס כל אחד מהם עם קוד Python אמיתי.
מה מרכיב בוט מסחר — חמישה חלקים שכל בוט חייב
כל בוט מסחר, ללא יוצא מן הכלל, בנוי מחמישה מרכיבים שפועלים ברצף:
- Data Feed — מקבל נתוני שוק בזמן אמת
- Decision Engine — מחליט מה לעשות לפי הנתונים
- Execution Layer — מוציא פקודה לברוקר דרך API
- Risk Manager — שומר על Stop Loss וגודל פוזיציה
- Logger — מתעד הכל ושולח התראות
מקור נתונים (Data Feed) — הדלק של הבוט
בלי נתונים — אין החלטות. הבוט צורך נתוני שוק מ-API של הברוקר (Alpaca, IBKR) או ספק ייעודי כמו Polygon.io. הנתונים מגיעים בשני פורמטים: streaming (כל עסקה ברגע שמתבצעת) או OHLCV — פתיחה, שיא, שפל, סגירה ונפח לכל נר. בוטים ביתיים עובדים לרוב עם OHLCV על נר יומי או שעתי.
מנוע ההחלטות (Decision Engine) — איפה יושבת האינטליגנציה
הלב של הבוט. מקבל DataFrame של נתוני מחיר, מחשב אינדיקטורים, בודק תנאים, ומחזיר החלטה: קנה / מכור / המתן. כל האינטליגנציה של הבוט נמצאת כאן — שאר המרכיבים רק מגישים ומבצעים.
מאיפה הבוט מקבל נתוני שוק — ומה ההבדל בין המקורות
נתוני מחיר ונפח — מה כל בוט צריך לכל הפחות
כל בוט צורך לפחות:
- OHLC — פתיחה, שיא, שפל, סגירה
- Volume — כמה יחידות נסחרו
- Bid/Ask Spread — הפרש מחירים רגעי
yfinance מספק נתונים היסטוריים חינם. לנתוני זמן אמת, Alpaca Markets מציעה WebSocket streaming ללא עלות:
import alpaca_trade_api as tradeapi
api = tradeapi.REST(API_KEY, SECRET_KEY, BASE_URL)
bars = api.get_bars("AAPL", "1Day", limit=50).df
נתונים חלופיים (סנטימנט, חדשות) — שלב מתקדם בלבד
בוטים מתקדמים צורכים גם סנטימנט חדשות, ציוצי Twitter ודוחות רווח. למתחילים — נתוני מחיר ונפח מספיקים לחלוטין. אל תסבכו את המערכת לפני שהבסיס עובד.
איך הבוט מחליט מתי לקנות — אינדיקטורים ותנאי כניסה
אינדיקטורים טכניים שכל בוט ביתי משתמש בהם
| אינדיקטור | מה הוא מודד | שימוש נפוץ | |-----------|------------|-----------| | RSI | עוצמת מומנטום (0-100) | קנייה מתחת ל-30, מכירה מעל 70 | | Moving Average | ממוצע מחיר לתקופה | חציית MA קצר את MA ארוך = אות | | MACD | הפרש בין שני ממוצעים | חציית קו האות = כיוון תנועה | | ATR | תנודתיות ממוצעת | קביעת גודל Stop Loss | | Volume Ratio | נפח יחסי לממוצע | אישור עוצמת תנועה |
ספריית pandas-ta מחשבת את כולם בשורה אחת:
import pandas_ta as ta
df["rsi"] = ta.rsi(df["close"], length=14)
df["macd"] = ta.macd(df["close"])["MACD_12_26_9"]
תנאי כניסה ויציאה — הקוד שמחליט קנה או לא
לאחר חישוב האינדיקטורים, הבוט בודק האם כל התנאים מתקיימים יחד:
def should_buy(df):
last = df.iloc[-1]
return (
last["rsi"] < 35 and # מומנטום חלש — פוטנציאל לחזרה
last["volume_ratio"] > 1.5 and # נפח גבוה מהממוצע
last["close"] > last["ma_50"] # מעל ממוצע 50 יום
)
תנאי יציאה עובדים בכיוון ההפוך — או דרך Stop Loss ו-Take Profit שמוגדרים ישירות בפקודה לברוקר.
איך הבוט שולח פקודה לברוקר — API ופקודות מסחר
מה זה API ולמה בלעדיו הבוט לא קיים
API הוא הגשר בין הקוד לברוקר. במקום ללחוץ על כפתור, הבוט שולח בקשת HTTP לשרת הברוקר — והברוקר מבצע. בלי API פתוח — אין בוט. זו הסיבה ש-Alpaca ו-Interactive Brokers הם הנפוצים ביותר בקרב מפתחי בוטים: שניהם מספקים API מלא ומתועד.
api.submit_order(
symbol="AAPL",
qty=10,
side="buy",
type="limit",
limit_price=182.50,
time_in_force="day"
)
Market, Limit, Stop — איזו פקודה מתי ולמה
Market Order — מתמלא מיידית במחיר השוק. מהיר, בלי שליטה במחיר הסופי. מתאים לנכסים נזילים.
Limit Order — מתמלא רק במחיר שהגדרתם. מדויק, אך לא מובטח שיתמלא.
Stop Order — מופעל כשהמחיר פוגע ברמה מוגדרת. הכלי העיקרי ל-Stop Loss: "אם ירד ל-175 — מכור אוטומטית."
רוב הבוטים: Limit לכניסות, Stop לניהול סיכון.
ניהול סיכון בתוך הבוט — מה מגן על ההון שלכם
Stop Loss ו-Take Profit: למה חייבים לשלוח אותם עם הפקודה
בוט ללא ניהול סיכון מובנה יכול למחוק חשבון בלילה אחד. ה-Bracket Order שולח שלוש פקודות יחד — כניסה, Stop Loss, ו-Take Profit — והברוקר מטפל בהן אוטומטית, גם אם הקוד שלכם קורס:
api.submit_order(
symbol="AAPL",
qty=10,
side="buy",
type="limit",
limit_price=182.50,
order_class="bracket",
stop_loss={"stop_price": 178.00}, # הפסד מקסימלי ~2.5%
take_profit={"limit_price": 190.00} # יעד רווח ~4%
)
Position Sizing — כמה מניות לקנות בכל עסקה
הכלל: לא יותר מ-1-2% מהתיק לעסקה אחת. הפונקציה הבאה מחשבת כמות כך שאם ה-Stop יפעל — תפסידו בדיוק את אחוז הסיכון שהגדרתם:
def calculate_position_size(portfolio_value, risk_pct, entry, stop_loss):
risk_amount = portfolio_value * risk_pct
price_risk = entry - stop_loss
return int(risk_amount / price_risk)
לוגים והתראות — איך יודעים מה הבוט עשה
מה חייבים לתעד בכל עסקה
בוט שלא מתעד — הוא בוט עיוור. לוג טוב כולל:
- Timestamp — מתי בדיוק
- Symbol — על איזה נכס
- Signal — ערכי האינדיקטורים שהובילו להחלטה
- Order ID — מזהה הפקודה בברוקר
- Status — התמלאה? בוטלה? חלקית?
- P&L — רווח/הפסד לאחר סגירה
קובץ CSV מספיק לתחילה. בהמשך אפשר לעבור ל-SQLite או דשבורד Streamlit.
התראות Telegram — לדעת בזמן אמת מבלי לפתוח מסך
✅ נכנסנו: AAPL × 10 @ $182.45
🛑 Stop Loss: $178.00
🎯 Take Profit: $190.00
הגדרה לוקחת 15 דקות — וחוסכת מעקב ידני כל שעה.
שרת ענן או מחשב ביתי — איפה הבוט אמור לרוץ
למה מחשב ביתי לא מתאים לבוט מסחר
הבוט חייב לפעול 24/7 — גם כשאתם ישנים. מחשב ביתי: חשמל נופל, אינטרנט נקטע, Windows מאתחל אחרי עדכון. עסקה שהחמצתם כי המחשב כבה עולה יותר משנה שלמה של שרת ענן.
עלות ואמינות — כמה עולה שרת שמריץ בוט
| פתרון | עלות חודשית | Uptime | |-------|------------|--------| | מחשב ביתי | $0 | נמוכה | | Hetzner VPS (CX11) | ~$4 | 99.9% | | DigitalOcean Droplet | $6 | 99.99% | | AWS EC2 t3.micro | $8–$12 | 99.99% |
שרת Ubuntu עם 1GB RAM מספיק לרוב הבוטים. Hetzner הוא מחיר-ביצועים הטוב ביותר לסוחרים פרטיים.
רוצים לבנות בוט כזה בעצמכם?
כל מה שתיארנו — Data Feed, Decision Engine, API, Bracket Orders, Position Sizing, לוגים, שרת ענן — זה בדיוק מה שבונים בקורס שלנו מאפס, עם קוד שרץ. השאירו פרטים כאן ונחזור אליכם בלי לחץ.
קישורים רלוונטיים
- מה זה בוט מסחר אוטומטי — הסבר בסיסי למתחילים — הקדמה לעולם הבוטים: סוגים, שימושים, ומי זה מתאים לו — לפני שמתחילים לתכנת
- Backtesting — איך בודקים אסטרטגיה לפני שמסתכנים בכסף — הצעד הבא לאחר שמבינים איך הבוט עובד: בדיקת האסטרטגיה על נתונים היסטוריים
- המדריך השלם לבניית בוט מסחר AI — 8 שלבים — מהגדרת אסטרטגיה ועד עסקה ראשונה בחשבון אמיתי
שאלות נפוצות
האם הבוט יכול לסחור 24/7?
תלוי בנכס. מניות אמריקאיות פתוחות 09:30-16:00 ET בלבד. קריפטו — 24/7. הבוט רץ תמיד, אך מבצע עסקאות רק כשהשוק פתוח.
מה קורה אם ה-API של הברוקר נופל?
פקודות חדשות לא ישלחו, אבל פוזיציות קיימות נשארות עם ה-Stop Loss שהוגדר בברוקר. לכן Stop Loss חייב להיות בפקודת הכניסה — לא בקוד שתלוי בחיבור.
כמה עסקאות בוט יכול לבצע ביום?
בוט EOD: 1-10 עסקאות. Intraday: עשרות. HFT מוסדי: מיליוני עסקאות — אך דורש תשתית שונה לחלוטין מבוט Python ביתי.
האם הבוט יכול לסחור גם באופציות?
כן, אם הברוקר תומך (IBKR כן). הלוגיקה דומה, אבל ניהול הסיכון מורכב יותר — מומלץ רק לאחר שבוט המניות פועל יציב.
מה ההבדל בין Market Order ל-Limit Order בבוט?
Market מתמלא מיידית במחיר השוק, ללא שליטה במחיר. Limit מתמלא רק במחיר שהגדרתם — מדויק אך לא מובטח. רוב הבוטים: Limit לכניסה, Stop-Market לסגירה דחופה.