כל המאמרים
בוט מסחראלגו טריידינגAPIמסחר אוטומטיPython

איך עובד בוט מסחר בבורסה? הסבר טכני שלב אחר שלב

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

בוט מסחר עובד בלולאה שחוזרת ללא הפסקה: (1) מקבל נתוני שוק, (2) בודק תנאי כניסה לפי הלוגיקה שהגדרתם, (3) שולח פקודת קנייה או מכירה לברוקר דרך API. כל בוט — פשוט או מורכב — בנוי מאותם חמישה מרכיבים: מקור נתונים, מנוע החלטות, שכבת ביצוע, ניהול סיכון, ולוג. המאמר הזה פורס כל אחד מהם עם קוד Python אמיתי.


מה מרכיב בוט מסחר — חמישה חלקים שכל בוט חייב

כל בוט מסחר, ללא יוצא מן הכלל, בנוי מחמישה מרכיבים שפועלים ברצף:

  1. Data Feed — מקבל נתוני שוק בזמן אמת
  2. Decision Engine — מחליט מה לעשות לפי הנתונים
  3. Execution Layer — מוציא פקודה לברוקר דרך API
  4. Risk Manager — שומר על Stop Loss וגודל פוזיציה
  5. 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, לוגים, שרת ענן — זה בדיוק מה שבונים בקורס שלנו מאפס, עם קוד שרץ. השאירו פרטים כאן ונחזור אליכם בלי לחץ.


קישורים רלוונטיים


שאלות נפוצות

האם הבוט יכול לסחור 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 לסגירה דחופה.

רוצה לבנות בוט כזה בעצמך?

שיחה קצרה של 20 דקות. בלי לחץ, בלי התחייבות.

דברו איתנו חינם