“Расчет MACD”
Дивергенция скользящей средней (MACD) — популярный технический индикатор, используемый в финансовом анализе для определения потенциальных сигналов покупки и продажи на фондовом рынке. Он состоит из двух линий: линии MACD и сигнальной линии. Расчет MACD включает в себя несколько этапов, включая расчет экспоненциальных скользящих средних (EMA).
Вот несколько методов расчета MACD с использованием примеров кода на Python:
Метод 1: использование библиотек Pandas и NumPy
import pandas as pd
import numpy as np
def calculate_macd(data, n_fast, n_slow, n_signal):
ema_fast = data.ewm(span=n_fast, min_periods=n_fast).mean()
ema_slow = data.ewm(span=n_slow, min_periods=n_slow).mean()
macd_line = ema_fast - ema_slow
signal_line = macd_line.ewm(span=n_signal, min_periods=n_signal).mean()
histogram = macd_line - signal_line
return macd_line, signal_line, histogram
# Example usage
data = pd.Series([10, 12, 15, 14, 13, 16, 18, 17, 19, 20])
n_fast = 12
n_slow = 26
n_signal = 9
macd, signal, histogram = calculate_macd(data, n_fast, n_slow, n_signal)
print(macd)
print(signal)
print(histogram)
Метод 2: использование NumPy
import numpy as np
def calculate_macd(data, n_fast, n_slow, n_signal):
ema_fast = np.convolve(data, np.ones((n_fast,))/n_fast, mode='valid')
ema_slow = np.convolve(data, np.ones((n_slow,))/n_slow, mode='valid')
macd_line = ema_fast - ema_slow
signal_line = np.convolve(macd_line, np.ones((n_signal,))/n_signal, mode='valid')
histogram = macd_line - signal_line
return macd_line, signal_line, histogram
# Example usage
data = np.array([10, 12, 15, 14, 13, 16, 18, 17, 19, 20])
n_fast = 12
n_slow = 26
n_signal = 9
macd, signal, histogram = calculate_macd(data, n_fast, n_slow, n_signal)
print(macd)
print(signal)
print(histogram)
Метод 3. Использование библиотеки Talib (требуется установка)
import talib
def calculate_macd(data, n_fast, n_slow, n_signal):
macd_line, signal_line, _ = talib.MACD(data, fastperiod=n_fast, slowperiod=n_slow, signalperiod=n_signal)
histogram = macd_line - signal_line
return macd_line, signal_line, histogram
# Example usage
data = [10, 12, 15, 14, 13, 16, 18, 17, 19, 20]
n_fast = 12
n_slow = 26
n_signal = 9
macd, signal, histogram = calculate_macd(data, n_fast, n_slow, n_signal)
print(macd)
print(signal)
print(histogram)