اندیکاتور MACD (همگرایی و واگرایی میانگین متحرک)

MACD با مقایسه‌ی دو میانگین متحرک نمایی، جهت و شتاب روند را نشان می‌دهد و هم ابزار روند است و هم اسیلاتور.

چیست

MACD را جرالد اپل در دهه‌ی ۱۹۷۰ معرفی کرد. این اندیکاتور فاصله‌ی بین یک میانگین متحرک نمایی سریع و یک میانگین کند را می‌سنجد. وقتی میانگین سریع از کند فاصله می‌گیرد، روند در حال قوی شدن است و وقتی به آن نزدیک می‌شود، شتاب کم شده است.

چطور محاسبه می‌شود

  1. خط MACD = میانگین نمایی ۱۲ کندل − میانگین نمایی ۲۶ کندل
  2. خط سیگنال = میانگین نمایی ۹ کندلی خط MACD
  3. هیستوگرام = خط MACD − خط سیگنال

تریدرها چطور آن را می‌خوانند

  • عبور خط MACD از خط سیگنال به بالا، نشانه‌ی صعودی و به پایین، نشانه‌ی نزولی است.
  • بالا یا پایین صفر بودن خط MACD جهت کلی روند را نشان می‌دهد.
  • کوچک شدن هیستوگرام یعنی شتاب حرکت در حال کم شدن است، حتی قبل از تقاطع خط‌ها.
  • واگرایی بین قیمت و MACD، مثل RSI، هشدار ضعف روند است.

تنظیمات

تنظیمات کلاسیک ۱۲، ۲۶ و ۹ است. برای تایم‌فریم‌های کوتاه، بعضی تریدرها عددهای کوچک‌تر و برای روزانه و هفتگی عددهای بزرگ‌تر را امتحان می‌کنند؛ هر تغییری را با بک‌تست بسنج.

کجا گول می‌زند

  • MACD بر پایه‌ی میانگین متحرک است و ذاتاً با تأخیر سیگنال می‌دهد.
  • در بازار رنج، تقاطع‌های پشت سر هم سیگنال‌های اشتباه زیادی می‌سازند.

کد Pine Script آن در Vlevel

این همان اسکریپتی است که چارت اجرا می‌کند. در پنجره‌ی اندیکاتورهای چارت می‌توانی آن را باز کنی، تغییر دهی و نسخه‌ی خودت را ذخیره کنی.

MACD · Pine Script v6
//@version=6
indicator("MACD", format = format.price, precision = 4)
fastLength   = input.int(12, "Fast Length", minval = 1)
slowLength   = input.int(26, "Slow Length", minval = 1)
src          = input.source(close, "Source")
signalLength = input.int(9, "Signal Smoothing", minval = 1, maxval = 50)
oscKind      = input.string("EMA", "Oscillator MA Type", options = ["SMA", "EMA"])
sigKind      = input.string("EMA", "Signal Line MA Type", options = ["SMA", "EMA"])
fast   = oscKind == "SMA" ? ta.sma(src, fastLength) : ta.ema(src, fastLength)
slow   = oscKind == "SMA" ? ta.sma(src, slowLength) : ta.ema(src, slowLength)
macd   = fast - slow
signal = sigKind == "SMA" ? ta.sma(macd, signalLength) : ta.ema(macd, signalLength)
hist   = macd - signal
plot(hist, "Histogram", style = plot.style_columns, color = hist >= 0 ? (hist[1] < hist ? #26a69a : #b2dfdb) : (hist[1] < hist ? #ffcdd2 : #ff5252))
plot(macd, "MACD", color = #1fb8ff)
plot(signal, "Signal", color = #f5a742)
hline(0, "Zero Line", color = color.new(color.white, 75), linestyle = hline.style_dotted)

اندیکاتورها قیمت‌های گذشته را توصیف می‌کنند و هیچ‌کدام آینده را پیش‌بینی نمی‌کنند. برای آموزش است، نه توصیه‌ی سرمایه‌گذاری.