כל המאמרים
מסחר אלגוריתמיRSIMACDאינדיקטוריםמדריך
·נכתב על ידי עדן מרגוליס

RSI ו-MACD — האינדיקטורים הכי נפוצים במסחר אלגוריתמי

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

RSI (Relative Strength Index) מודד את קצב ועוצמת תנועות המחיר בטווח 0-100, ומזהה מצבי קניית/מכירת יתר. MACD (Moving Average Convergence Divergence) משווה בין שני ממוצעים נעים כדי לזהות שינויי מומנטום וטרנד. שני האינדיקטורים בין הנפוצים ביותר במסחר אלגוריתמי — לא כי הם "קסם", אלא כי הם פשוטים לחישוב, מתועדים היטב, ומודדים שני היבטים שונים ומשלימים של תנועת מחיר.


RSI — חישוב ופרשנות

import pandas as pd

def calculate_rsi(prices: pd.Series, period: int = 14) -> pd.Series:
    delta = prices.diff()
    gain = delta.where(delta > 0, 0).rolling(period).mean()
    loss = -delta.where(delta < 0, 0).rolling(period).mean()
    rs = gain / loss
    return 100 - (100 / (1 + rs))

df["rsi"] = calculate_rsi(df["Close"])

RSI נע בין 0 ל-100. ערך מתחת ל-30 נחשב באופן מסורתי "מכירת יתר" (Oversold) — סימן אפשרי להיפוך כלפי מעלה. ערך מעל 70 נחשב "קניית יתר" (Overbought) — סימן אפשרי להיפוך כלפי מטה. חשוב: אלה לא קביעות מוחלטות — במניה עם מומנטום חזק, RSI יכול להישאר מעל 70 לתקופה ארוכה בלי היפוך.

MACD — חישוב ופרשנות

def calculate_macd(prices: pd.Series, fast=12, slow=26, signal=9):
    ema_fast = prices.ewm(span=fast).mean()
    ema_slow = prices.ewm(span=slow).mean()
    macd_line = ema_fast - ema_slow
    signal_line = macd_line.ewm(span=signal).mean()
    histogram = macd_line - signal_line
    return macd_line, signal_line, histogram

df["macd"], df["macd_signal"], df["macd_hist"] = calculate_macd(df["Close"])

קו ה-MACD (ההפרש בין שני הממוצעים הנעים) חוצה מעל קו האיתות (הממוצע הנע של קו ה-MACD עצמו) — נחשב איתות עלייה אפשרי (Bullish Crossover). חצייה מתחת נחשבת איתות ירידה אפשרי (Bearish Crossover). ה-Histogram (ההפרש בין שני הקווים) מציג את עוצמת המומנטום — היסטוגרמה שגדלה מעידה על מומנטום מתחזק.

RSI מול MACD — מה כל אחד תופס

| | RSI | MACD | |---|---|---| | מה נמדד | קצב ועוצמת תנועה (Oscillator) | קשר בין שני ממוצעים נעים (Trend + Momentum) | | טווח ערכים | 0-100, קבוע | ללא גבול עליון/תחתון קבוע | | מתאים במיוחד ל | זיהוי מצבי קיצון (Overbought/Oversold) | זיהוי שינויי כיוון מגמה | | מגבלה עיקרית | יכול להישאר בקיצון זמן רב בטרנד חזק | תגובה מאוחרת יחסית (Lagging Indicator) |

למה משלבים בין השניים

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

buy_signal = (
    (df["rsi"].shift(1) < 35) &
    (df["macd"].shift(1) > df["macd_signal"].shift(1))  # MACD תומך בכיוון עולה
)

שאלות נפוצות

איזה אינדיקטור עדיף, RSI או MACD?

אין "עדיף" מוחלט — הם מודדים דברים שונים. RSI מתאים יותר לאסטרטגיות Mean Reversion (זיהוי קיצוני מחיר), ו-MACD מתאים יותר לאסטרטגיות Momentum (זיהוי כיוון מגמה). רבים משלבים ביניהם.

מה תקופת ה-RSI הנפוצה ביותר?

14 ימים היא ברירת המחדל ההיסטורית והנפוצה ביותר, אך תקופות קצרות יותר (7-9) נותנות איתותים תכופים יותר עם רעש רב יותר, ותקופות ארוכות יותר (21+) נותנות איתותים יציבים יותר אך פחות תכופים.

האם RSI ו-MACD מספיקים לבד לאסטרטגיה שלמה?

לרוב לא מספיקים לבד — הם כלים לזיהוי איתותים, לא אסטרטגיה מלאה. אסטרטגיה שלמה דורשת גם כללי Position Sizing, Stop Loss ו-Take Profit ברורים, ולא רק תנאי כניסה מבוסס אינדיקטור.

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

לא הכרחי — ספריות כמו pandas-ta מספקות פונקציות מוכנות לחישוב RSI, MACD ועשרות אינדיקטורים נוספים. הדוגמאות כאן מיועדות להבנת המנגנון, לא כהמלצה לממש הכל ידנית תמיד.

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

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

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