Скользящие средние как индикаторы тренда

Финансовый трейдинг на Python

Chelsea Yang

Data Science Instructor

Что такое технические индикаторы?

  • Математические расчёты на основе исторических рыночных данных
  • Предполагают эффективность рынка: цена уже отражает всю публичную информацию
  • Помогают трейдерам выявлять закономерности в динамике цен
Финансовый трейдинг на Python

Типы индикаторов

  • Индикаторы тренда: определяют направление и силу тренда
    • Примеры: скользящие средние (MA), индекс среднего направленного движения (ADX)
  • Индикаторы импульса: измеряют скорость изменения цены
    • Пример: индекс относительной силы (RSI)
  • Индикаторы волатильности: измеряют величину отклонений цены
    • Пример: полосы Боллинджера
Финансовый трейдинг на Python

Пакет TA-Lib

TA-Lib: библиотека технического анализа

  • Содержит реализации 150+ технических индикаторов
import talib
Финансовый трейдинг на Python

Индикаторы скользящей средней

  • SMA: простая скользящая средняя
  • EMA: экспоненциальная скользящая средняя

 

  • Характеристики:
    • Следуют за ценой
    • Сглаживают данные, точнее отражая направление цены
Финансовый трейдинг на Python

Простая скользящая средняя (SMA)

$ SMA = (P_1+P_2+...+P_n)/n $

# Calculate two SMAs
stock_data['SMA_short'] = talib.SMA(stock_data['Close'], timeperiod=10)
stock_data['SMA_long'] = talib.SMA(stock_data['Close'], timeperiod=50)

# Print the last five rows print(stock_data.tail())
             Close  SMA_short  SMA_long
Date                                   
2020-11-24 1768.88    1758.77   1594.74
2020-11-25 1771.43    1760.65   1599.75
2020-11-27 1793.19    1764.98   1605.70
2020-11-30 1760.74    1763.35   1611.71
2020-12-01 1798.10    1765.02   1619.05

Финансовый трейдинг на Python

Построение графика SMA

import matplotlib.pyplot as plt

# Plot SMA with the price
plt.plot(stock_data['SMA_short'], 
         label='SMA_short')
plt.plot(stock_data['SMA_long'], 
         label='SMA_long')
plt.plot(stock_data['Close'], 
         label='Close')

# Customize and show the plot
plt.legend()
plt.title('SMAs')
plt.show()

График SMA

Финансовый трейдинг на Python

Экспоненциальная скользящая средняя (EMA)

$EMA_n = P_n \times multiplier + \text{previous EMA} \times (1-multiplier)$

$multiplier = 2 / (n + 1)$

# Calculate two EMAs
stock_data['EMA_short'] = talib.EMA(stock_data['Close'], timeperiod=10)
stock_data['EMA_long'] = talib.EMA(stock_data['Close'], timeperiod=50)
# Print the last five rows
print(stock_data.tail())
             Close  EMA_short  EMA_long
Date                                   
2020-11-24 1768.88    1748.65   1640.98
2020-11-25 1771.43    1752.79   1646.09
2020-11-27 1793.19    1760.13   1651.86
2020-11-30 1760.74    1760.24   1656.13
2020-12-01 1798.10    1767.13   1661.70
Финансовый трейдинг на Python

Построение графика EMA

import matplotlib.pyplot as plt
# Plot EMA with the price
plt.plot(stock_data['EMA_short'], 
         label='EMA_short')
plt.plot(stock_data['EMA_long'], 
         label='EMA_long')
plt.plot(stock_data['Close'], 
         label='Close')

# Customize and show the plot
plt.legend()
plt.title('EMAs')
plt.show()

График EMA

Финансовый трейдинг на Python

SMA и EMA: сравнение

EMA более чувствительна к последним изменениям цены

График сравнения SMA и EMA, рассчитанных с одинаковым окном ретроспективного анализа

Финансовый трейдинг на Python

Давайте потренируемся!

Финансовый трейдинг на Python

Preparing Video For Download...