Médias móveis como indicadores de tendência

Negociação Financeira em Python

Chelsea Yang

Data Science Instructor

O que são indicadores técnicos?

  • Cálculos matemáticos baseados em dados históricos de mercado
  • Assumem mercado eficiente e preço incorporando toda informação pública
  • Ajudam a entender padrões de preço passados
Negociação Financeira em Python

Tipos de indicadores

  • Indicadores de tendência: medem a direção ou força de uma tendência
    • Exemplo: Médias móveis (MA), Average Directional Movement Index (ADX)
  • Indicadores de momento: medem a velocidade do movimento do preço
    • Exemplo: Relative Strength Index (RSI)
  • Indicadores de volatilidade: medem a magnitude das variações de preço
    • Exemplo: Bandas de Bollinger
Negociação Financeira em Python

O pacote TA-Lib

TA-Lib : Technical Analysis Library

  • Inclui mais de 150 implementações de indicadores técnicos
import talib
Negociação Financeira em Python

Indicadores de média móvel

  • SMA: Simple Moving Average
  • EMA: Exponential Moving Average

 

  • Características:
    • Acompanham o preço
    • Suavizam os dados para indicar melhor a direção do preço
Negociação Financeira em Python

Média móvel simples (SMA)

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

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

# Imprimir as últimas cinco linhas 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

Negociação Financeira em Python

Plotando a SMA

import matplotlib.pyplot as plt

# Plotar a SMA com o preço
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')

# Personalizar e mostrar o gráfico
plt.legend()
plt.title('SMAs')
plt.show()

Gráfico de SMAs

Negociação Financeira em Python

Média móvel exponencial (EMA)

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

$multiplier = 2 / (n + 1)$

# Calcular duas EMAs
stock_data['EMA_short'] = talib.EMA(stock_data['Close'], timeperiod=10)
stock_data['EMA_long'] = talib.EMA(stock_data['Close'], timeperiod=50)
# Imprimir as últimas cinco linhas
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
Negociação Financeira em Python

Plotando a EMA

import matplotlib.pyplot as plt
# Plotar a EMA com o preço
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')

# Personalizar e mostrar o gráfico
plt.legend()
plt.title('EMAs')
plt.show()

Gráfico de EMA

Negociação Financeira em Python

SMA vs. EMA

A EMA é mais sensível ao movimento de preço mais recente

Um gráfico mostrando SMA vs. EMA calculadas com a mesma janela de lookback

Negociação Financeira em Python

Vamos praticar!

Negociação Financeira em Python

Preparing Video For Download...