Анализ финансовых данных с помощью Python (SMA и MACD)

7-12-2024 16:17

Обучающая статья: Анализ финансовых данных с помощью Python (SMA и MACD) В этой статье мы разберем, как использовать P ...

Обучающая статья: Анализ финансовых данных с помощью Python (SMA и MACD)
В этой статье мы разберем, как использовать Python для анализа финансовых данных. Мы построим графики цен, добавим простые скользящие средние (SMA) и индикатор MACD (Moving Average Convergence Divergence). Все шаги будут описаны подробно, чтобы даже новички могли понять, как это работает.
В этой статье мы разберем, как использовать Python для ана ...
1. Установка библиотек
Для выполнения анализа вам понадобятся следующие библиотеки:
  • matplotlib — для построения графиков.
  • pandas — для работы с табличными данными.
  • numpy — для математических операций.
Установите их с помощью команды:
  1. pip install matplotlib pandas numpy
Скопировать код
2. Генерация данных
Для начала создадим тестовые данные, которые будут имитировать рынок с восходящим трендом. В реальных задачах вы будете использовать данные из источников, таких как API бирж или CSV-файлы.
  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. import numpy as np

  4. # Генерация данных для имитации трендового рынка
  5. np.random.seed(42)  # Фиксация случайности для воспроизводимости
  6. dates = pd.date_range(start="2024-01-01", periods=100)  # Даты
  7. prices = np.cumsum(np.random.normal(loc=0.5, scale=1.0, size=100)) + 100  # Рост цен

  8. # Создание DataFrame
  9. data = pd.DataFrame({
  10.     'Date': dates,
  11.     'Price': prices
  12. })
Скопировать код
Здесь:
  • pd.date_range создаёт диапазон дат.
  • np.cumsum суммирует случайные значения, чтобы создать эффект тренда.


3. Вычисление индикаторовПростые скользящие средние (SMA) и MACD — это популярные инструменты технического анализа.
Скользящие средние (SMA)Скользящие средние показывают усреднённое значение цены за определённый период:
  1. # Простые скользящие средние
  2. data['SMA_20'] = data['Price'].rolling(window=20).mean()  # SMA за 20 дней
  3. data['SMA_50'] = data['Price'].rolling(window=50).mean()  # SMA за 50 дней
Скопировать код
MACDИндикатор MACD показывает разницу между двумя экспоненциальными скользящими средними (EMA):
  1. # Вычисление MACD
  2. dema_12 = data['Price'].ewm(span=12, adjust=False).mean()
  3. dema_26 = data['Price'].ewm(span=26, adjust=False).mean()
  4. data['MACD'] = ema_12 - ema_26  # Разница между EMA (MACD линия)
  5. data['Signal_Line'] = data['MACD'].ewm(span=9, adjust=False).mean()  # Сигнальная линия
Скопировать код
Здесь:
  • ewm — экспоненциальное скользящее среднее.
  • MACD рассчитывается как разница между EMA с периодами 12 и 26.
  • Сигнальная линия — EMA от MACD с периодом 9.





4. Построение графиковТеперь визуализируем наши данные, включая скользящие средние и MACD.
График цен и SMA
  1. plt.figure(figsize=(12, 8))

  2. # График цен с SMA
  3. plt.subplot(2, 1, 1)
  4. plt.plot(data['Date'], data['Price'], label='Price', color='blue', linewidth=2)
  5. plt.plot(data['Date'], data['SMA_20'], label='20-Day SMA', color='orange', linestyle='--')
  6. plt.plot(data['Date'], data['SMA_50'], label='50-Day SMA', color='green', linestyle='--')
  7. plt.title("Price with Moving Averages (Trend Indicators)")
  8. plt.xlabel("Date")
  9. plt.ylabel("Price")
  10. plt.legend(loc='upper left')
  11. plt.grid()
Скопировать код
График MACD
  1. # График MACD
  2. plt.subplot(2, 1, 2)
  3. plt.plot(data['Date'], data['MACD'], label='MACD', color='purple', linewidth=1.5)
  4. plt.plot(data['Date'], data['Signal_Line'], label='Signal Line', color='red', linestyle='--')
  5. plt.axhline(0, color='black', linestyle='--', linewidth=0.8)
  6. plt.title("MACD Indicator")
  7. plt.xlabel("Date")
  8. plt.ylabel("Value")
  9. plt.legend(loc='upper left')
  10. plt.grid()

  11. # Отображение графиков
  12. plt.tight_layout()
  13. plt.show()
Скопировать код
5. Интерпретация результатов
  • SMA:

    • Когда короткая SMA (20 дней) пересекает длинную SMA (50 дней) снизу вверх, это может быть сигналом покупки.
    • Обратное пересечение может быть сигналом продажи.

  • MACD:

    • Когда MACD пересекает сигнальную линию вверх, это бычий сигнал.
    • Когда MACD пересекает сигнальную линию вниз, это медвежий сигнал.
    • Линия 0 служит базовым уровнем для анализа.





6. ЗаключениеТеперь вы знаете, как:
  • Создать данные и визуализировать их.
  • Рассчитать SMA и MACD.
  • Построить графики для анализа.

Этот простой проект можно расширить, добавив другие индикаторы, такие как RSI или Bollinger Bands. Если у вас есть вопросы или предложения, оставьте комментарий на нашем форуме!
И помните: программирование — это весело, особенно когда оно помогает заработать! 😉

Скачать исходный код: SmaMacdAnalysis.py





Понравилось

Отлично

Восхитительно

Неинтересно

Ужасно
Понравилось Прочитано14 Коментариев0
Рекомендуем
Популярное
ТOP 10
Новые публикации
Вместе к успеху!
Горячая линия

С понедельника по воскресенье
с 10:00 до 23:00

Обратная связь

hotline@crypto-union.ru/ Онлайн Телеграмм: @crypto_unio

QR-код

Powered by Discuz! X3.5© 2001-2023 Крипто Союз