Implementação do MACD em Python

Autora:Bem-estar, Criado: 2019-04-08 10:56:11, Atualizado:

O MACD é um indicador técnico popularmente usado na negociação de ações, moedas, criptomoedas, etc.

Fundamentos do MACD

O MACD é usado e discutido em muitos círculos de negociação diferentes. A Divergência de Convergência da Média Móvel (MACD) é um indicador de tendência. O MACD pode ser calculado muito simplesmente subtraindo a EMA de 26 períodos da EMA de 12 períodos.

Estratégias úteis

O MACD é comumente usado para analisar cruzamentos, divergências e períodos de inclinação íngreme (positiva ou negativa).

Em um crossover de alta, assim como nas médias móveis, um sinal de compra ocorre quando o MACD cruza acima da linha de sinal. Um sinal de baixa ocorre quando o MACD cruza abaixo da linha de sinal. Se um crossover ocorrer com um MACD de alta inclinação, isso pode ser um sinal de uma condição de sobrecompra ou sobrevenda, dependendo se o crossover é de alta ou baixa, respectivamente. O MACD é um ótimo indicador para entender se o movimento no preço é forte ou fraco. Um movimento fraco provavelmente corrigirá e um movimento forte provavelmente continuará.

As divergências também são fáceis de entender. Quando o MACD estabelece um alto ou baixo divergente de altos ou baixos no preço, ele estabelece uma divergência. Uma divergência de alta ocorre quando o MACD tem duas mínimas crescentes no MACD com duas mínimas em queda no preço do ativo. As divergências podem ser usadas para encontrar uma tendência em mudança. Os comerciantes estão sempre procurando a vantagem competitiva e prever uma mudança de tendência pode ser muito lucrativo.

Uma inclinação acentuada pode sinalizar uma situação de sobrecompra ou sobrevenda.

Implementação do Python

Começamos como sempre fazemos, escolhendo uma ação e coletando os dados. Como de costume, faremos nossa análise na AMD e usaremos a API IEX para obter os dados.

import pandas as pd
import numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
import pyEX as p
ticker = 'AMD'
timeframe = '6m'
df = p.chartDF(ticker, timeframe)
df = df[['close']]
df.reset_index(level=0, inplace=True)
df.columns=['ds','y']
plt.plot(df.ds, df.y, label='AMD')
plt.show()

imgAMD desde o final de 2018 até o presente (início de 2019).

exp1 = df.y.ewm(span=12, adjust=False).mean()
exp2 = df.y.ewm(span=26, adjust=False).mean()
macd = exp1-exp2
exp3 = macd.ewm(span=9, adjust=False).mean()
plt.plot(df.ds, macd, label='AMD MACD', color = '#EBD2BE')
plt.plot(df.ds, exp3, label='Signal Line', color='#E5A4CB')
plt.legend(loc='upper left')
plt.show()

Isto permite-nos traçar o MACD contra a linha de sinal.

imgMACD versus linha de sinal Veja o gráfico abaixo. Você estava correto? Lembre-se, um cruzamento de alta acontece quando o MACD cruza acima da linha de sinal e um cruzamento de baixa acontece quando o MACD cruza abaixo da linha de sinal.

imgCrossover de alta representado em verde, crossover de baixa representado em vermelho. O exemplo acima foi uma maneira simples de usar o MACD para estudar crossovers.

Começamos por implementar as médias móveis exponenciais e MACD.

exp1 = df.y.ewm(span=12, adjust=False).mean()
exp2 = df.y.ewm(span=26, adjust=False).mean()
exp3 = df.y.ewm(span=9, adjust=False).mean()
macd = exp1-exp2
plt.plot(df.ds, df.y, label='AMD')
plt.plot(df.ds, macd, label='AMD MACD', color='orange')
plt.plot(df.ds, exp3, label='Signal Line', color='Magenta')
plt.legend(loc='upper left')
plt.show()

imgA linha azul representa o preço das ações da AMD, a linha laranja representa o MACD Podemos aumentar um pouco esta linha do MACD gráficando-a separadamente do preço das ações e ver as inclinações mais claramente.

imgMACD de finais de 2018 até à data atual (início de 2019). Vamos lembrar nossa discussão de sobrecompra e sobrevenda de antes. Podemos ver que o MACD permanece bastante plano ao longo do tempo. Mas há certos momentos em que a curva do MACD é mais íngreme do que outras. Estes são casos de condições de sobrecompra ou sobrevenda. Representamos nossas condições de sobrevenda com círculos verdes e sobrecompra com círculos vermelhos. Você pode ver que logo após o MACD mostrar uma condição de sobrecompra ou sobrevenda, o impulso desacelerou e o preço da ação reagiu de acordo.

imgCírculos verdes correspondem a divergência de alta, vermelho corresponde a divergência de baixa. Nós discutimos brevemente o MACD e o implementamos no Python para examinar seu uso em crossovers e condições de sobrecompra / sobrevenda.


Mais.