כל המאמרים
PythonAPIAlpacaמדריך
·נכתב על ידי עדן מרגוליס

חיבור לברוקר עם API — מדריך למתחילים

מדריך מעשי לחיבור בוט מסחר לברוקר דרך API: איך עובד אימות, איך שולחים פקודת קנייה ראשונה ב-Alpaca, ואיך לעבור בבטחה מ-Paper ל-Live.

חיבור בוט מסחר לברוקר דרך API מתבצע בשלושה שלבים: אימות עם מפתחות API, שליחת בקשות למשיכת נתוני חשבון ושוק, ושליחת פקודות קנייה/מכירה. Alpaca היא נקודת ההתחלה הנפוצה ביותר בזכות Paper Trading חינמי ללא הגבלה ותיעוד ברור. המדריך הזה מכסה את החיבור הבסיסי — למידע נוסף על ניהול סיכונים בעת מעבר לכסף אמיתי, ראו שלב 8 במדריך בניית בוט מסחר AI.


אימות עם מפתחות API

כל API של ברוקר עובד באותו עיקרון: מפתח (Key) וסוד (Secret) שמזהים אתכם ומאשרים לבוט לפעול בשמכם. המפתחות האלה לעולם לא נכתבים ישירות בקוד — הם נשמרים בקובץ .env שלא מועלה ל-Git.

# .env
ALPACA_KEY=your_paper_key_here
ALPACA_SECRET=your_paper_secret_here
ALPACA_BASE_URL=https://paper-api.alpaca.markets
import os
from dotenv import load_dotenv
import alpaca_trade_api as tradeapi

load_dotenv()

api = tradeapi.REST(
    key_id=os.getenv("ALPACA_KEY"),
    secret_key=os.getenv("ALPACA_SECRET"),
    base_url=os.getenv("ALPACA_BASE_URL"),
)

בדיקת חשבון וקבלת נתוני שוק

account = api.get_account()
print(f"שווי תיק: ${account.portfolio_value}")
print(f"מזומן זמין: ${account.cash}")

bars = api.get_bars("AAPL", "1Day", limit=100).df

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

שליחת פקודת קנייה ראשונה

order = api.submit_order(
    symbol="AAPL",
    qty=1,
    side="buy",
    type="market",
    time_in_force="day",
)
print(f"פקודה נשלחה: {order.id}, סטטוס: {order.status}")

חשוב: גם עם base_url שמוגדר לחשבון Paper, מומלץ להתחיל עם qty=1 ופקודות בודדות כדי לוודא שכל התהליך עובד כצפוי, לפני שמריצים לוגיקה אוטומטית מלאה.

הוספת Stop Loss ו-Take Profit לפקודה

order = api.submit_order(
    symbol="AAPL",
    qty=10,
    side="buy",
    type="market",
    time_in_force="day",
    order_class="bracket",
    stop_loss={"stop_price": 180.00},
    take_profit={"limit_price": 195.00},
)

פקודת bracket שולחת בבת אחת גם את פקודת הכניסה, גם את Stop Loss, וגם את Take Profit — כך שהבוט לא צריך "לזכור" לשלוח אותם בנפרד, וההגנה קיימת מהרגע הראשון של הפוזיציה.

המעבר מ-Paper ל-Live — שינוי אחד בלבד

# Paper:
base_url = "https://paper-api.alpaca.markets"

# Live (כסף אמיתי):
base_url = "https://api.alpaca.markets"

זה כל ההבדל בקוד — אבל המשמעות עצומה. לפני שמשנים את זה, חשוב לעבור את כל רשימת התיוג בשלב 8 של מדריך בניית בוט מסחר AI: תוצאות Paper Trading עקביות, Stop Loss שעבד בפועל, והתחלה עם 10% מהסכום המתוכנן בלבד.

טיפול בשגיאות בסיסי

try:
    order = api.submit_order(symbol="AAPL", qty=10, side="buy", type="market", time_in_force="day")
except tradeapi.rest.APIError as e:
    print(f"שגיאה בשליחת פקודה: {e}")
    # לוג, התראה, ועצירה בטוחה — לא ניסיון חוזר אוטומטי בלי בדיקה

חיבור API יכול להיכשל מסיבות שונות — רשת, מגבלות קצב (Rate Limits), שוק סגור. בוט שרץ ללא השגחה חייב טיפול בשגיאות שמונע קריסה שקטה או שליחה כפולה של אותה פקודה.

שאלות נפוצות

מה ההבדל בין Alpaca ל-Interactive Brokers מבחינת API?

Alpaca מציעה API מודרני ומתועד היטב שמתאים במיוחד למתחילים ולפרויקטים בפייתון. Interactive Brokers מציעה API מקיף יותר עם גישה לשווקים בינלאומיים, אבל עם עקומת למידה תלולה יותר — ראו מדריך Interactive Brokers לישראלים.

האם מפתחות API של Paper Account שונים ממפתחות Live?

כן, לגמרי נפרדים. חשוב לוודא שהמפתחות והכתובת (base_url) תואמים זה לזה — שילוב שגוי (מפתחות Live עם כתובת Paper או להיפך) יגרום לשגיאת אימות.

מה קורה אם ה-API של הברוקר "נופל" (Downtime)?

זו בדיוק הסיבה שחשוב לכלול טיפול בשגיאות ולוגים בכל פקודה. בוט טוב מזהה שגיאת חיבור, שולח התראה (למשל בטלגרם או אימייל), ולא מנסה לשלוח פקודות שוב ושוב בלי הגבלה.

האם צריך לשמור לוג של כל פקודה שנשלחת?

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

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

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

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