Programa para calcular médias móveis em Python, com plotagem de gráfico
Calcular médias móveis em Python
Problema:
“Escreva um programa em Python que receba uma lista de preços de fechamento de uma ação da Bolsa de Valores, durante um período de 30 dias, calcule as médias móveis de 15 dias e plote um gráfico mostrando essas médias ao longo desse período.”
O que é uma média móvel
Média móvel é um método estatístico usado para analisar dados de séries temporais, como preços de ações, dados de vendas ou outras métricas que variam ao longo do tempo. Uma média móvel calcula o valor médio de um conjunto de dados durante um período especificado e, em seguida, desloca a janela de cálculo (intervalo) em uma unidade de tempo e repete o processo.
Os valores resultantes formam um novo conjunto de dados, que geralmente é plotado em um gráfico para revelar tendências ou padrões.
Por exemplo, uma média móvel simples (MMS) do preço de fechamento de uma ação em um período de 15 dias calcularia o preço médio de fechamento dos últimos 15 dias, avançaria um dia e recalcularia a média com base nos 15 dias anteriores, e assim por diante. Isso pode ajudar a suavizar os dados e destacar tendências ao longo do tempo, reduzindo o impacto de flutuações de curto prazo ou ruído nos dados.
Existem diferentes tipos de médias móveis, como médias móveis exponenciais (MME) e médias móveis ponderadas (MMP), que colocam mais ou menos ênfase em pontos de dados recentes, dependendo do método usado. As médias móveis são comumente usadas na análise técnica para identificar tendências, níveis de suporte e resistência e possíveis sinais de compra ou venda de ações.
Vamos escrever um script em Python que permita calcular as médias móveis de um conjunto de preços de fechamento de ações ao longo de 30 dias. Para tal, vamos usar uma lista com 30 valores (que são os preços de fechamento).
Vamos lá!
Código: Médias Móveis em Python
import matplotlib.pyplot as plt def media_movel(dados, janela): media_movel_lista = [] for i in range(len(dados) - janela + 1): media_movel = sum(dados[i:i+window])/janela media_movel_lista.append(media_movel) return media_movel_lista if __name__=="__main__": precos_fechamento = [100, 105, 102, 108, 110, 110, 115, 118, 103, 121, 123, 125, 123, 121,119, 118, 116, 115, 113, 110, 115, 118, 117, 120, 119, 119, 116, 117, 114, 115] janela = 15 media_movel_15 = media_movel(precos_fechamento, janela) # Plotar o gráfico plt.plot(media_movel_15) plt.xlabel('Dias') plt.ylabel('Média Móvel de 15 dias') plt.title('Média Móvel de Preços de Ações') plt.show()
Resultado
Ao rodar o script acima será exibido o seguinte gráfico de linha, com as médias móveis calculadas:
Funcionamento do código
Este código usa a função media_movel para calcular as médias móveis dos preços das ações.
O argumento janela especifica o tamanho da janela da média móvel, que neste caso é definido como 15 dias. A lista precos_fechamento contém as cotações de fechamento da ação do período de 30 dias.
A função retorna uma lista de médias móveis, que é plotada usando a biblioteca matplotlib. O eixo x do gráfico representa os dias e o eixo y representa os valores das médias móveis calculadas.
Variação: lendo os preços de fechamento a partir de um arquivo de texto csv
Uma forma mais prática de usar esse script é ler os preços das ações a partir de um arquivo de texto .csv, de modo que não precisemos escrever esses valores diretamente no código. O script a seguir mostra essa modificação aplicada a nosso exemplo:
Código
import matplotlib.pyplot as plt import csv def media_movel(dados, janela): media_movel_lista = [] for i in range(len(dados) - janela + 1): media_movel = sum(dados[i:i+window])/janela media_movel_lista.append(media_movel) return media_movel_lista if __name__=="__main__": arquivo = 'precos_fechamento.csv' precos_fechamento = [] with open(arquivo, 'r') as arq: reader = csv.reader(arq) for linha in reader: precos_fechamento.append(float(linha[0])) janela = 15 media_movel_15 = media_movel(precos_fechamento, janela) plt.plot(media_movel_15) plt.xlabel('Dias') plt.ylabel('Média Móvel de 15 dias') plt.title('Média Móvel de Preços de Ações') plt.show()
Agora o código lê os preços de fechamento a partir de um arquivo CSV chamado precos_fechamento.csv, usando o módulo csv.
Esse arquivo deve conter um preço de fechamento por linha. O script abre o arquivo, lê seu conteúdo para uma lista e então fecha o arquivo. O restante do código permanece o mesmo de antes, com a função media_movel sendo usada para calcular a média móvel de 15 dias dos preços das ações e os dados resultantes sendo plotados usando a biblioteca matplotlib.
Escreva um comentário